AWS Cloudformation как из имен сегментов S3 CommaDelimitedList составить список ARN — semi для цикла цикла

#amazon-cloudformation

#amazon-cloudformation

Вопрос:

Вот параметры — Список имен сегментов S3:

 Parameters:
  S3BucketNames:
    Description: Enter S3 Bucket Names
    Type: CommaDelimitedList
    Default: my-first-bucket,testing-bucket,codepipeline-bucket
 

Необходимо создать политику IAM для операций GetObject, putObject, когда arn должен быть в следующем формате, подходящем для политики IAM:

 arn:${Partition}:s3:::${BucketName}/${ObjectName}
 

В моем примере это должно выглядеть так:

 "arn:aws:s3:::my-first-bucket/*",
"arn:aws:s3:::testing-bucket/*",
"arn:aws:s3:::codepipeline-bucket/*"
 

Ответ №1:

Мне пришлось немного подумать, как я могу это провернуть, очевидно, когда вы это знаете, но, возможно, кому-то это будет полезно:

   S3RolePolicy:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: DemoPolicy
      PolicyDocument:
        Statement:
          - Effect: Allow
            Action:
              - s3:PutObject
              - s3:GetObject
            Resource: !Split
            - ","
            - !Sub
              - arn:aws:s3:::${S3Middle}/*
              - S3Middle: !Join [ "/*,arn:aws:s3:::" , !Ref S3BucketNames ]
 

Это не полный шаблон CloudFormation — просто образец peace

Комментарии:

1. Умный маленький хак!