Назад | Перейти на главную страницу

Отказано в доступе при вызове операции CreateInvalidation в интерфейсе командной строки AWS

Я пытаюсь создать команду, которая сделает распространение CloudFront недействительным при выпуске нового кода. Это попытка решить проблему, из-за которой новый вытолкнутый HTML-код не отображается в моем веб-приложении в течение 24 часов. Идея исходит из этого СПРАВОЧНИК ПО КОМАНДАМ AWS CLI

Вот команда:

aws cloudfront create-invalidation --distribution-id XXXXXXXXXXXXXX --invalidation-batch file://invbatch.json

Вот ответ, который я получаю, когда запускаю команду:

Ошибка клиента (AccessDenied) произошла при вызове операции CreateInvalidation: User: arn: aws: iam :: XXXXXXXXXXXXXX: user / cats-kittens-beanstalk-user не авторизован для выполнения: cloudfront: CreateInvalidation

Есть идеи, почему это может быть? Я знаю, что AWS отклоняет этот доступ, даже если в некоторых случаях пользователю разрешено запускать команды - см. Вот.

Политики IAM не позволяют ограничивать доступ к определенным дистрибутивам CloudFront. Решение состоит в том, чтобы использовать подстановочный знак для ресурса вместо ссылки только на конкретный ресурс CloudFront. Добавление этого в вашу политику IAM решит возникшую у вас проблему.

Вот пример этого в действующей политике IAM:

{
  "Statement": [  
    {
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudfront:CreateInvalidation",
        "cloudfront:GetInvalidation",
        "cloudfront:ListInvalidations"
      ],
      "Resource": "*"
    }
  ]
}

Документы: