Documentation
¶
Index ¶
- Variables
- func CodeOf(err error) (string, bool)
- type Client
- func (c *Client) Bucket() string
- func (c *Client) Encryption(ctx context.Context) (string, error)
- func (c *Client) Head(ctx context.Context, key string) (size int64, err error)
- func (c *Client) ObjectLockConfig(ctx context.Context) (ObjectLock, error)
- func (c *Client) Put(ctx context.Context, key string, f *os.File, size int64) (sha256hex string, err error)
- func (c *Client) SignForTest(req *http.Request, payloadHash string)
- func (c *Client) Versioning(ctx context.Context) (string, error)
- type CodeError
- type Config
- type Credentials
- type ObjectLock
Constants ¶
This section is empty.
Variables ¶
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 ¶
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client, yapılandırılmış bir nesne deposu istemcisi.
func New ¶
* 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 ¶
Bucket, yapılandırılmış kova adı — arşivleyici bunu denetim kaydına yazıyor.
func (*Client) Encryption ¶
Encryption, kovanın varsayılan sunucu tarafı şifrelemesi. Boş dize = varsayılan tanımlı değil.
func (*Client) Head ¶
* 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 ¶
* 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.
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 ¶
Credentials, imzalama için gereken kimlik.