Seguí el ejemplo en http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-s3 sobre cómo otorgar acceso a un usuario a un solo depósito.
Luego probé la configuración usando el complemento W3 Total Cache Wordpress. La prueba falló.
También intenté reproducir el problema usando
aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/
y eso falló con
upload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied
¿Por qué no puedo subir a mi depósito?
Tenía un problema similar. No estaba usando las cosas de ACL, así que no las necesitaba
s3:PutObjectAcl
.En mi caso, estaba haciendo (en Serverless Framework YML):
En vez de:
Lo que agrega un
/*
al final del ARN del depósito.Espero que esto ayude.
fuente
Estaba golpeándome la cabeza contra la pared tratando de que las cargas de S3 funcionaran con archivos grandes. Inicialmente mi error fue:
Luego intenté copiar un archivo más pequeño y obtuve:
Podría enumerar objetos bien, pero no pude hacer nada más a pesar de que tenía
s3:*
permisos en mi política de roles. Terminé reelaborando la política a esto:Ahora puedo subir cualquier archivo. Reemplácelo
my-bucket
con el nombre de su depósito. Espero que esto ayude a alguien más que esté pasando por esto.fuente
"Resource": "*"
.En caso de que esto ayude a alguien más, en mi caso, estaba usando una CMK (funcionó bien usando la clave predeterminada aws / s3)
Tuve que entrar en la definición de mi clave de cifrado en IAM y agregar el usuario programático que inició sesión en boto3 a la lista de usuarios que "pueden usar esta clave para cifrar y descifrar datos desde aplicaciones y al usar servicios de AWS integrados con KMS".
fuente
Tuve un problema similar al cargar en un bucket de S3 protegido con cifrado KWS. Tengo una política mínima que permite la adición de objetos bajo una clave s3 específica.
Necesitaba agregar los siguientes permisos de KMS a mi política para permitir que el rol coloque objetos en el depósito. (Puede ser un poco más de lo estrictamente requerido)
fuente
aws/s3
clave administrada predeterminada a una política de IAM adjunta a un rol (no en la política de KMS) y funciona bien. Las únicas acciones que necesitaba contra el KMS ARNs fueron:kms:Encrypt
,kms:Decrypt
,kms:ReEncrypt*
,kms:GenerateDataKey*
,kms:DescribeKey
. Luego, solo los permisos estándar de S3.Estaba teniendo el mismo mensaje de error por un error que cometí: asegúrese de usar un uri s3 correcto como:
s3://my-bucket-name/
(Si my-bucket-name está en la raíz de su aws s3 obviamente)
Insisto en eso porque al copiar y pegar el bucket de s3 desde su navegador, obtiene algo como
https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/?region=my-aws-regiontab=overview
Por lo tanto, cometí el error de usar lo
s3://buckets/my-bucket-name
que aumenta:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
fuente
Para mí, estaba usando claves de autenticación caducadas. Generaron nuevos y boom.
fuente
Similar a una publicación anterior, (excepto que estaba usando credenciales de administrador) para que las cargas de S3 funcionen con un archivo grande de 50M.
Inicialmente mi error fue:
Cambié el multipart_threshold para estar por encima de los 50M
y tengo:
Revisé la configuración de acceso público del cubo y todo estaba permitido. Entonces descubrí que el acceso público se puede bloquear a nivel de cuenta para todos los depósitos de S3 :
fuente
Si ha configurado el acceso público para el depósito y todavía no funciona, edite la política de bucker y pegue lo siguiente:
fuente
Si ha especificado su propia clave KMS administrada por el cliente para el cifrado S3, también debe proporcionar la marca
--server-side-encryption aws:kms
, por ejemplo:aws s3api put-object --bucket bucket --key objectKey --body /path/to/file --server-side-encryption aws:kms
Si no agrega la bandera,
--server-side-encryption aws:kms
la cli muestra unAccessDenied
errorfuente
Pude resolver el problema otorgando acceso s3 completo a Lambda desde las políticas. Cree un nuevo rol para Lambda y adjunte la política con acceso S3 completo.
Espero que esto ayude.
fuente