Hafiz S3 API Uyumluluk Matrisi
Bu dokuman, Hafiz nesne depolama sisteminin Amazon S3 API'si ile uyumluluk durumunu detayli olarak belgelemektedir.
Son Guncelleme: 2026-02-09
1. Genel Bakis
Hafiz, Rust dilinde yazilmis kurumsal duzeyde bir S3 uyumlu nesne depolama sistemidir. Asagidaki temel ozellikleri destekler:
- Tam S3 API uyumlulugu: Bucket ve nesne operasyonlari, multipart upload, versiyonlama
- Metadata altyapisi: SQLite (varsayilan, tek dugum) ve PostgreSQL (kumeleme icin onerilen)
- Depolama motoru: Yerel dosya sistemi tabanli depolama
- Kimlik dogrulama: AWS Signature V4, LDAP/Active Directory entegrasyonu, presigned URL'ler
- Sifreleme: Sunucu tarafli sifreleme (SSE-S3, SSE-C) - AES-256-GCM
- Versiyonlama: Tam nesne versiyonlama ve silme isaretcileri (delete marker) destegi
- Object Lock: WORM (Write Once Read Many) uyumlulugu, retention ve legal hold
- Yasam dongusu yonetimi: Lifecycle kurallari ile otomatik nesne yonetimi
- Kumeleme: Cok dugumlu replikasyon ve dugum kesfetme (opsiyonel)
- Etiketleme: Bucket ve nesne duzeyinde etiketleme (tagging)
- CORS: Cross-Origin Resource Sharing yapilandirmasi
- Bildirim: Webhook, Queue ve Topic tabanli olay bildirimleri
- Erisim kontrolu: Bucket policy (JSON), ACL (XML), canned ACL destegi
Durum Aciklamalari
| Durum |
Anlami |
| Uygulanmis |
Tam olarak uygulanmis ve uretimde kullanilabilir |
| Kismi |
Temel islevsellik mevcut ancak bazi alt ozellikler eksik |
| Planlanmis |
Henuz uygulanmamis, gelecek surumler icin planlanmis |
| Uygulanmayacak |
Hafiz mimarisine uygun olmadigi icin uygulanmasi planlanmiyor |
2. Bucket (Kova) Operasyonlari
| API Adi |
Durum |
Notlar |
CreateBucket (PUT /) |
Uygulanmis |
Bucket adi dogrulama, metadata + depolama dizini olusturma. Bucket adi kurallari AWS S3 ile uyumlu. |
DeleteBucket (DELETE /) |
Uygulanmis |
Bosaltilmis bucket silme. Metadata ve depolama dizini birlikte temizlenir. |
HeadBucket (HEAD /) |
Uygulanmis |
Bucket varlik kontrolu. 200 OK veya 404 NoSuchBucket donduruyor. |
ListBuckets (GET /) |
Uygulanmis |
Sahibe gore bucket listeleme. XML yaniti S3 formatiyla uyumlu. |
GetBucketLocation |
Planlanmis |
Bolge bilgisi dondurmesi henuz eklenmedi. |
ListObjectsV1 (GET /?prefix=&marker=) |
Uygulanmis |
Prefix, delimiter, max-keys, marker parametreleri destekleniyor. |
ListObjectsV2 (GET /?list-type=2) |
Uygulanmis |
continuation-token, prefix, delimiter, max-keys parametreleri destekleniyor. list-type=2 sorgu parametresi ile etkinlesir. |
3. Nesne (Object) Operasyonlari
| API Adi |
Durum |
Notlar |
GetObject (GET /{key}) |
Uygulanmis |
Range istekleri (byte-range), versiyon destegi (versionId), SSE baslik bilgileri, kullanici metadata'si (x-amz-meta-*), delete marker tespiti destekleniyor. |
PutObject (PUT /{key}) |
Uygulanmis |
Content-Type otomatik algulama (mime_guess), SSE-S3 ve SSE-C baslik destegi, kullanici metadata'si, versiyonlama destegi. Kumeleme modunda asenkron replikasyon olay kuyrugu. |
DeleteObject (DELETE /{key}) |
Uygulanmis |
Basit silme ve versiyonlu silme. Versiyonlama aciksa delete marker olusturma, belirli bir versiyonu silme (versionId). Object Lock kontrolu (retention + legal hold). Kumeleme modunda replikasyon destegi. |
DeleteObjects (POST /?delete) |
Uygulanmis |
Toplu silme (multi-object delete). Quiet modu destegi. XML istek/yanit formati S3 uyumlu. |
HeadObject (HEAD /{key}) |
Uygulanmis |
Content-Type, Content-Length, ETag, Last-Modified baslik bilgileri donduruluyor. Kullanici metadata'si (x-amz-meta-*) yanit basliklarinda destekleniyor. |
CopyObject (PUT /{key} + x-amz-copy-source) |
Uygulanmis |
Farkli bucket'lar arasi kopyalama, x-amz-metadata-directive (COPY/REPLACE) destegi, URL decode edilmis kaynak anahtar, hedef bucket varlik dogrulama. |
GetObjectVersion (GET /{key}?versionId=) |
Uygulanmis |
Belirli bir nesne versiyonunu getirme. Delete marker tespiti, Range destegi, SSE baslik bilgileri. |
DeleteObjectVersion (DELETE /{key}?versionId=) |
Uygulanmis |
Belirli bir versiyonu silme. Object Lock kontrolu entegrasyonu. |
PostObject (POST /) |
Planlanmis |
Form tabanli yukleme henuz uygulanmadi. |
SelectObjectContent (POST /{key}?select&select-type=2) |
Uygulanmis |
SQL tabanli nesne icerigi sorgulama. CSV (header, delimiter, quote), JSON (DOCUMENT, LINES) girdi destegi. SELECT/WHERE/LIMIT SQL alt kumesi. zstd sikistirilmis nesnelerde seffaf calisir. |
RestoreObject |
Uygulanmayacak |
Glacier-tarz arsiv depolama sinifi desteklenmiyor. |
4. Multipart Upload (Coklu Parca Yukleme) Operasyonlari
| API Adi |
Durum |
Notlar |
CreateMultipartUpload (POST /{key}?uploads) |
Uygulanmis |
Benzersiz upload ID olusturma, content-type ve kullanici metadata'si destegi. |
UploadPart (PUT /{key}?uploadId=&partNumber=) |
Uygulanmis |
Parca numarasi dogrulama (1-10000), parca verisi depolama, ETag hesaplama. Parca depolama formati: {key}/.parts/{uploadId}/{partNumber}. |
CompleteMultipartUpload (POST /{key}?uploadId=) |
Uygulanmis |
Parca birlesimi, nihai ETag hesaplama (MD5 birlestirme formati), parca temizligi, nesne metadata olusturma. Kumeleme modunda asenkron replikasyon olay kuyrugu. |
AbortMultipartUpload (DELETE /{key}?uploadId=) |
Uygulanmis |
Yukleme iptali, parca verilerinin temizlenmesi, upload kaydinin silinmesi. |
ListParts (GET /{key}?uploadId=) |
Uygulanmis |
Parca listeleme, max-parts ve part-number-marker ile sayfalama destegi. |
ListMultipartUploads (GET /?uploads) |
Uygulanmis |
Devam eden yuklemeleri listeleme. Prefix, key-marker, upload-id-marker, max-uploads parametreleri destekleniyor. |
UploadPartCopy |
Planlanmis |
Kopyalama ile parca yukleme henuz uygulanmadi. |
5. Versiyonlama (Versioning) Operasyonlari
| API Adi |
Durum |
Notlar |
GetBucketVersioning (GET /?versioning) |
Uygulanmis |
Bucket versiyonlama durumunu sorgulama (Enabled/Suspended/bos). |
PutBucketVersioning (PUT /?versioning) |
Uygulanmis |
Versiyonlama etkinlestirme/askiya alma. Object Lock etkinken versiyonlamanin devre disi birakilmasi engellenir. XML istek govdesi dogrulama. |
ListObjectVersions (GET /?versions) |
Uygulanmis |
Nesne versiyonlarini ve delete marker'lari listeleme. Prefix, delimiter, max-keys, key-marker, version-id-marker parametreleri destekleniyor. |
CreateDeleteMarker |
Uygulanmis |
Versiyonlu bucket'ta silme islemi otomatik olarak delete marker olusturur. |
MFA Delete |
Planlanmis |
MFA ile korunmus versiyonlama henuz uygulanmadi. |
6. Yasam Dongusu (Lifecycle) Operasyonlari
| API Adi |
Durum |
Notlar |
GetBucketLifecycleConfiguration (GET /?lifecycle) |
Uygulanmis |
Lifecycle kural yapilandirmasini sorgulama. XML yaniti S3 uyumlu. |
PutBucketLifecycleConfiguration (PUT /?lifecycle) |
Uygulanmis |
Lifecycle kurallari tanimlama. Kural dogrulama, XML ayristirma. |
DeleteBucketLifecycle (DELETE /?lifecycle) |
Uygulanmis |
Lifecycle yapilandirmasini silme. |
| Lifecycle Kurallari - Expiration |
Uygulanmis |
Nesne suresi dolma kurali. get_objects_for_lifecycle ve get_buckets_with_lifecycle ile otomatik isleme. |
| Lifecycle Kurallari - NoncurrentVersionExpiration |
Uygulanmis |
Gecersiz versiyonlarin suresi dolma kurali. |
| Lifecycle Kurallari - Transition |
Planlanmis |
Depolama sinifi gecisi henuz desteklenmiyor (tek depolama sinifi: STANDARD). |
| Lifecycle Kurallari - AbortIncompleteMultipartUpload |
Planlanmis |
Tamamlanmamis multipart upload temizligi henuz otomatik degil. |
7. Etiketleme (Tagging) Operasyonlari
Bucket Etiketleme
| API Adi |
Durum |
Notlar |
GetBucketTagging (GET /?tagging) |
Uygulanmis |
Bucket etiketlerini sorgulama. TagSet XML formati. |
PutBucketTagging (PUT /?tagging) |
Uygulanmis |
Bucket etiketlerini ayarlama. XML ayristirma ve dogrulama. |
DeleteBucketTagging (DELETE /?tagging) |
Uygulanmis |
Bucket etiketlerini silme. |
Nesne Etiketleme
| API Adi |
Durum |
Notlar |
GetObjectTagging (GET /{key}?tagging) |
Uygulanmis |
Nesne etiketlerini sorgulama. Versiyon destegi (versionId). |
PutObjectTagging (PUT /{key}?tagging) |
Uygulanmis |
Nesne etiketlerini ayarlama. Versiyon destegi. XML ayristirma. |
DeleteObjectTagging (DELETE /{key}?tagging) |
Uygulanmis |
Nesne etiketlerini silme. Versiyon destegi. |
8. CORS (Cross-Origin Resource Sharing) Operasyonlari
| API Adi |
Durum |
Notlar |
GetBucketCors (GET /?cors) |
Uygulanmis |
CORS yapilandirmasini sorgulama. Yapilandirma yoksa NoSuchCORSConfiguration hatasi. |
PutBucketCors (PUT /?cors) |
Uygulanmis |
CORS kurallarini ayarlama. XML ayristirma, dogrulama (CorsConfiguration), temiz XML'e serializasyon. AllowedOrigin, AllowedMethod, AllowedHeader, ExposeHeader, MaxAgeSeconds destegi. |
DeleteBucketCors (DELETE /?cors) |
Uygulanmis |
CORS yapilandirmasini silme. |
OPTIONS Preflight (OPTIONS /{bucket}/{key}) |
Uygulanmis |
Preflight isteklerini isleme. Origin, Access-Control-Request-Method, Access-Control-Request-Headers basliklarini kontrol etme. Eslesen CORS kurali bulma, izin verilen/reddedilen yanit basliklarini ayarlama. |
| CORS Yanit Basliklarini Ekleme |
Uygulanmis |
Gercek (preflight olmayan) isteklere CORS basliklarini ekleme. add_cors_headers_to_response middleware fonksiyonu. |
| Wildcard Origin Eslestirme |
Uygulanmis |
* wildcard origin destegi. |
9. ACL (Access Control List) Operasyonlari
Bucket ACL
| API Adi |
Durum |
Notlar |
GetBucketAcl (GET /?acl) |
Uygulanmis |
Bucket ACL'ini sorgulama. Yapilandirma yoksa varsayilan private ACL dondurulur. |
PutBucketAcl (PUT /?acl) |
Uygulanmis |
Uc farkli yontemle ACL ayarlama destegi: (1) x-amz-acl basligi ile canned ACL, (2) XML govde ile tam ACL belgesi, (3) x-amz-grant-* basliklarla grant tabanli ACL. |
Nesne ACL
| API Adi |
Durum |
Notlar |
GetObjectAcl (GET /{key}?acl) |
Uygulanmis |
Nesne ACL'ini sorgulama. Versiyon destegi. Yapilandirma yoksa varsayilan private ACL dondurulur. |
PutObjectAcl (PUT /{key}?acl) |
Uygulanmis |
Bucket ACL ile ayni uc yontem destekleniyor. Versiyon destegi. |
Desteklenen Canned ACL Degerleri
| Canned ACL |
Durum |
private |
Uygulanmis |
public-read |
Uygulanmis |
public-read-write |
Uygulanmis |
authenticated-read |
Uygulanmis |
bucket-owner-read |
Uygulanmis |
bucket-owner-full-control |
Uygulanmis |
Desteklenen Grant Basliklarri
| Baslik |
Durum |
x-amz-grant-read |
Uygulanmis |
x-amz-grant-write |
Uygulanmis |
x-amz-grant-read-acp |
Uygulanmis |
x-amz-grant-write-acp |
Uygulanmis |
x-amz-grant-full-control |
Uygulanmis |
10. Bucket Policy Operasyonlari
| API Adi |
Durum |
Notlar |
GetBucketPolicy (GET /?policy) |
Uygulanmis |
Bucket politikasini JSON olarak sorgulama. Politika yoksa NoSuchBucketPolicy hatasi. |
PutBucketPolicy (PUT /?policy) |
Uygulanmis |
JSON policy belgesi dogrulama (PolicyDocument yapisina uygunluk), en az bir statement zorunlulugu. Metadata'da JSON olarak saklanir. |
DeleteBucketPolicy (DELETE /?policy) |
Uygulanmis |
Bucket politikasini silme. |
GetBucketPolicyStatus |
Planlanmis |
Politika durumu sorgulama henuz uygulanmadi. |
11. Object Lock / Retention / Legal Hold Operasyonlari
| API Adi |
Durum |
Notlar |
GetObjectLockConfiguration (GET /?object-lock) |
Uygulanmis |
Object Lock yapilandirmasini sorgulama. Yapilandirma yoksa ObjectLockConfigurationNotFoundError. |
PutObjectLockConfiguration (PUT /?object-lock) |
Uygulanmis |
Object Lock etkinlestirme. XML ayristirma ve dogrulama. Etkinlestirildikten sonra guncelleme destegi (varsayilan retention degisikligi). |
GetObjectRetention (GET /{key}?retention) |
Uygulanmis |
Nesne retention yapilandirmasini sorgulama. Versiyon destegi. Object Lock etkin kontrolu zorunlu. |
PutObjectRetention (PUT /{key}?retention) |
Uygulanmis |
Nesne retention ayarlama. x-amz-bypass-governance-retention basligi ile Governance modu atlama. Mevcut retention kontrolu (degistirilip degistirilemeyecegi). |
GetObjectLegalHold (GET /{key}?legal-hold) |
Uygulanmis |
Legal hold durumunu sorgulama. Legal hold yoksa OFF durumu dondurulur. Versiyon destegi. |
PutObjectLegalHold (PUT /{key}?legal-hold) |
Uygulanmis |
Legal hold etkinlestirme/devre disi birakma (ON/OFF). XML ayristirma. Versiyon destegi. |
Object Lock Koruma Kontrolleri
| Ozellik |
Durum |
Notlar |
| Silme oncesi Object Lock kontrolu |
Uygulanmis |
can_delete_object fonksiyonu legal hold ve retention kontrolu yapar. |
| Governance modu atlama |
Uygulanmis |
x-amz-bypass-governance-retention: true basligi ile destekleniyor. |
| Compliance modu |
Uygulanmis |
Compliance modundaki nesneler suresi dolmadan degistirilemez. |
| Varsayilan retention kurali |
Uygulanmis |
Bucket duzeyli varsayilan retention yapilandirmasi. |
12. Bildirim (Notification) Operasyonlari
| API Adi |
Durum |
Notlar |
GetBucketNotificationConfiguration (GET /?notification) |
Uygulanmis |
Bildirim yapilandirmasini sorgulama. JSON'dan XML'e donusturme. Yapilandirma yoksa bos yapilandirma dondurulur. |
PutBucketNotificationConfiguration (PUT /?notification) |
Uygulanmis |
Bildirim yapilandirmasi ayarlama. XML ayristirma, dogrulama, JSON olarak depolama. |
Desteklenen Bildirim Hedefleri
| Hedef Turu |
Durum |
Notlar |
WebhookConfiguration |
Uygulanmis |
HTTP/HTTPS webhook URL'lerine bildirim. URL dogrulama, filtre kurallari, auth token destegi. Hafiz'e ozel eklenti. |
QueueConfiguration |
Uygulanmis |
ARN tabanli kuyruk bildirimi yapilandirmasi. ARN dogrulama. |
TopicConfiguration |
Uygulanmis |
ARN tabanli konu (topic) bildirimi yapilandirmasi. ARN dogrulama. |
LambdaFunctionConfiguration |
Planlanmis |
Lambda fonksiyon bildirimi henuz desteklenmiyor. |
Desteklenen Olay Turleri
| Olay |
Durum |
s3:ObjectCreated:* |
Uygulanmis |
s3:ObjectCreated:Put |
Uygulanmis |
s3:ObjectCreated:Post |
Uygulanmis |
s3:ObjectCreated:Copy |
Uygulanmis |
s3:ObjectCreated:CompleteMultipartUpload |
Uygulanmis |
s3:ObjectRemoved:* |
Uygulanmis |
s3:ObjectRemoved:Delete |
Uygulanmis |
s3:ObjectRemoved:DeleteMarkerCreated |
Uygulanmis |
s3:ObjectTagging:* |
Uygulanmis |
s3:ObjectTagging:Put |
Uygulanmis |
s3:ObjectTagging:Delete |
Uygulanmis |
s3:ObjectAcl:Put |
Uygulanmis |
s3:ObjectRestore:* |
Planlanmis |
13. Presigned URL'ler
| Ozellik |
Durum |
Notlar |
| Presigned URL olusturma |
Uygulanmis |
generate_presigned_url fonksiyonu. GET ve PUT metodlari destekleniyor. |
| Presigned URL dogrulama |
Uygulanmis |
verify_presigned_url fonksiyonu. Imza hesaplama ve zaman asimi kontrolu. |
| Presigned istek tespiti |
Uygulanmis |
is_presigned_request fonksiyonu. X-Amz-Algorithm ve X-Amz-Signature parametrelerini kontrol eder. |
| Access key cikarma |
Uygulanmis |
extract_access_key_from_presigned fonksiyonu. X-Amz-Credential parametresinden cikarim. |
| GET presigned URL |
Uygulanmis |
Nesne indirme icin presigned URL. |
| PUT presigned URL |
Uygulanmis |
Nesne yukleme icin presigned URL. Content-Type ve Content-MD5 baslik destegi. |
| Suresi dolmus URL kontrolu |
Uygulanmis |
X-Amz-Expires parametresi ile zaman asimi. ExpiredPresignedRequest hatasi. |
| VersionId destegi |
Uygulanmis |
Presigned URL'lerde versiyon belirtme destegi. |
| DELETE presigned URL |
Planlanmis |
Henuz uygulanmadi. |
| Multipart presigned URL |
Planlanmis |
Multipart upload icin presigned URL henuz uygulanmadi. |
14. Sunucu Tarafli Sifreleme (Server-Side Encryption)
SSE-S3 (Sunucu Yonetimli Anahtarlar)
| Ozellik |
Durum |
Notlar |
x-amz-server-side-encryption: AES256 basligi |
Uygulanmis |
PutObject isteginde SSE-S3 etkinlestirme. AES-256-GCM sifreleme altyapisi (hafiz-crypto crate). |
x-amz-server-side-encryption: aws:kms basligi |
Kismi |
Baslik kabul ediliyor, ancak gercek KMS entegrasyonu yok. SSE-S3 olarak isleniyor. |
| SSE yanit basliklarri |
Uygulanmis |
GetObject ve PutObject yanitlarinda x-amz-server-side-encryption basligi. |
| Varsayilan bucket sifreleme |
Planlanmis |
Bucket duzeyi varsayilan sifreleme yapilandirmasi henuz uygulanmadi. |
SSE-C (Musteri Tarafindan Saglanan Anahtarlar)
| Ozellik |
Durum |
Notlar |
x-amz-server-side-encryption-customer-key basligi |
Uygulanmis |
Base64 kodlanmis musteri anahtari. |
x-amz-server-side-encryption-customer-key-md5 basligi |
Uygulanmis |
Anahtar MD5 dogrulama. Yanit basliginda dondurulur. |
x-amz-server-side-encryption-customer-algorithm basligi |
Kismi |
AES256 destekleniyor. |
SSE-KMS (AWS KMS Entegrasyonu)
| Ozellik |
Durum |
Notlar |
x-amz-server-side-encryption: aws:kms |
Planlanmis |
Gercek KMS entegrasyonu planlanmis. Simdilik SSE-S3 olarak isleniyor. |
x-amz-server-side-encryption-aws-kms-key-id |
Planlanmis |
KMS anahtar ID belirtme destegi planlanmis. |
| Bucket Key |
Planlanmis |
S3 Bucket Key optimizasyonu planlanmis. |
15. Kimlik Dogrulama (Authentication)
AWS Signature V4
| Ozellik |
Durum |
Notlar |
| Authorization basligi ayristirma |
Uygulanmis |
AWS4-HMAC-SHA256 Credential=.../date/region/s3/aws4_request, SignedHeaders=..., Signature=... formati. |
| Imza hesaplama ve dogrulama |
Uygulanmis |
Kanonik istek olusturma, string-to-sign hesaplama, HMAC-SHA256 imza dogrulama. verify_signature_v4 fonksiyonu. |
| Credential ayrıstirma |
Uygulanmis |
Access key, tarih, bolge, servis bilgileri cikarilir. |
| Signed headers dogrulama |
Uygulanmis |
Imzalanmis basliklarla kanonik baslik eslestirme. |
| Chunked upload (aws-chunked) |
Planlanmis |
Chunked transfer encoding ile imza destegi henuz uygulanmadi. |
| Unsigned payload |
Uygulanmis |
UNSIGNED-PAYLOAD presigned URL'ler icin destekleniyor. |
LDAP / Active Directory
| Ozellik |
Durum |
Notlar |
| LDAP kimlik dogrulama |
Uygulanmis |
LdapAuthProvider ve LdapClient ile LDAP sunucu baglantisi. |
| Active Directory destegi |
Uygulanmis |
Microsoft AD uyumlulugu. |
| OpenLDAP destegi |
Uygulanmis |
OpenLDAP ve 389 Directory Server destegi. |
| Kullanici kimlikleme |
Uygulanmis |
LDAP bind ile kullanici dogrulama. |
| Grup tabanli politika eslestirme |
Uygulanmis |
LDAP gruplarina gore bucket erisim politikasi. |
| Kullanici onbellekleme |
Uygulanmis |
Kimlik dogrulanmis kullanicilarin onbellege alinmasi. |
| TLS/STARTTLS destegi |
Uygulanmis |
Guvenli LDAP baglantisi. |
| Ozellestirilebilir ozellik eslestirme |
Uygulanmis |
AttributeMappings ile LDAP ozelliklerini Hafiz kullanici alanlarına eslestirme. |
Erisim Anahtari Yonetimi
| Ozellik |
Durum |
Notlar |
| Access Key / Secret Key cifti olusturma |
Uygulanmis |
AWS uyumlu format (AKIA + 16 karakter access key, 40 karakter secret key). |
| Kimlik bilgisi listeleme |
Uygulanmis |
list_credentials API. |
| Kimlik bilgisi guncelleme |
Uygulanmis |
update_credentials API. |
| Kimlik bilgisi silme |
Uygulanmis |
delete_credentials API. |
| Temporary credentials (STS) |
Planlanmis |
Gecici erisim anahtarlari henuz desteklenmiyor. |
16. Ek Ozellikler
Kumeleme (Cluster) Operasyonlari
| Ozellik |
Durum |
Notlar |
| Cok dugumlu replikasyon |
Uygulanmis |
ClusterManager, Replicator ile asenkron nesne replikasyonu. Kural tanimlanmadan tum saglıklı node'lara otomatik replikasyon. |
| Dugum kesfetme |
Uygulanmis |
DiscoveryService ile seed tabanli dugum kesfetme. Cluster HTTP route'lari (/cluster/join, /cluster/heartbeat, /cluster/message, /cluster/ping). |
| Saglik kontrolleri |
Uygulanmis |
Dugumler arasi saglik kontrol mekanizmasi. |
| Replikasyon olay kuyrugu |
Uygulanmis |
PutObject, DeleteObject ve CompleteMultipartUpload islemlerinde otomatik replikasyon olaylari. Dongu onleme (x-hafiz-replication-status: REPLICA). |
| Replikasyon kurallari |
Uygulanmis |
Bucket bazli replikasyon kurali tanimlama. SQLite ve PostgreSQL backend destegi. |
| PostgreSQL cluster tablolari |
Uygulanmis |
cluster_nodes ve replication_rules tablolari PostgreSQL backend'de tam CRUD destegi. |
| Replikasyon auth bypass |
Uygulanmis |
Cluster ici replikasyon istekleri x-hafiz-replication-status: REPLICA basligi ile kimlik dogrulamayi atlar. |
| Metadata replikasyonu |
Uygulanmis |
Paylasimli PostgreSQL icin REPLICA isteklerinde metadata yazimi atlanir (veri zaten ortak DB'de mevcut). Kullanici metadata'si (x-amz-meta-*) korunur. |
v0.3.0 Yeni Ozellikler
| Ozellik |
Durum |
Notlar |
| S3 Select (SQL on Objects) |
Uygulanmis |
CSV ve JSON nesneler uzerinde SQL sorgulama. SELECT/WHERE/LIMIT destegi. |
| Nesne Sikistirma (zstd) |
Uygulanmis |
PUT sirasinda otomatik zstd sikistirma, GET sirasinda seffaf acma. Akilli icerik-tipi atlama. |
| Veri Tekilestirme (Dedup) |
Uygulanmis |
SHA-256 tabanli icerik adreslemeli depolama. Referans sayimi ile paylasimli depolama. |
| Degistirilemez Denetim Logu |
Uygulanmis |
Blockchain tarzi hash zinciri ile denetim gunlugu. Zincir butunluk dogrulama endpoint'i. |
| Gercek Zamanli Degisiklik Akisi (SSE) |
Uygulanmis |
Server-Sent Events ile nesne degisiklik bildirimleri. Global ve bucket bazli kanallar. |
| Gecici Bucket Paylasimi |
Uygulanmis |
Token tabanli halka acik bucket erisimi. Okuma/yazma/listeleme izinleri, suresi dolma, indirme limiti. |
| Nesne Donusum Boru Hatti |
Uygulanmis |
Asenkron goruntu isleme: thumbnail, EXIF temizleme, format donusumu. |
| Erasure Coding (Reed-Solomon) |
Uygulanmis |
Veri parcalari + parite parcalari ile veri koruma. k-of-n shard ile yeniden yapilandirma. |
| PostgreSQL Hata Gunlugu |
Uygulanmis |
9 onceki stub metodun tam uygulamasi. Hata sorgulama, filtreleme, temizleme. |
Diger
| Ozellik |
Durum |
Notlar |
GetBucketEncryption |
Planlanmis |
Bucket varsayilan sifreleme yapilandirmasi. |
PutBucketEncryption |
Planlanmis |
Bucket varsayilan sifreleme ayarlama. |
DeleteBucketEncryption |
Planlanmis |
Bucket sifreleme yapilandirmasini silme. |
GetBucketReplication |
Planlanmis |
S3 uyumlu replikasyon yapilandirmasi. |
PutBucketReplication |
Planlanmis |
S3 uyumlu replikasyon ayarlama. |
DeleteBucketReplication |
Planlanmis |
S3 uyumlu replikasyon silme. |
GetBucketLogging |
Planlanmis |
Erisim gunu tutma yapilandirmasi. |
PutBucketLogging |
Planlanmis |
Erisim gunu ayarlama. |
GetBucketAccelerateConfiguration |
Uygulanmayacak |
Transfer hizlandirma AWS'ye ozgu. |
GetBucketRequestPayment |
Uygulanmayacak |
Istek odeme AWS'ye ozgu. |
GetBucketWebsite |
Planlanmis |
Statik web sitesi barindirma. |
PutBucketWebsite |
Planlanmis |
Statik web sitesi ayarlama. |
DeleteBucketWebsite |
Planlanmis |
Statik web sitesi silme. |
17. Uyumluluk Ozeti
| Kategori |
Uygulanmis |
Kismi |
Planlanmis |
Toplam |
| Bucket Operasyonlari |
5 |
0 |
1 |
6 |
| Nesne Operasyonlari |
9 |
0 |
1 |
10 |
| Multipart Upload |
6 |
0 |
1 |
7 |
| Versiyonlama |
4 |
0 |
1 |
5 |
| Yasam Dongusu |
4 |
0 |
2 |
6 |
| Bucket Etiketleme |
3 |
0 |
0 |
3 |
| Nesne Etiketleme |
3 |
0 |
0 |
3 |
| CORS |
5 |
0 |
0 |
5 |
| Bucket ACL |
2 |
0 |
0 |
2 |
| Nesne ACL |
2 |
0 |
0 |
2 |
| Bucket Policy |
3 |
0 |
1 |
4 |
| Object Lock / Retention / Legal Hold |
8 |
0 |
0 |
8 |
| Bildirim |
5 |
0 |
1 |
6 |
| Presigned URL'ler |
7 |
0 |
2 |
9 |
| SSE-S3 |
2 |
1 |
1 |
4 |
| SSE-C |
2 |
1 |
0 |
3 |
| SSE-KMS |
0 |
0 |
3 |
3 |
| AWS Signature V4 |
5 |
0 |
1 |
6 |
| LDAP / Active Directory |
7 |
0 |
0 |
7 |
| Erisim Anahtari Yonetimi |
4 |
0 |
1 |
5 |
| TOPLAM |
85 |
2 |
16 |
103 |
18. Bilinen Kisitlamalar
- Tek depolama sinifi: Yalnizca STANDARD depolama sinifi desteklenmektedir. Glacier, Intelligent-Tiering gibi siniflar bulunmamaktadir.
- KMS entegrasyonu yok:
aws:kms sifreleme basligi kabul edilmekte ancak gercek bir KMS servisiyle entegrasyon bulunmamaktadir.
- PostgreSQL backend: Cluster dugum operasyonlari ve replikasyon kurallari artik PostgreSQL backend'de tam desteklenmektedir. CORS, ACL, notification, policy, object lock, retention, legal hold islemleri de PostgreSQL'de uygulanmistir.
- Chunked upload imzalama:
aws-chunked content-encoding ile parca parca imza dogrulama henuz desteklenmemektedir.
- STS (Security Token Service): Gecici kimlik bilgileri ve rol tabanli erisim henuz desteklenmemektedir.
- Transfer Acceleration: AWS CloudFront'a ozgu bir ozellik oldugu icin desteklenme plani yoktur.
- Bucket sahipligi kontrolleri:
BucketOwnerEnforced gibi gelismis sahiplik kontrolleri henuz uygulanmamistir.
19. Test ve Dogrulama
Birim Testleri
# Tum birim testleri
cargo test --all
# Belirli bir crate testi
cargo test -p hafiz-s3-api
S3 API Entegrasyon Testleri (52 test)
3 dugumlu kumeleme uzerinde AWS CLI v2 ile test edilmistir. Test scripti: deploy/distributed/tests/run-tests.sh
| Kategori |
Test Sayisi |
Durum |
| Bucket Operasyonlari |
4 |
4/4 PASS |
| Nesne Operasyonlari |
15 |
15/15 PASS |
| Multipart Upload |
8 |
8/8 PASS |
| Versiyonlama |
7 |
7/7 PASS |
| Bucket Etiketleme |
4 |
4/4 PASS |
| Nesne Etiketleme |
4 |
4/4 PASS |
| Lifecycle |
4 |
4/4 PASS |
| CORS |
3 |
3/3 PASS |
| SSE-C Sifreleme |
2 |
2/2 PASS |
| Temizlik ve Silme |
1 |
1/1 PASS |
| Toplam |
52 |
52/52 PASS |
# Test calistirma
cd deploy/distributed/tests
bash run-tests.sh
Replikasyon Testleri (29 test)
3 dugumlu kume uzerinde capraz node dogrulama. Test scripti: deploy/distributed/tests/replication-tests.sh
| Kategori |
Test Sayisi |
Durum |
| Kucuk dosya replikasyonu |
3 |
3/3 PASS |
| 1MB dosya replikasyonu + butunluk |
3 |
3/3 PASS |
| 10MB multipart replikasyonu + butunluk |
3 |
3/3 PASS |
| MD5 capraz node tutarliligi |
1 |
1/1 PASS |
| Uzerine yazma yayilimi |
5 |
5/5 PASS |
| Silme yayilimi |
6 |
6/6 PASS |
| Metadata replikasyonu |
3 |
3/3 PASS |
| Yuk dengeleyici gidis-donus |
4 |
4/4 PASS |
| Toplam |
29 |
29/29 PASS |
# Replikasyon testlerini calistirma
cd deploy/distributed/tests
bash replication-tests.sh
Test Ortami
| Bilesen |
Detay |
| Dugum Sayisi |
3 (10.50.0.61, 10.50.0.62, 10.50.0.63) |
| Metadata Backend |
PostgreSQL (paylasimli, Node1 uzerinde) |
| Yuk Dengeleyici |
HAProxy (source balancing, Node1 uzerinde) |
| Test Araci |
AWS CLI v2 |
| Kimlik Bilgileri |
hafizadmin / HafizSecret2024! |
AWS SDK'lari (boto3, aws-sdk-js, aws-sdk-go, aws-sdk-rust) ile tam uyumluluk saglanmaktadir.