Этот шаблон CF не работает:

  MyECSrepo:
    Type: "AWS::ECR::Repository"
    Properties:
      RepositoryName: !Ref RepoName
      RepositoryPolicyText:
        Version: "2012-10-17"
        Statement:
          - Sid: AllowAll
            Effect: Allow
            Principal: 
              AWS:
                - arn:aws:iam::00000000000:group/admin
            Action:
          - "ecr:*"

Создание стека вызывает эту ошибку:

Недопустимый параметр в «PolicyText» не соответствует ограничению: «Указана неверная политика хранилища»

В чем может быть проблема?

2
Neil H Watson 1 Сен 2017 в 16:33

4 ответа

Лучший ответ

Ознакомиться с документацией по Политике репозитория ECR оказывается, что он ограничен пользователями и корневыми учетными записями для основного списка. Таким образом, вам, вероятно, придется поменять список всех пользователей, которым вы хотите предоставить доступ.

в документации Amazon есть несколько примеров есть несколько примеров того, что вы можете делать с этим.

6
Neil Bostrom 6 Апр 2020 в 13:37

Подходящим решением может быть использование RoleArn вместо групп (что не работает) ... и / или пользователей IAM

ECR:
    Type: AWS::ECR::Repository
    Properties:
        RepositoryPolicyText:
            Version: "2012-10-17"
            Statement:
                -
                  Sid: AllowPushPull
                  Effect: Allow
                  Principal:
                    AWS:
                      - !Sub arn:aws:iam::${AWS::AccountId}:role/${MyPreparedRole}
                  Action:
                    - "ecr:GetDownloadUrlForLayer"
                    - "ecr:..."

Роль «MyPreparedRole» может быть предоставлена в группе.

0
nologin 9 Июл 2019 в 11:59

На всякий случай разрывается ссылка на герцога Маппетса, вот пример. У меня были проблемы с автоматически созданным JSON. Это, казалось, исправило это.

    {
      "Version": "2008-10-17",
      "Statement": [
        {
          "Sid": "AllowPushPull",
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::<<id number of root user here>>:user/<<some iam user>>"
          },
          "Action": [
            "ecr:BatchCheckLayerAvailability",
            "ecr:BatchGetImage",
            "ecr:CompleteLayerUpload",
            "ecr:GetDownloadUrlForLayer",
            "ecr:InitiateLayerUpload",
            "ecr:PutImage",
            "ecr:UploadLayerPart"
          ]
    }
  ]
}
1
Conan 7 Мар 2019 в 15:53

Сегодня у нас была такая же проблема, и оказалось, что имя пользователя IAM, указанное в тексте политики, было неверным. Из-за этого стек попал в неисправимый режим delete_failed, и нам пришлось удалить стек и заново его создать.

0
realfire 5 Мар 2020 в 18:25