Estou seguindo as instruções desta resposta para gerar a seguinte política de bucket S3:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Eu recebo o seguinte erro:
A ação não se aplica a nenhum recurso (s) na declaração
O que estou perdendo na minha política?
amazon-web-services
amazon-s3
Philip Kirkbride
fonte
fonte
Respostas:
Dos documentos IAM, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Alguns serviços não permitem especificar ações para recursos individuais; em vez disso, qualquer ação listada no elemento Action ou NotAction se aplica a todos os recursos nesse serviço. Nesses casos, você usa o curinga * no elemento Resource.
Com essas informações, o recurso deve ter um valor como abaixo:
fonte
Apenas remover a
s3:ListBucket
permissão não era realmente uma solução boa o suficiente para mim e provavelmente não é para muitos outros.Se quiser a
s3:ListBucket
permissão, você precisa apenas ter o arn simples do balde (sem o/*
no final), pois essa permissão se aplica ao próprio balde e não aos itens dentro do balde.Conforme mostrado abaixo, você deve ter a
s3:ListBucket
permissão como uma declaração separada das permissões pertencentes a itens dentro do intervalo comos3:GetObject
es3:PutObject
:fonte
A Ação de Erro não se aplica a nenhum recurso (s) na declaração
Simplesmente significa que a ação (você escreveu na política) não se aplica ao recurso. Eu estava tentando tornar público meu balde para que qualquer pessoa possa fazer o download dele. Eu estava recebendo um erro até remover ("s3: ListBucket") do meu extrato.
Como o intervalo de lista não se aplica dentro do intervalo, a exclusão dessa política de ação funcionou bem.
fonte
Apenas encontrei esse problema e encontrei uma solução mais curta para aqueles que desejam ter ListBucket e GetObject na mesma política.
fonte
Principal
não é permitido para a gramática da Política S3.Eu também enfrentei o problema semelhante ao criar o balde
Eu mudei o código acima para
adicione / * ao nome do seu intervalo, isso resolverá o problema
Aqui, meu nome de balde é mrt9949
fonte
No meu caso, a solução para esse erro foi tentar remover algumas das ações que eu estava aplicando. Alguns deles não são relevantes ou não podem funcionar com este recurso. Neste caso, não me deixaria incluir estes:
GetBucketAcl ListBucket ListBucketMultipartUploads
fonte
Você tem que verificar o padrão do arn definido na tag Resource para o Policy-
"Resource": "arn: aws: s3 ::: s3mybucketname / *"
Adicionar "/ *" no final ajudaria a resolver o problema se você enfrentá-lo, mesmo depois de ter sua política de acesso público desbloqueada para seu intervalo.
fonte
fonte
Você também pode configurar ListBuckets para cada pasta, assim
Essas regras são usadas junto com o SES para receber um e-mail, mas permitem que um usuário externo visualize os arquivos que foram colocados no balde pelo SES. Segui as instruções daqui: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
Além disso, você deve especificar o prefixo como
domain.co/user/
COM barra no final ao usar o SDK, caso contrário, o acesso será negado. espero que ajude alguémfonte