如何在存储桶名称中使用变量AWS Cloudformation

时间:2020-03-23 18:45:14

标签: amazon-web-services amazon-s3 yaml amazon-cloudformation

我正在尝试创建一个Cloudformation模板,该模板创建一个S3存储桶。我想对其进行配置,以便使用传递到模板中的参数之一来命名存储桶。我可以在模板的其他位置替换参数,但是当我尝试在此处将其存储时,创建存储桶会失败。

Resources:
  S3Bucket:
    Type: 'AWS::S3::Bucket'
    Properties:
      BucketName: !Sub '${STRING_PARAM}-example-bucketname'

这在创建cloudformation堆栈时给出Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request。我已经尝试使用有效的名称进行硬编码,因此,我很确定这是一个有效的S3存储桶名称。

S3 Creation CloudFormation results in 400 Bad Request都将(! Ref而不是! Sub指向参数/资源有效,但是我认为我应该能够像在其他地方一样在这里将参数细分。

1 个答案:

答案 0 :(得分:0)

您为BucketName的值很好。这是使用!Sub的正确语法,应该可以使用。

问题在于参数名称必须为字母数字,因此STRING_PARAM无效,因为其中带有下划线字符。

将您的参数名称更新为类似StringParam的名称,这样您就可以摆脱Parameter name STRING_PARAM is non alphanumeric.错误消息。