Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Applicazione delle scritture condizionali sui bucket Amazon S3
Utilizzando le policy di bucket Amazon S3, è possibile imporre scritture condizionali per il caricamento di oggetti nei bucket per uso generico.
Una policy di bucket è una policy basata sulle risorse che può essere utilizzata per concedere le autorizzazioni di accesso al bucket Amazon S3 e agli oggetti in esso contenuti. Solo il proprietario del bucket può associare una policy a un bucket. Per ulteriori informazioni sulle policy di bucket, consulta Policy dei bucket per Amazon S3.
È possibile utilizzare le chiavi di condizione s3:if-match
o s3:if-none-match
come l'elemento opzionale Condition
o il blocco Condition
per specificare quando una policy è in vigore. Per i caricamenti in più parti è necessario specificare la chiave s3:ObjectCreationOperation
condizionale per esentare UploadPartCopy
le operazioni, e CreateMultipartUpload
UploadPart
, poiché queste APIs non accettano intestazioni condizionali. Per ulteriori informazioni sull'uso delle condizioni nelle policy di bucket, consulta Esempi di policy per i bucket che utilizzano le chiavi di condizione.
Nota
Se si usa una policy di bucket per imporre scritture condizionali, non è possibile eseguire operazioni di copia sul bucket o sul prefisso specificato nella policy di bucket. Le richieste CopyObject
senza un'intestazione HTTP If-None-Match
o If-Match
falliscono con un errore 403 Access Denied
. Le richieste CopyObject
fatte con queste intestazioni HTTP falliscono con una risposta 501 Not
Implemented
.
Gli esempi seguenti mostrano come utilizzare le condizioni in una policy di bucket per forzare i client a usare l'intestazione HTTP If-None-Match
o If-Match
.
Argomenti
Esempio 1: Consentire solo il caricamento di oggetti utilizzando le richieste PutObject
e CompleteMultipartUpload
che includono l'intestazione if-none-match
Questa politica consente all'account 111122223333, utente Alice, di scrivere nel amzn-s3-demo-bucket1
bucket se la richiesta include l'if-none-match
intestazione, assicurando che la chiave dell'oggetto non esista già nel bucket. Tutte le richieste PutObject
e CompleteMultipartUpload
al bucket specificato devono includere l'intestazione if-none-match
per avere successo. Utilizzando questa intestazione, i clienti possono scrivere su questo bucket solo se la chiave dell'oggetto non esiste nel bucket.
Nota
Questo criterio imposta anche la chiave di s3:ObjectCreationOperation
condizione che consente il caricamento di più parti utilizzando, e. CreateMultipartUpload
UploadPart
UploadPartCopy
APIs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowConditionalPut", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-none-match": "false" } } }, { "Sid": "AllowConditionalPutwithMPUs", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Bool": { "s3:ObjectCreationOperation": "false" } } } ] }
Esempio 2: Consentire solo il caricamento di oggetti utilizzando le richieste PutObject
e CompleteMultipartUpload
che includono l'intestazione if-match
Questa policy consente all'account 111122223333, utente Alice, di scrivere su amzn-s3-demo-bucket1
solo se la richiesta include l'intestazione if-match
. Questa intestazione confronta il ETag valore di un oggetto in S3 con quello fornito durante l'operazione. WRITE
Se i ETag valori non corrispondono, l'operazione fallirà. Tutte le richieste PutObject
e CompleteMultipartUpload
al bucket specificato devono includere l'intestazione if-match
per avere successo.
Nota
Questo criterio imposta anche la chiave di s3:ObjectCreationOperation
condizione che consente il caricamento in più parti utilizzando CreateMultipartUpload
UploadPart
, e. UploadPartCopy
APIs
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObject", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/*", }, { "Sid": "BlockNonConditionalObjectCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-match": "true" }, "Bool": { "s3:ObjectCreationOperation": "true" } } }, { "Sid": "AllowGetObjectBecauseConditionalPutIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*" } ] }
Esempio 3: Consentire solo le richieste di caricamento di oggetti che includono l'intestazione if-none-match
o if-match
Questa policy consente all'account 111122223333 e all'utente Alice di scrivere su amzn-s3-demo-bucket1
se le richieste includono l'intestazione if-none-match
o if-match
. Ciò consente ad Alice di caricare un oggetto se il nome della chiave non esiste nel bucket, o se il nome della chiave esiste Alice può sovrascrivere l'oggetto se l'oggetto ETag corrisponde a quello ETag fornito nella richiesta. PUT
Nota
Questa politica imposta anche la chiave di s3:ObjectCreationOperation
condizione che consente il caricamento in più parti utilizzando, e. CreateMultipartUpload
UploadPart
UploadPartCopy
APIs
{ "Version": "2012-10-17", "Statement": [ { "Sid": " AllowConditionalPutifAbsent", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-none-match": "false" } } }, { "Sid": "AllowConditionalPutIfMatchEtag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Null": { "s3:if-match": "false" } } }, { "Sid": "AllowConditionalObjectCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*", "Condition": { "Bool": { "s3:ObjectCreationOperation": "false" } } }, { "Sid": " AllowGetObjectBecauseConditionalPutIfMatchETag", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Alice" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1
/*" } ] }