У меня есть вложенный шаблон CloudFormation, который принимает ряд параметров из своего корневого шаблона для его настройки. В данный момент я передаю только простые строковые параметры, но теперь мне нужно передать список ARN-блоков S3 в дочерний шаблон.
ChildLambdaStack:
Type: AWS::CloudFormation::Stack
Properties:
Parameters:
AwsRegion: !Ref AwsRegion
Environment: !Ref Environment
Product: !Ref Product
S3Buckets: "arn:aws:s3:::bucket1,arn:aws:s3:::bucket2"
TemplateURL: "https://s3.amazonaws.com/child-template.yml"
А потом в дочернем шаблоне у меня это
AWSTemplateFormatVersion: "2010-09-09"
Description: "Child Lambda"
Parameters:
AwsRegion:
Type: String
Environment:
Type: String
Product:
Type: String
S3Buckets:
Type: String
Resources:
DeployerPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- s3:PutObject
- s3:GetObject
- s3:DeleteObject
- s3:CreateBucket
- s3:DeleteBucket
- s3:ListBucket
- s3:PutBucketNotification
Resource:
- Fn::Split:
- ","
- !Ref S3Buckets
Моя идея состоит в том, что этот список ARN сегментов S3, которые я вводю, расширяется в дочернем шаблоне, как это
Resource:
- arn:aws:s3:::bucket1
- arn:aws:s3:::bucket2
Но когда я запускаю шаблон, он просто выдает ошибку
Syntax errors in policy. (Service: AmazonIdentityManagement; Status Code: 400; Error Code: MalformedPolicyDocument)
Я пробовал другие варианты, такие как использование типа параметра CommaDelimitedList
, но ни один из них не работает. Есть ли простой способ передать список строк в качестве параметра?