Я следую инструкциям из этого ответа, чтобы создать следующую политику корзины S3:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Я получаю следующую ошибку:
Действие не распространяется ни на какие ресурсы в заявлении
Что мне не хватает в моей политике?
amazon-web-services
amazon-s3
Филип Киркбрайд
источник
источник
Ответы:
Из документов IAM http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Некоторые сервисы не позволяют указывать действия для отдельных ресурсов; вместо этого любые действия, перечисленные в элементе Action или NotAction, применяются ко всем ресурсам в этой службе. В этих случаях вы используете подстановочный знак * в элементе Resource.
С этой информацией ресурс должен иметь значение, подобное приведенному ниже:
источник
Простое удаление
s3:ListBucket
разрешения было недостаточно хорошим решением для меня, и, вероятно, не для многих других.Если вам нужно
s3:ListBucket
разрешение, вам нужно просто иметь простую арку ведра (без/*
конца), поскольку это разрешение применяется к самому ведру, а не к элементам в ведре.Как показано ниже, у вас должно быть
s3:ListBucket
разрешение в виде отдельного утверждения от разрешений, относящихся к элементам внутри корзины, таким какs3:GetObject
иs3:PutObject
:источник
Действие при ошибке не применяется ни к каким ресурсам в инструкции
Просто это означает, что действие (вы написали в политике) не применяется к ресурсу. Я пытался обнародовать свою корзину, чтобы любой мог скачать ее. Я получал ошибку, пока не удалил ("s3: ListBucket") из своего оператора.
Поскольку сегмент списка не применяется внутри сегмента, то удаление этой политики действий работало нормально.
источник
Просто столкнулся с этой проблемой и нашел более короткое решение для тех, кто хочет, чтобы ListBucket и GetObject были в одной политике.
источник
Principal
это недопустимо для грамматики политики S3.Я также столкнулся с аналогичной проблемой при создании ведра
Я изменил приведенный выше код на
добавьте / * к имени вашего ведра, это решит проблему
Вот мое имя ведра mrt9949
источник
В моем случае решение этой ошибки было попыткой удалить некоторые из действий, которые я применял. Некоторые из них не имеют отношения к этому ресурсу или не могут работать с ним. В этом случае это не позволит мне включить их:
GetBucketAcl ListBucket ListBucketMultipartUploads
источник
Вы должны проверить шаблон arn, определенный в теге Resource для Policy-
"Ресурс": "arn: aws: s3 ::: s3mybucketname / *"
Добавление «/ *» в конце поможет решить проблему, если вы столкнетесь с ней даже после того, как ваша политика общего доступа разблокирована для вашего сегмента.
источник
источник
Вы также можете настроить ListBuckets для каждой папки, например
Эти правила используются вместе с SES для получения электронной почты, но позволяют внешнему пользователю просматривать файлы, помещенные в корзину SES. Я выполнил инструкции отсюда: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/
Кроме того, вы должны указать префикс в виде
domain.co/user/
косой черты WITH в конце при использовании SDK, иначе вы получите отказ в доступе. надеюсь, что это поможет кому-нибудьисточник