AWS CodePipeline:在CodeBuild中获取CloudFormation输出

时间:2018-08-23 10:40:06

标签: amazon-web-services amazon-cloudformation devops aws-codepipeline aws-codebuild

我正在使用AWS CodePipeline(Cloudformation和CodeBuild)学习一些DevOps技术。

我的(简化的)管道是这样的:

  1. 推送到github仓库触发管道
  2. CloudFormation构建/更新后端基础架构
  3. CodeBuild还有一些其他工作

目前,CloudFormation输出以下内容:

Outputs:
  RestApiId:
    Value: !Ref ApiGateway
    Description: 'API Id'

问题:如何在CloudBuild中获取ApiGateway ID?

1 个答案:

答案 0 :(得分:1)

根据: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html

您可以这样指定CodePipeline步骤(来自文档):

- Name: CreateTestStackA
  Actions:
    - Name: CloudFormationCreate
      ActionTypeId:
        Category: Deploy
        Owner: AWS
        Provider: CloudFormation
        Version: '1'
      Configuration:
        ActionMode: CREATE_UPDATE
        Capabilities: CAPABILITY_IAM
        OutputFileName: TestOutput.json
        RoleArn: !GetAtt [CFNRole, Arn]
        StackName: StackA
        TemplateConfiguration: TemplateSource::test-configuration.json
        TemplatePath: TemplateSource::teststackA.yaml
      InputArtifacts:
        - Name: TemplateSourceA
      OutputArtifacts:
        - Name: StackAOutput
      RunOrder: '1'

因此,在Configuration中,您需要添加OutputFileName参数并指定输出工件名称。然后,您可以将该工件用作CodeBuild的输入。在输出文件(TestOutput.json)中,您将有一个字典,其中的键是输出名称,值是输出值。