objstore

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2026 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrTransient: geçici; yeniden denenmeli (ağ, zaman aşımı, 5xx, 429).
	ErrTransient = errors.New("objstore: temporary failure")

	// ErrPermanent: yapılandırma ya da yetki hatası; yeniden denemek
	// aynı sonucu verir ve operatörün müdahalesi gerekir.
	//
	// ⚠️ AYRIM ÖNEMLİ: ikisini birleştirmek ya yanlış kimlikle sonsuza
	// dek denemek (gürültü) ya da geçici bir kesintide pes etmek
	// (kanıt kaybı) demekti.
	ErrPermanent = errors.New("objstore: permanent failure")

	// ErrTooLarge: tek PUT'un sınırını aşan nesne.
	ErrTooLarge = errors.New("objstore: object exceeds the single-PUT limit")
)

Yükleme hataları.

Functions

func CodeOf

func CodeOf(err error) (string, bool)

CodeOf, hatadan S3 kodunu çıkarır ("NoSuchBucket", "AccessDenied"...).

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client, yapılandırılmış bir nesne deposu istemcisi.

func New

func New(cfg Config) (*Client, error)

* New, istemciyi kurar ve YAPILANDIRMAYI BAŞLANGIÇTA doğrular. * * ⚠️ Hatalar burada veriliyor, ilk yüklemede değil: yanlış yazılmış bir * uç adresi, kurulumdan saatler sonra "yükleme başarısız" satırları * olarak görünseydi, operatör sebebi aramak zorunda kalırdı.

func (*Client) Bucket

func (c *Client) Bucket() string

Bucket, yapılandırılmış kova adı — arşivleyici bunu denetim kaydına yazıyor.

func (*Client) Encryption

func (c *Client) Encryption(ctx context.Context) (string, error)

Encryption, kovanın varsayılan sunucu tarafı şifrelemesi. Boş dize = varsayılan tanımlı değil.

func (*Client) Head

func (c *Client) Head(ctx context.Context, key string) (size int64, err error)

* Head, nesnenin orada olduğunu ve boyutunun beklenen olduğunu doğrular. * * ⚠️ PUT'un 200 dönmesi yetmiyor. "yüklendi" damgasını vurup budayıcıya * silme izni vermeden önce, deponun nesneyi GERÇEKTEN tuttuğunu ondan * duymak istiyoruz — bizim istemcimizin başarı dediği şeyden bağımsız * bir teyit. Sıra: yükle → doğrula → damgala → silmeye izin ver.

func (*Client) ObjectLockConfig

func (c *Client) ObjectLockConfig(ctx context.Context) (ObjectLock, error)

* ObjectLockConfig, kilidi okur. * * ⚠️ "Kilit açık ama varsayılan saklama yok" AYRI BİR DURUM ve rapor * onu ayrı gösteriyor: o hâlde her nesnenin kendi saklama süresini * istekle belirtmesi gerekir — ve postern bilerek belirtmiyor, çünkü * kimliği ele geçiren onu sıfır da yapabilirdi. Yani kilit var ama * hiçbir şeyi korumuyor.

func (*Client) Put

func (c *Client) Put(ctx context.Context, key string, f *os.File, size int64) (sha256hex string, err error)

Put, dosyayı verilen anahtara yazar ve orada olduğunu DOĞRULAR.

Dönen sha256, gönderilen içeriğin özeti: çağıran bunu denetim kaydına yazıyor.

func (*Client) SignForTest

func (c *Client) SignForTest(req *http.Request, payloadHash string)

* SignForTest, testin isteği bizim imzamızla imzalamasına izin verir. * * ⚠️ YALNIZCA TESTLER İÇİN ve gerekçesi bağımsız tanık: arşivlenmiş * bir nesnenin varlığını postern'in KENDİ Put/Head'iyle doğrulamak, * "depoda duruyor" ile "istemcimiz duruyor sanıyor"u ayırt edemezdi. * Test düz bir http.Client kuruyor ve yalnızca imzayı buradan alıyor.

func (*Client) Versioning

func (c *Client) Versioning(ctx context.Context) (string, error)

Versioning, kovanın sürümleme durumu.

Boş dize = hiç açılmamış. S3 bu durumda 200 ve BOŞ bir belge döndürüyor; "kapalı" ile "okuyamadım" bu yüzden karışmıyor.

type CodeError

type CodeError struct {
	Code   string
	Status int
	Err    error
}

CodeError, S3'ün <Code> alanını taşıyan hata.

func (*CodeError) Error

func (e *CodeError) Error() string

func (*CodeError) Unwrap

func (e *CodeError) Unwrap() error

type Config

type Config struct {
	// Endpoint, deponun kök adresi ("https://s3.eu-central-1.amazonaws.com"
	// ya da "https://minio.ic:9000").
	Endpoint string
	Region   string
	Bucket   string

	// CAFile, şirket içi bir depo kendi kökünü kullanıyorsa.
	CAFile string

	Credentials Credentials

	// Timeout, tek bir isteğin üst sınırı.
	Timeout time.Duration

	/*
	 * ServerSideEncryption, x-amz-server-side-encryption başlığının
	 * değeri ("AES256", "aws:kms"). BOŞ = başlık gönderilmiyor.
	 *
	 * ⚠️ VARSAYILAN BOŞ ve bu ÖLÇÜLDÜKTEN SONRA böyle. İlk hâli
	 * koşulsuz "AES256" gönderiyordu; KMS yapılandırılmamış bir MinIO
	 * buna 501 NotImplemented ile cevap veriyor ("Server side
	 * encryption specified but KMS is not configured"). Yani şirket
	 * içi kurulumların çoğunda hiçbir kayıt yüklenemezdi ve sebebi
	 * postern'in istemediği bir şeyi ısrarla istemesi olurdu.
	 *
	 * İstemenin faydası da sınırlı: bastion'ı ele geçiren yükleme
	 * kimliğini de ele geçiriyor, yani sunucu tarafı şifreleme O
	 * saldırgana karşı hiçbir şey yapmıyor. Kapattığı şey deponun
	 * diskine başka bir yoldan erişen biri — ve AWS S3'te kovalar
	 * 2023'ten beri zaten varsayılan olarak şifreli.
	 *
	 * Doğru yer kovanın kendi ayarı; postern istemiyor, isteyen
	 * operatör buraya yazıyor.
	 */
	ServerSideEncryption string
}

Config, istemcinin hedefi.

type Credentials

type Credentials struct {
	AccessKeyID     string
	SecretAccessKey string
}

Credentials, imzalama için gereken kimlik.

type ObjectLock

type ObjectLock struct {
	Enabled bool
	// Mode: "GOVERNANCE" ya da "COMPLIANCE". Boş = varsayılan saklama
	// tanımlı değil, yani kilit açık ama SÜRE YOK.
	Mode  string
	Days  int
	Years int
}

ObjectLock, kovanın Object Lock yapılandırması.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL