从Azure迁移至AWS如何在CodePipeline中配置用户参数供CodeBuild使用
AWS CodePipeline 运行时参数输入实现方案
你没有遗漏相关功能,AWS CodePipeline原生确实没有提供类似Azure DevOps YAML中直接定义运行时交互式参数输入的能力,以下是两种可直接落地的实现方案:
方案1:触发流水线时传入自定义变量(最简便)
该方案适用于仅需要在流水线启动前指定参数的场景:
- 先在CodePipeline的「设置」-「变量」页面提前声明你需要的自定义变量,比如
hello - 触发流水线时可直接传入变量值:
- 控制台触发:点击「运行管道」后,在弹出的变量配置框中直接填写
hello对应的值即可 - CLI触发:运行以下命令传入参数:
aws codepipeline start-pipeline-execution --name <你的流水线名称> --variables name=hello,value="<自定义输入值>"
- 控制台触发:点击「运行管道」后,在弹出的变量配置框中直接填写
- 关联CodeBuild项目时,只需在CodePipeline的CodeBuild阶段配置中,将流水线变量映射为CodeBuild的环境变量:给CodeBuild新增环境变量,值填写
#{hello},CodeBuild运行时就可以直接读取该输入值使用。
方案2:流水线运行中途新增参数输入环节
该方案适用于需要流水线执行到特定阶段后,再由用户输入参数的场景:
- 在需要用户输入参数的节点新增一个手动审批阶段
- 提前编写一个轻量Lambda函数,功能为读取用户在审批备注中填写的参数,将提取到的值写入当前CodePipeline的执行变量中
- 配置手动审批阶段关联上述Lambda函数,约定参数填写格式为
hello=xxx - 流水线运行到审批阶段时,用户填写对应参数后提交审批,Lambda会自动提取参数值存入流水线变量,后续的CodeBuild阶段可直接读取该值使用。
如果你们团队采用CDK、Terraform等基础设施即代码工具定义流水线,上述两种方案都可以写入配置文件复用,和Azure DevOps的YAML配置体验差异不大。
内容的提问来源于stack exchange,提问作者vdvaxel
相关产品推荐
相关产品推荐

