CloudFormation Combine Sub - Импорт - Sub - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать параметр и хочу несколько раз объединить! Sub и! Import.

Parameters:
  Environment:
    Description: Stackname of Environment
    Type: String

Resources:

  IAMRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Statement:
        - Effect: Allow
          Principal:
            Service: '*'
          Action: ['sts:AssumeRole']
      Path: /
      Policies:
      - PolicyName: S3Files
        PolicyDocument:
          Statement:
          - Sid: 'S3Files'
            Effect: Allow
            Action:
              - 's3:DeleteObjectTagging'
              - 's3:GetObjectRetention'
              - 's3:ListMultipartUploadParts'
              - 's3:PutObject'
              - 's3:GetObjectAcl'
              - 's3:GetObject'
              - 's3:AbortMultipartUpload'
              - 's3:PutObjectRetention'
              - 's3:GetObjectVersionAcl'
              - 's3:GetObjectTagging'
              - 's3:PutObjectTagging'
              - 's3:DeleteObject'
              - 's3:PutObjectAcl'
              - 's3:GetObjectVersion'
            Resource: !Sub
                - '${ARN}/*'
                - ARN: 
                  Fn::ImportValue: !Sub ${Environment}:S3:Arn

Согласно документации это должно быть возможно, но, к сожалению, я всегда получаю сообщение об ошибке Template contains errors.: [/Resources/IAMRole/Type/Policies/0/PolicyDocument/Statement/0/Resource/Fn::Sub/1/ARN] 'null' values are not allowed in templates

Как мог работать UseCase?

1 Ответ

3 голосов
/ 05 мая 2020

В разделе Resource не хватает места.

Resource: !Sub
    - '${ARN}/*'
    - ARN: 
      Fn::ImportValue: !Sub ${Environment}:S3:Arn

Должно быть

Resource: !Sub
    - '${ARN}/*'
    - ARN: 
        Fn::ImportValue: !Sub ${Environment}:S3:Arn

Примечание: Fn начинается под N ARN вместо A .

Объяснение: с первым отступом строка с Fn::ImportValue рассматривается как ввод для !Sub, со вторым отступом она становится значением для ARN: определил строку над ним.

Примечание: используйте 2 или 4 пробела или табуляции по всему шаблону равномерно.

...