tipos servidores pricing precios nube costos aws almacenamiento amazon-web-services amazon-s3

amazon-web-services - pricing - servidores amazon precios



La acción de S3 Bucket no se aplica a ningún recurso (7)

Acabo de encontrarme con este problema y encontré una solución más corta para aquellos que desean tener ListBucket y GetObject en la misma política.

{ "Id": "Policyxxxx961", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmtxxxxx4365", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ], "Principal": "*" } ] }

Estoy siguiendo las instrucciones de esta respuesta para generar la siguiente política de bucket de S3:

{ "Id": "Policy1495981680273", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1495981517155", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::surplace-audio", "Principal": "*" } ] }

Vuelvo el siguiente error:

La acción no se aplica a ningún recurso en la declaración

¿Qué me falta en mi póliza?


De los documentos de IAM, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action

Algunos servicios no le permiten especificar acciones para recursos individuales; en cambio, cualquier acción que enumere en el elemento Acción o No acción se aplica a todos los recursos en ese servicio. En estos casos, utiliza el comodín * en el elemento Recurso.

Con esta información, el recurso debe tener un valor como el siguiente:

"Resource": "arn:aws:s3:::surplace-audio/*"


Debe verificar el patrón del arn definido en la etiqueta de Recursos para la Política-

"Recurso": "arn: aws: s3 ::: s3mybucketname / *"

La adición de "/ *" al final ayudaría a resolver el problema si lo enfrenta incluso después de haber desbloqueado su Política de acceso público para su Bucket.


En mi caso, la solución a este error fue tratar de eliminar algunas de las acciones que estaba aplicando. Algunos de ellos no son relevantes o no pueden funcionar con este recurso. En este caso no me dejaría incluir estos:

GetBucketAcl ListBucket ListBucketMultipartUploads


La acción de error no se aplica a ningún recurso en la declaración

Simplemente significa que la acción (que escribió en la política) no se aplica al recurso. Estaba tratando de hacer público mi bucket para que cualquiera pueda descargar de mi bucket. Recibí un error hasta que eliminé ("s3: ListBucket") de mi declaración.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Principal": { "AWS": "[IAM ARN HERE]" }, "Resource": "arn:aws:s3:::my-bucket-name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Principal": { "AWS": "[IAM ARN HERE]" }, "Resource": "arn:aws:s3:::my-bucket-name/*" } ] }

Debido a que el depósito de la lista no se aplica dentro del depósito, al eliminar esta política de acción funcionó bien.


Simplemente eliminar el permiso s3:ListBucket no fue realmente una solución lo suficientemente buena para mí, y probablemente no lo sea para muchos otros.

Si desea el permiso s3:ListBucket , solo necesita tener el arn simple del depósito (sin el /* al final) ya que este permiso se aplica al depósito en sí y no a los elementos dentro del depósito.

Como se muestra a continuación, debe tener el permiso s3:ListBucket como una declaración separada de los permisos pertenecientes a elementos dentro del depósito como s3:GetObject y s3:PutObject :

{ "Id": "Policyxxxx961", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmtxxxxx4365", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::bucket-name/*", "Principal": "*" } ] }


También me he enfrentado a un problema similar al crear el cubo

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mrt9949" ] } ] }

He cambiado el código anterior a

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::mrt9949/*" ] } ] }

agregue / * a su nombre de cubo resolverá el problema

Aquí mi nombre de cubo es mrt9949