S3 APIs
Intro
Il gateway S3 di Cubbit supporta la maggior parte delle API RESTful di AWS S3 utilizzate dagli SDK di AWS (come aws-sdk-js, aws-sdk-go, ecc.), dall'interfaccia ufficiale a linea di comando di AWS e da tutti i client compatibili con S3.
Ciò implica che i suddetti strumenti possono essere utilizzati con Cubbit semplicemente configurandoli in modo che utilizzino l'endpoint giusto, ovvero https://s3.cubbit.eu. Ad esempio, in questa documentazione si possono trovare istruzioni su come configurare la CLI di AWS.
Le sezioni seguenti descrivono a grandi linee le funzionalità attualmente supportate e la loro aderenza alle specifiche originali di AWS S3. L'ultima sezione fornisce una visione dettagliata dei metodi API supportati.
Gestione bucket
Creare e cancellare nuovi bucket è supportato, così come elencare il loro contenuto.
Gestione oggetti
Caricare, scaricare, copiare e cancellare oggetti sono operazioni pienamente supportate.
Multipart Upload
I Multipart Upload sono del tutto supportati. Maggiori informazioni su multipart upload sono accessibili qui.
Versioning
Il Versioning può essere attivato su un bucket e può essere sospeso. Tutte le operazioni relative a oggetti versionati, come creare nuove versioni, elencarle o cancellarle sono supportate. Maggiori informazioni su bucket versioning sono accessibili qui.
Object Lock
La feature Object Lock è pienamente supportata. La seguente tabella riassume i tipi di lock.
Tipo di Lock | Modalità | Supportato |
---|---|---|
Legal Hold | - | Yes |
Object Retention | COMPLIANCE | Yes |
Object Retention | GOVERNANCE | Yes |
ACL
Le API di ACL API sono supportate.
Il beneficiario può essere uno dei seguenti:
- un utente (tramite il suo ID o la sua email)
- un gruppo predefinito
I gruppi predefiniti supportati sono:
- AllUsers
- AuthenticatedUsers
Si noti inoltre che:
- le operazioni di lettura e scrittura non sono ancora supportate in uno scenario di public-read o public-read-write
- l'implementazione di questi gruppi potrebbe cambiare leggermente in futuro.
Sono consentite le seguenti canned ACL
- private
- public-read (con le limitazioni summenzionate)
- public-read-write (con le limitazioni summenzionate)
- authenticated-read
- bucket-owner-read
- bucket-owner-full-control
Maggiori informazioni sono disponibili qui.
Lifecycle Configuration
La funzione Lifecycle Configuration è parzialmente supportata.
È consentita una sola regola di configurazione. L'unica regola di configurazione supportata è NoncurrentVersionExpiration senza filtri.
Maggiori informazioni sono disponibili qui.
Bucket Policy
Non supportata.
Object Tagging
Supportiamo le API principali di Object Tagging per gestire i tag su oggetti S3 individuali:
PutObjectTagging
: Assegna o sostituisci tutti i tag su un oggetto esistente.GetObjectTagging
: Ottieni tutti i tag associati a un oggetto specifico.DeleteObjectTagging
: Rimuovi tutti i tag da un oggetto specifico.
Preserviamo anche i tag quando gli oggetti vengono copiati utilizzando l'API di CopyObject
.
Funzionalità di Object Tagging non supportate
Alcune specifiche funzionalità in alcune API ausiliare non sono ancora supportate:
- ⚠️ Taggare durante l'upload: Non puoi inserire i tag inline durante richieste di
PutObject
oCreateMultipartUpload
. - ⚠️ Ottenimento del numero di Tag: La risposta dell'API
GetObject
non include l'headerx-amz-tagging-count
. - ⚠️ Sovrascrittura dei tag durante la copia: Non puoi sovrascrivere o sostituire tag tramite l'API
CopyObject
. Solo la preservazione dei tag è supportata.
Alcuni bucket legacy creati prima che l'object tagging fosse disponibile potrebbero non supportare le funzionalità di tagging at all. Se ti capita di riscontrare errori, assicurati che il bucket utilizzato supporti l'object tagging.
Bucket Tagging
Non supportata.
Object Lifecycle
Non supportata.
API Compatibility Table
Metodo | Supporto | Note |
---|---|---|
AbortMultipartUpload | Yes | |
CompleteMultipartUpload | Yes | |
CopyObject | Yes | |
CreateBucket | Yes | |
CreateMultipartUpload | Sì | |
DeleteBucket | Yes | |
DeleteBucketAnalyticsConfiguration | No | |
DeleteBucketCors | No | |
DeleteBucketEncryption | No | |
DeleteBucketIntelligentTieringConfiguration | No | |
DeleteBucketInventoryConfiguration | No | |
DeleteBucketLifecycle | Sì | |
DeleteBucketMetricsConfiguration | No | |
DeleteBucketOwnershipControls | Yes | |
DeleteBucketPolicy | No | |
DeleteBucketReplication | No | |
DeleteBucketTagging | No | |
DeleteBucketWebsite | No | |
DeleteObject | Yes | |
DeleteObjects | Yes | |
DeleteObjectTagging | Yes | Potrebbe non essere disponibile per alcuni Bucket |
DeletePublicAccessBlock | No | |
GetBucketAccelerateConfiguration | No | |
GetBucketAcl | Yes | |
GetBucketAnalyticsConfiguration | No | |
GetBucketCors | No | |
GetBucketEncryption | No | |
GetBucketIntelligentTieringConfiguration | No | |
GetBucketInventoryConfiguration | No | |
GetBucketLifecycle | No | |
GetBucketLifecycleConfiguration | Yes | NoncurrentVersionExpiration only |
GetBucketLocation | Yes | |
GetBucketLogging | No | |
GetBucketMetricsConfiguration | No | |
GetBucketNotification | No | |
GetBucketNotificationConfiguration | No | |
GetBucketOwnershipControls | Yes | |
GetBucketPolicy | No | |
GetBucketPolicyStatus | No | |
GetBucketReplication | No | |
GetBucketRequestPayment | No | |
GetBucketTagging | No | |
GetBucketVersioning | Yes | |
GetBucketWebsite | No | |
GetObject | Yes | |
GetObjectAcl | Yes | |
GetObjectAttributes | No | |
GetObjectLegalHold | Sì | |
GetObjectLockConfiguration | Yes | |
GetObjectRetention | Yes | |
GetObjectTagging | Yes | Potrebbe non essere disponibile per alcuni Bucket |
GetObjectTorrent | No | |
GetPublicAccessBlock | No | |
HeadBucket | Yes | |
HeadObject | Yes | |
ListBucketAnalyticsConfigurations | No | |
ListBucketIntelligentTieringConfigurations | No | |
ListBucketInventoryConfigurations | No | |
ListBucketMetricsConfigurations | No | |
ListBuckets | Yes | |
ListMultipartUploads | Yes | |
ListObjects | Yes | |
ListObjectsV2 | Yes | |
ListObjectVersions | Yes | |
ListParts | Yes | |
PutBucketAccelerateConfiguration | No | |
PutBucketAcl | Yes | |
PutBucketAnalyticsConfiguration | No | |
PutBucketCors | No | |
PutBucketEncryption | No | |
PutBucketIntelligentTieringConfiguration | No | |
PutBucketInventoryConfiguration | No | |
PutBucketLifecycle | No | |
PutBucketLifecycleConfiguration | Yes | NoncurrentVersionExpiration only |
PutBucketLogging | No | |
PutBucketMetricsConfiguration | No | |
PutBucketNotification | No | |
PutBucketNotificationConfiguration | No | |
PutBucketOwnershipControls | Yes | |
PutBucketPolicy | No | |
PutBucketReplication | No | |
PutBucketRequestPayment | No | |
PutBucketTagging | No | |
PutBucketVersioning | Yes | |
PutBucketWebsite | No | |
PutObject | Yes | |
PutObjectAcl | Yes | |
PutObjectLegalHold | Yes | |
PutObjectLockConfiguration | Yes | |
PutObjectRetention | Yes | |
PutObjectTagging | Sì | Potrebbe non essere disponibile per alcuni Bucket |
PutPublicAccessBlock | No | |
RestoreObject | No | |
SelectObjectContent | No | |
UploadPart | Sì | |
UploadPartCopy | Sì | |
WriteGetObjectResponse | No |