Segui o exemplo em http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-s3 sobre como conceder a um usuário acesso a apenas um intervalo.
Em seguida, testei a configuração usando o plugin W3 Total Cache Wordpress. O teste falhou.
Também tentei reproduzir o problema usando
aws s3 cp --acl=public-read --cache-control='max-age=604800, public' ./test.txt s3://my-bucket/
e isso falhou com
upload failed: ./test.txt to s3://my-bucket/test.txt A client error (AccessDenied) occurred when calling the PutObject operation: Access Denied
Por que não consigo fazer upload para o meu intervalo?
Eu estava tendo um problema semelhante. Eu não estava usando o ACL, então não precisava
s3:PutObjectAcl
.No meu caso, eu estava fazendo (no Serverless Framework YML):
Ao invés de:
O que adiciona um
/*
ao final do bucket ARN.Espero que isto ajude.
fonte
Eu estava batendo minha cabeça contra uma parede apenas tentando fazer uploads S3 funcionarem com arquivos grandes. Inicialmente, meu erro foi:
Então tentei copiar um arquivo menor e obtive:
Eu poderia listar objetos sem problemas, mas não poderia fazer mais nada, embora tivesse
s3:*
permissões em minha política de Função. Acabei reformulando a política para isso:Agora posso fazer upload de qualquer arquivo. Substitua
my-bucket
pelo nome do seu intervalo. Espero que isso ajude alguém que está passando por isso.fonte
"Resource": "*"
.Caso isso ajude mais alguém, no meu caso, eu estava usando um CMK (funcionou bem usando a chave padrão aws / s3)
Tive que entrar em minha definição de chave de criptografia no IAM e adicionar o usuário programático conectado ao boto3 à lista de usuários que "podem usar esta chave para criptografar e descriptografar dados de dentro de aplicativos e ao usar serviços AWS integrados com KMS."
fonte
Tive um problema semelhante ao fazer upload para um balde S3 protegido com criptografia KWS. Eu tenho uma política mínima que permite a adição de objetos em uma chave s3 específica.
Eu precisava adicionar as seguintes permissões KMS à minha política para permitir que a função colocasse objetos no intervalo. (Pode ser um pouco mais do que o estritamente necessário)
fonte
aws/s3
chave gerenciada padrão para uma política IAM anexada a uma função (não na política KMS) e funcionou bem. As únicas acções que precisava contra o KMS Arns foram:kms:Encrypt
,kms:Decrypt
,kms:ReEncrypt*
,kms:GenerateDataKey*
,kms:DescribeKey
. Depois, apenas as permissões padrão do S3.Eu estava recebendo a mesma mensagem de erro para um erro que cometi: Certifique-se de usar um uri s3 correto, como:
s3://my-bucket-name/
(Se my-bucket-name estiver na raiz de seu aws s3, obviamente)
Eu insisto nisso porque ao copiar e colar o balde s3 do seu navegador, você obtém algo como
https://s3.console.aws.amazon.com/s3/buckets/my-bucket-name/?region=my-aws-regiontab=overview
Portanto, cometi o erro de usar o
s3://buckets/my-bucket-name
que aumenta:An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
fonte
Para mim, eu estava usando chaves de autenticação expiradas. Gerou novos e boom.
fonte
Semelhante a uma postagem acima, (exceto que eu estava usando credenciais de administrador) para fazer uploads S3 funcionarem com arquivos grandes de 50M.
Inicialmente, meu erro foi:
Eu mudei o multipart_threshold para estar acima de 50M
e eu tenho:
Verifiquei as configurações de acesso público do balde e tudo foi permitido. Portanto, descobri que o acesso público pode ser bloqueado no nível da conta para todos os buckets S3 :
fonte
Se você configurou o acesso público para o intervalo e ele ainda não está funcionando, edite a política do Bucker e cole o seguinte:
fonte
Se você especificou sua própria chave KMS gerenciada pelo cliente para criptografia S3, também precisará fornecer o sinalizador
--server-side-encryption aws:kms
, por exemplo:aws s3api put-object --bucket bucket --key objectKey --body /path/to/file --server-side-encryption aws:kms
Se você não adicionar o sinalizador,
--server-side-encryption aws:kms
o cli exibe umAccessDenied
errofonte
Consegui resolver o problema concedendo acesso s3 completo ao Lambda a partir de políticas. Crie uma nova função para Lambda e anexe a política com acesso S3 completo a ela.
Espero que isso ajude.
fonte