CloudFormation S3 Создание Bucket / BucketPolicy - Неразрешенные зависимости ресурсов [Среда] в блоке ресурсов шаблона - PullRequest
0 голосов
/ 06 февраля 2020

Я недавно начал готовиться к своей первой сертификации AWS, и в то же время я начал играть с CloudFormation. Тем не менее, я попал в блок.

Моя проблема: Я пытаюсь создать корзину S3 и прикрепить к ней Политику корзины. Однако всякий раз, когда я пытаюсь проверить шаблон, я получаю следующую ошибку:

An error occurred (ValidationError) when calling the ValidateTemplate operation: Template format error: Unresolved resource dependencies [Environment] in the Resources block of the template

Что я сделал:

  LogsBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub my-cluster-logs-${Environment}
      BucketEncryption:
        ServerSideEncryptionConfiguration:
          - ServerSideEncryptionByDefault:
              SSEAlgorithm: AES256
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true
      LifecycleConfiguration:
        Rules:
          - Id: Log expiry policy
            ExpirationInDays: 90
            Status: Enabled
          - Id: Change tier
            Status: Enabled
            Transitions:
              - StorageClass: STANDARD_IA
                TransitionInDays: 30
    DeletionPolicy: Delete

  LogsBucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket:
        Ref: 'LogsBucket'
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Action:
              - s3:PutObject
            Resource: 
              - Fn::Join:
                - ''
                -
                  - !GetAtt LogsBucket.Arn
                  - '/*'
            Principal:
              AWS: #removed_for_this_post
    DependsOn:
      - LogsBucket

Я пробовал все виды вещей, но я все еще получаю ошибку.

Заключение Есть идеи? Кстати, это действительный шаблон YAML. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Поместите это наверх

Parameters:
  Environment:
    Type: String

И передайте имя параметра "Environment" из вашей команды или вашего конвейера развертывания.

Если вы, скажем, запускаете отдельный dev и В производственной учетной записи вы не можете просто использовать одно и то же имя сегмента, поскольку имена блоков S3 должны быть уникальными во всем мире, а не просто уникальными для вашей учетной записи.

0 голосов
/ 06 февраля 2020

После еще большей возни я обнаружил проблему. Я забыл добавить следующий код в верхней части шаблона.

Parameters:
  Environment:
    Type: String
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...