You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YAML格式CloudFormation模板中CodePipeline Build环境变量配置报错

YAML CloudFormation模板中CodePipeline Build环节环境变量配置方案

问题背景

在YAML格式的AWS CloudFormation模板中,需将创建模板时传入的production或staging参数(CodeEnvironment)传递给CodePipeline的Build环节,尝试多种EnvironmentVariables配置方式后均收到格式错误提示。

错误原因分析

结合报错信息与尝试的代码,核心问题有两点:

  1. CodePipeline的Build Action配置中,EnvironmentVariables要求是JSON数组格式的字符串,而非直接的YAML数组;
  2. 之前尝试的JSON写法存在语法错误:未用[]包裹成数组,且type与value字段间缺少逗号。

正确配置方式

以下两种写法均可满足需求:

方式一:使用!Sub生成合规的JSON数组字符串

EnvironmentVariables: !Sub '[{"name": "CURRENT_ENVIRONMENT", "type": "PLAINTEXT", "value": "${CodeEnvironment}"}]'

方式二:直接编写转义后的JSON数组字符串

EnvironmentVariables: "[{\"name\": \"CURRENT_ENVIRONMENT\", \"type\": \"PLAINTEXT\", \"value\": \"${CodeEnvironment}\"}]"

完整修正后的Build Action代码片段

- Name: "Build"
  Actions:
    - Name: "Build"
      ActionTypeId:
        Category: "Build"
        Owner: "AWS"
        Provider: "CodeBuild"
        Version: "1"
      Configuration:
        ProjectName: !Ref CodeBuildProject
        EnvironmentVariables: !Sub '[{"name": "CURRENT_ENVIRONMENT", "type": "PLAINTEXT", "value": "${CodeEnvironment}"}]'
      InputArtifacts:
        - Name: "SourceArtifact"
      OutputArtifacts:
        - Name: "secondary_artifact_name_1"
        - Name: "secondary_artifact_name_2"
      Region: !Ref AWS::Region
      Namespace: "BuildVariables"
      RunOrder: 1

关键说明

  • 必须用[]将环境变量对象包裹成数组,符合CodePipeline要求的JSON数组格式;
  • 确保JSON字符串内的字段名(name/type/value)为小写,与AWS规范一致;
  • 使用!Sub可直接引用CloudFormation参数CodeEnvironment,无需手动拼接字符串。

内容的提问来源于stack exchange,提问作者user12245915

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:45:26