Действие S3 Bucket не применяется к каким-либо ресурсам
Я следую инструкциям этого ответа для создания следующей политики корзины S3:
{
"Id": "Policy1495981680273",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1495981517155",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::surplace-audio",
"Principal": "*"
}
]
}
Я возвращаю следующую ошибку:
Действие не распространяется на какие-либо ресурсы (ресурсы) в инструкции
Что мне не хватает в моей политике?
Ответы
Ответ 1
Из документов IAM, http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Action
Некоторые службы не позволяют указывать действия для отдельных ресурсов; вместо этого любые действия, которые вы указываете в элементе Action или NotAction, применяются ко всем ресурсам этой службы. В этих случаях вы используете подстановочный знак * в элементе Resource.
С этой информацией ресурс должен иметь значение, как показано ниже:
"Resource": "arn:aws:s3:::surplace-audio/*"
Ответ 2
Просто удаление разрешения s3:ListBucket
не было действительно хорошим решением для меня и, вероятно, не для многих других.
Если вы хотите s3:ListBucket
разрешение s3:ListBucket
, вам нужно просто иметь простой arn из bucket (без /*
в конце), поскольку это разрешение применяется к самому ведру, а не к элементам в ведре.
Как показано ниже, вы должны иметь разрешение s3:ListBucket
как отдельный оператор из разрешений, относящихся к элементам в ведре, например s3:GetObject
и s3:PutObject
:
{
"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/*"
}
]
}
Ответ 3
Действие ошибки не применяется к какому-либо ресурсу (-ам) в инструкции
Просто это означает, что действие (вы написали в политике) не относится к ресурсу. Я пытался обнародовать мое ведро, чтобы кто-нибудь мог скачать из моего ведра. Я получал ошибку, пока не удалю ("s3: ListBucket") из моего заявления.
{
"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": "*"
}
]
}
Поскольку ведро списка не применяется внутри ведра, таким образом, удалив эту политику действия, она работает нормально.
Ответ 4
Просто столкнулся с этой проблемой и нашел более короткое решение для тех, кто хочет иметь ListBucket и GetObject в той же политике.
{
"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": "*"
}
]
}
Ответ 5
Я также сталкивался с подобной проблемой при создании ведра
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mrt9949"
]
}
]
}
Я изменил вышеуказанный код на
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::mrt9949/*"
]
}
]
}
добавьте /* к вашему имени корзины, это решит проблему
Здесь мое ведро зовут mrt9949
Ответ 6
В моем случае решением этой ошибки была попытка удалить некоторые действия, которые я применял. Некоторые из них не относятся или не могут работать с этим ресурсом.
В этом случае это не позволило бы мне включить это:
GetBucketAcl
ListBucket
ListBucketMultipartUploads
Ответ 7
Вы должны проверить шаблон arn, определенный под тегом Resource для Policy-
"Ресурс": "arn: aws: s3: s3mybucketname/*"
Добавление "/*" в конце поможет решить проблему, если вы столкнетесь с ней даже после разблокирования вашей Политики публичного доступа для вашего Bucket.