Подтвердить что ты не робот

Действие S3 Bucket не применяется к каким-либо ресурсам

Я следую инструкциям этого ответа для создания следующей политики корзины S3:

{
  "Id": "Policy1495981680273",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1495981517155",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::surplace-audio",
      "Principal": "*"
    }
  ]
}

Я возвращаю следующую ошибку:

Действие не распространяется на какие-либо ресурсы (ресурсы) в инструкции

Что мне не хватает в моей политике?

4b9b3361

Ответ 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.