Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Aplicación de escrituras condicionales en buckets de Amazon S3

Modo de enfoque
Aplicación de escrituras condicionales en buckets de Amazon S3 - Amazon Simple Storage Service

Mediante el uso de las políticas de bucket de Amazon S3, puede aplicar escrituras condicionales para cargas de objetos en los buckets de uso general.

Una política de bucket está basada en recursos que puede utilizar para conceder permisos de acceso al bucket de Amazon S3 y a los objetos que contiene. Solo el propietario del bucket puede asociar una política a un bucket. Para obtener más información acerca de las políticas de bucket, consulte Políticas de buckets para Amazon S3.

Puede utilizar las claves de condición s3:if-match o s3:if-none-match como el elemento Condition opcional o bloque Condition para especificar cuándo está en vigor una política. Para cargas multiparte, debe especificar la clave de condición s3:ObjectCreationOperation para eximir las operaciones CreateMultipartUpload, UploadPart y UploadPartCopy, ya que estas API no aceptan encabezados condicionales. Para obtener más información sobre el uso de condiciones en las políticas de bucket, consulte Ejemplos de políticas de bucket que utilizan claves de condición.

nota

Si utiliza una política de bucket para aplicar escrituras condicionales, no puede realizar operaciones de copia en el bucket o prefijo especificado en la política de bucket. Las solicitudes CopyObject sin un encabezado HTTP If-None-Match o If-Match producen un error 403 Access Denied. Las solicitudes CopyObject realizadas con esos encabezados HTTP generan un error con una respuesta 501 Not Implemented.

En los siguientes ejemplos se muestra cómo utilizar condiciones en una política de bucket para que los clientes utilicen el encabezado HTTP If-None-Match o If-Match.

Ejemplo 1: permitir solo cargas de objetos mediante solicitudes PutObject y CompleteMultipartUpload que incluyan el encabezado if-none-match

Esta política permite a la cuenta 111122223333, usuaria Alice, escribir en el bucket amzn-s3-demo-bucket1 si la solicitud incluye el encabezado if-none-match, lo que garantiza que la clave de objeto no exista ya en el bucket. Todas las solicitudes PutObject y CompleteMultipartUpload al bucket especificado deben incluir el encabezado if-none-match para que se realicen correctamente. Mediante este encabezado, los clientes pueden escribir en este bucket solo si la clave de objeto no existe en el bucket.

nota

Esta política también establece la clave de condición s3:ObjectCreationOperation que permite cargas multiparte mediante las API CreateMultipartUpload, UploadPart y UploadPartCopy.

{ "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" } } } ] }

Ejemplo 2: permitir solo cargas de objetos mediante solicitudes PutObject y CompleteMultipartUpload que incluyan el encabezado if-match

Esta política permite que la cuenta 111122223333, usuaria Alice, escriba en amzn-s3-demo-bucket1 solo si la solicitud incluye el encabezado if-match. Este encabezado compara el valor de ETag de un objeto en S3 con uno que proporcione durante la operación WRITE. Si los valores se ETag no coinciden, se produce un error en la operación. Todas las solicitudes PutObject y CompleteMultipartUpload al bucket especificado deben incluir el encabezado if-match para que se realicen correctamente.

nota

Esta política también establece la clave de condición s3:ObjectCreationOperation que permite cargas multiparte mediante las API CreateMultipartUpload, UploadPart y UploadPartCopy.

{ "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/*" } ] }

Ejemplo 3: permitir solo solicitudes de carga de objeto que incluyan el encabezado if-none-match o if-match

Esta política permite que la cuenta 111122223333, usuaria Alice, escriba en amzn-s3-demo-bucket1 si las solicitudes incluyen el encabezado if-none-match o if-match. Esto permite a Alice cargar un objeto si el nombre de clave no existe en el bucket o, si el nombre de clave existe, Alice puede sobrescribir el objeto si la ETag del objeto coincide con la ETag proporcionada en la solicitud PUT.

nota

Esta política también establece la clave de condición s3:ObjectCreationOperation que permite cargas multiparte mediante las API CreateMultipartUpload, UploadPart y UploadPartCopy.

{ "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/*" } ] }
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.