如何在AWS CDK CodePipelines中添加生产部署前的手动审批阶段
实现方案
在AWS CDK Pipelines中内置了ManualApprovalStep组件,可直接用于在Stage执行前/后插入手动审批节点,无需手动在控制台配置,修改代码如下:
1. 导入依赖
在原有代码的导入部分新增ManualApprovalStep的引入:
import { CodePipeline, ShellStep, CodePipelineSource, ManualApprovalStep // 新增手动审批步骤导入 } from '@aws-cdk/pipelines';
2. 调整生产流水线Stage配置
修改生产流水线添加ApplicationStage的逻辑,通过pre参数在Stage执行前注入审批步骤:
prodPipeline.addStage(new ApplicationStage(this, 'Production'), { // 部署到生产前执行的前置步骤 pre: [ new ManualApprovalStep('ProdDeploymentApproval', { // 审批提示信息,会展示在CodePipeline控制台的审批弹窗中 comment: '请确认预发环境验证已通过,允许发布到生产环境', // 可选配置:审批通知邮件地址,流水线到该步骤时会自动发邮件通知 notifyEmails: ['devops@yourcompany.com', 'release-manager@yourcompany.com'] }) ] });
可选扩展配置
如果需要限制仅特定角色/用户可执行审批,可以在CDK中为审批步骤附加IAM权限限制,示例如下:
import * as iam from '@aws-cdk/aws-iam'; const approvalStep = new ManualApprovalStep('ProdDeploymentApproval', { comment: '生产发布审批' }); // 仅允许指定IAM角色拥有审批权限 approvalStep.addToRolePolicy(new iam.PolicyStatement({ effect: iam.Effect.DENY, actions: ['codepipeline:PutApprovalResult'], notPrincipals: [new iam.ArnPrincipal('arn:aws:iam::ACCOUNT_ID:role/ReleaseApprovalRole')] }))
注意事项
- 修改完成后执行
cdk deploy ProductionCDKPipeline更新流水线配置即可生效 - 审批节点触发后,流水线会暂停执行,直到有权限的用户在CodePipeline控制台选择批准或拒绝
- 拒绝审批后流水线会直接终止,不会执行后续的生产部署步骤
内容的提问来源于stack exchange,提问作者gameFrenzy07
相关产品推荐
相关产品推荐

