0

我在 AWS 中有一个带有 Codestar、CodeBuild、CloudFormation 等的管道。

我试图弄清楚如何从返回到 CodeBuild 步骤的 CloudFormation 步骤获取信息。让我分解一下:

  1. 我有一个buildspec.yml用于 CodeBuild

    # buildspec.yml
    
    ...
    phases:
     ...
     build:
       commands:
         - aws cloudformation package --region $REGION --template template.yml --s3-bucket $S3_BUCKET --output-template $OUTPUT_TEMPLATE
    
  2. 以上使用我们的启动 CloudFormation 构建template.yml

    # template.yml
    
     ...
     S3BucketAssets:
        Type: AWS::S3::Bucket
     ...
    
  3. 此时,它会为 S3 存储桶创建一个唯一名称。惊人的。现在,buildspec.yml对于 CodeBuild 中的第 2 步,我想将项目推送到刚刚在 CloudFormation 模板中创建的 S3 存储桶。但是,我不知道如何从 CloudFormation 模板中获取 S3 存储桶的动态创建名称。我想要类似的东西:

    # buildspec.yml
    
    ...
    phases:
     ...
     build:
       commands:
         # this is the same step as shown above
         - aws cloudformation package --region $REGION --template template.yml --s3-bucket $S3_BUCKET --output-template $OUTPUT_TEMPLATE
         # this is the new step
         - aws s3 sync dist_files/ s3://{NAME_OF_THE_NEW_S3_BUCKET}
    

如何完成获取动态命名的 S3 存储桶以便推送到它?

我知道在 CloudFormation 模板中,您可以使用类似!GetAtt [ClientWebAssets, WebsiteURL]. 但是,我不知道如何从 cloudformation 模板中获取该信息并返回到 codebuild 模板中。

4

1 回答 1

0

您可以转而使用 CodePipeline。第一阶段将通过 cloudformation 部署应用程序,输出工件是堆栈创建输出

http://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#action-requirements

于 2017-06-01T19:43:52.697 回答