首页 > 解决方案 > 将环境变量从 AWS Codepipeline 传递到 CodeBuild

问题描述

我在将 EnvironmentVariables 从 AWS Codepipeline 传递到 CodeBuild 时遇到问题。我能找到的关于这个主题的唯一文档是这个 AWS 文档,它提供了一个基本示例,但如下所示,我需要一个导入的子值。所有尝试都给我错误:Value of property Configuration must be an object with String (or simple type) properties

  - Name: EmptyHostingBucket
    Actions:
      - Name: EmptyHostingBucket
        RunOrder: 5
        ActionTypeId:
          Category: Build
          Owner: AWS
          Provider: CodeBuild
          Version: 1
        Configuration:
          ProjectName: !Ref CodeBuildEmptyBucket
          EnvironmentVariables:
            - Name: HOSTING_BUCKET
              Value:
                Fn::ImportValue: !Sub "${ProjectName}-website-hosting-bucket"
        InputArtifacts:
          - Name: SourceArtifacts
        OutputArtifacts:
          - Name: BuildEmptyBucket

标签: amazon-web-servicesamazon-cloudformationaws-codepipelineaws-codebuild

解决方案


这可能是因为:

EnvironmentVariables 参数的值采用环境变量对象的JSON 数组的形式。

因此它应该是字符串,如下所示

EnvironmentVariables:
    !Sub
      - '[{"name":"HOSTING_BUCKET","value":"${BucketName}","type":"PLAINTEXT"}]'
      - BucketName: 
          Fn::ImportValue: !Sub "${ProjectName}-website-hosting-bucket"

以上是例子。可能还需要进行一些调整。


推荐阅读