如何使用cloudformation从S3 ARN获取S3存储桶名称

时间:2020-07-20 19:07:38

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

我正在使用表达式enableTracing: true将作为字符串的STRING输入参数!Select [5, !Split [':', !Ref ResourceARN]]转换为相应的ResourceARN,以将其传递给子堆栈。 / p>

示例:从S3 bucket name开始创建arn:aws:s3:::tests3bucket-1a3o2v3wr375g

相反,当我得到tests3bucket-1a3o2v3wr375g时,它的计算结果为空字符串。

我该如何进行这项工作?


这是主堆栈模板:

Parameters: [S3BucketName] must have values

这是子模板:

AWSTemplateFormatVersion: 2010-09-09
Parameters:
  ResourceARN:
    Description: 'The AWS ARN associated with S3 resource, example arn:aws:s3:::tests3bucket-1a3o2v3wr375g'
    ConstraintDescription: The ARN of the resource
    Type: String
:
:
Resources:
  ChildStack:
    Type: 'AWS::CloudFormation::Stack'
    Properties:
      TemplateURL: !Sub >-
        https://${QSS3BucketName}.s3.amazonaws.com/${QSS3KeyPrefix}/templates/child.template
      Parameters:
        S3BucketName: !Select [5, !Split [':', !Ref ResourceARN]] # Expecting to evaluate to tests3bucket-1a3o2v3wr375g
:
:

1 个答案:

答案 0 :(得分:1)

谢谢@berenbums看看-我也意识到我自己也行得通。还有另一个问题掩盖了问题。

因此,毕竟,表达式!Select [5, !Split [':', !Ref ResourceARN]]可用于将ResourceARN转换为相应的S3存储桶名称。