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

如何通过AWS CodeDeploy部署成功触发事件启动另一CodeDeploy应用

实现生产CodeDeploy部署触发Staging环境部署的方案

整体流程

当生产环境CodeDeploy完成指定事件(如部署成功)时,触发SNS主题;通过Lambda函数监听该主题,提取部署制品信息,再调用CodeDeploy API启动Staging环境的部署。

具体配置步骤

1. 给生产CodeDeploy部署组添加SNS触发器

  • 进入AWS CodeDeploy控制台,打开你的生产环境CodeDeploy应用
  • 进入对应部署组的「触发器」标签页,点击「创建触发器」:
    • 设置触发器名称(如prod-deploy-success-trigger)
    • 选择触发事件(推荐选Deployment successful,确保生产部署正常后再同步到Staging)
    • 选择或新建一个SNS主题(如prod-deploy-success-topic),后续Lambda将监听这个主题

2. 创建监听SNS主题的Lambda函数

  • 打开AWS Lambda控制台,新建函数:
    • 选择「从头开始创作」,设置函数名(如trigger-staging-deploy),运行时选Python 3.x(或你熟悉的语言)
    • 编写函数逻辑:解析SNS消息中的制品信息,调用CodeDeploy API启动Staging部署
    • 示例Python代码:
      import boto3
      import json
      
      codedeploy = boto3.client('codedeploy')
      
      def lambda_handler(event, context):
          # 解析SNS推送的部署消息
          sns_msg = json.loads(event['Records'][0]['Sns']['Message'])
          # 提取生产部署的制品S3信息
          s3_info = sns_msg['deploymentInfo']['revision']['revisionLocation']['s3Location']
          
          # 触发Staging环境部署
          codedeploy.create_deployment(
              applicationName='你的Staging CodeDeploy应用名',
              deploymentGroupName='你的Staging部署组名',
              revision={
                  'revisionType': 'S3',
                  's3Location': {
                      'bucket': s3_info['bucket'],
                      'key': s3_info['key'],
                      'bundleType': 'zip' # 根据你的制品类型调整,如tar
                  }
              }
          )
          return {'statusCode': 200, 'body': 'Staging部署已触发'}
      
    • 配置Lambda权限:
      • 给Lambda执行角色添加内联策略,允许调用CodeDeploy的CreateDeployment接口:
        {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": "codedeploy:CreateDeployment",
                    "Resource": "arn:aws:codedeploy:你的区域:你的账号ID:deploymentgroup:你的Staging应用名/你的Staging部署组名"
                }
            ]
        }
        
      • 回到之前创建的SNS主题,添加订阅:选择「Lambda函数」,指定刚创建的Lambda函数

3. 配置Staging环境CodeDeploy

  • 确保Staging的CodeDeploy应用、部署组已配置完成,EC2实例镜像生产环境的配置(实例类型、安全组、IAM角色等)
  • 确认Staging的EC2实例已安装CodeDeploy代理,并关联到对应部署组

4. 测试流程

  • 触发一次生产环境的CodeDeploy部署,等待部署成功
  • 检查Lambda函数执行日志,确认Staging部署已触发
  • 验证Staging的EC2实例是否成功部署相同制品

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:28:23