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

基于AWS CodePipeline的部署回滚最佳机制咨询:S3源一键无干预方案

AWS CodePipeline Rollback: Manual Steps & Automated Best Practices (For S3 Sources)

Great questions—rollbacks are one of those critical operations you hope you never need, but must have nailed down when you do. Let’s cover both your questions, with a focus on S3-specific workflows since that’s your source.


1. How to Manually Roll Back a CodePipeline Build

If you need to revert to a previous successful deployment, here's the straightforward step-by-step:

  • Navigate to your CodePipeline in the AWS Console, and head to the Execution history tab.
  • Locate the specific pipeline execution you want to roll back to (look for a "Succeeded" status—this marks the working state you want to restore).
  • Click on the execution ID to open its details page.
  • Hit the Release change button. This will re-run that exact historical execution, using the S3 source version that was active at the time of that run.
  • Note: If your pipeline has approval stages, you’ll need to sign off on those again to complete the rollback.

2. Best Rollback Mechanisms for CodePipeline (Including One-Click/No Manual Intervention)

Since your source is an S3 bucket, enabling S3 Versioning is non-negotiable first—this preserves every version of your deployment assets, so you can always revert to a prior state. With that in place, here are the best options:

Automated Rollbacks (No Manual Intervention)

These are ideal for critical systems where you need to recover quickly without human input:

  • Leverage AWS CodeDeploy’s Built-In Auto-Rollback (if your pipeline uses CodeDeploy for deployment):
    • In your CodeDeploy deployment group, configure Automatic rollback triggers. You can set rules like:
      • Roll back if the deployment failure rate exceeds a threshold (e.g., 5%)
      • Roll back if a CloudWatch Alarm triggers (e.g., sudden spike in HTTP 5xx errors, high CPU usage post-deployment)
    • When the trigger fires, CodeDeploy automatically reverts to the last successful deployment, and CodePipeline will update its status to reflect the rollback. No manual steps needed.
  • Custom Lambda-Driven Auto-Rollback (for non-CodeDeploy pipelines):
    • Add an Invoke Lambda stage right after your deployment stage in CodePipeline. This Lambda will run post-deployment health checks:
      • Example checks: Call your API endpoints to verify 200 OK responses, query CloudWatch metrics for error rates, or check application logs for critical errors.
      • If the Lambda detects a failure, it can programmatically trigger a rollback by:
        1. Fetching the ID of the last successful pipeline execution from CodePipeline’s API.
        2. Starting a new pipeline execution using that historical run’s S3 source version (you can retrieve the S3 version ID from the execution details).
    • You can wrap this logic into a reusable Lambda so it works across all your pipelines.

One-Click Manual Rollback (Minimal Human Effort)

If you prefer a manual trigger but want a "one-click" experience:

  • Create a simple Lambda function that automatically finds the last successful pipeline execution and starts a new run with that version.
  • You can expose this function via:
    • A custom button in the AWS Console (using AWS CloudFormation or Console Customization)
    • An AWS CLI command (example below)
    • A Slack/Teams bot command for even easier access
  • Example CLI command to trigger a rollback to the last successful S3 version:
    # First, get the last successful execution's source revision S3 version ID
    LAST_SUCCESSFUL_EXEC=$(aws codepipeline list-pipeline-executions --name MyPipeline --query 'pipelineExecutions[?status==`Succeeded`][0].pipelineExecutionId' --output text)
    S3_VERSION_ID=$(aws codepipeline get-pipeline-execution --pipeline-name MyPipeline --pipeline-execution-id $LAST_SUCCESSFUL_EXEC --query 'pipelineExecution.sourceRevisions[0].revisionId' --output text)
    
    # Trigger the rollback
    aws codepipeline start-pipeline-execution --name MyPipeline --source-revisions repositoryName=MyS3Bucket,commitId=$S3_VERSION_ID
    

Key Best Practices to Remember

  • Always enable S3 Versioning: Without it, you can’t recover deleted or overwritten assets—this is the foundation of any reliable rollback workflow.
  • Test your rollback process: Don’t wait for an outage to find out your rollback doesn’t work. Run regular tests in a staging environment.
  • Add health checks early: Catch issues before they reach production by adding pre-deployment validation stages (e.g., linting, unit tests) and post-deployment health checks.

内容的提问来源于stack exchange,提问作者S. Govindankutty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:47:27