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

AWS Beanstalk环境重建后CloudFormation更新失败求助

Fixing AWS Beanstalk + CloudFormation Issues After Accidental Rebuild Environment

Let’s work through each of your problems step by step to get your Rails app back on track—this messy situation is totally recoverable:

1. Fix CloudFormation Stack and Environment Drift First

When you clicked Rebuild Environment in the console, you created a mismatch between your CloudFormation stack's desired configuration and the actual environment state (drift). This is why your update-stack commands are failing—CloudFormation can’t reconcile the conflicting settings.

Resolve the drift first:

  • Head to the CloudFormation console, find your stack, and check the Drift Detection tab to see exactly which resources (like SQS, load balancer) are out of sync.
  • Use the CLI to get a detailed drift report:
    aws cloudformation detect-stack-drift --stack-name YOUR_STACK_NAME
    
  • Then force the stack to align with your template using:
    aws cloudformation update-stack --stack-name YOUR_STACK_NAME --template-body file://your-template.yml --parameters YOUR_PARAMETERS --override-existing-template
    
  • If drift is severe, consider spinning up a temporary stack with your updated template, verifying it works, then migrating your app to it (a last-resort option).

2. Resolve Bundler and Ruby Version Conflicts

Your deployment failures come from two version mismatches:

a. Bundler Version Gap

The Beanstalk environment uses Bundler 1.16.0, but your Gemfile.lock requires 1.17.3. Fix this by adding a Beanstalk config file:
Create .ebextensions/bundler.config with:

commands:
  update_bundler:
    command: "gem install bundler -v 1.17.3"

Commit this file to your codebase so it deploys with your next update.

b. Ruby Version Mismatch

Your Gemfile specifies Ruby 2.6.5, but your environment is set to 2.6.6. Pick one of these fixes:

  • Update your Gemfile to match the environment:
    ruby '2.6.6'
    
    Run bundle update locally to regenerate Gemfile.lock, commit both files, and redeploy.
  • Or, adjust your CloudFormation template to use a Beanstalk platform version tied to Ruby 2.6.5 (though this defeats your original upgrade goal).

Double-check your CloudFormation template uses the correct platform ARN for Ruby 2.6.6 on Amazon Linux 2—something like arn:aws:elasticbeanstalk:us-east-1::platform/Ruby 2.6 running on 64bit Amazon Linux 2/2.11.7 (adjust the region as needed).

3. Fix ElasticSearch Environment Variable

The old ELASTICSEARCH_HOST persists because the rebuild didn’t pull the new value from your CloudFormation template. Fix this:

  • Verify your template includes the correct variable in the Beanstalk environment settings:
    Resources:
      YourBeanstalkEnv:
        Type: AWS::ElasticBeanstalk::Environment
        Properties:
          # Other properties...
          OptionSettings:
            - Namespace: aws:elasticbeanstalk:application:environment
              OptionName: ELASTICSEARCH_HOST
              Value: YOUR_NEW_ES_INSTANCE_ADDRESS
    
  • Re-run the update-stack command with the override flag (from step 1) to force the environment variable update.
  • As a temporary fix, manually set the variable via the Beanstalk console (Configuration > Software > Environment Properties), then re-run the CF update to make it permanent.

4. Force CloudFormation to Apply Changes

If all else fails:

  1. Delete or recreate drifted resources to match your template (start with non-critical ones like test SQS queues).
  2. Run the update command with a flag to bypass empty changeset errors:
    aws cloudformation update-stack --stack-name YOUR_STACK_NAME --template-body file://your-template.yml --parameters YOUR_PARAMETERS --no-fail-on-empty-changeset
    
  3. If the deployment hook still fails, SSH into a Beanstalk instance, manually run gem install bundler -v 1.17.3 and bundle install to resolve the Bundler issue temporarily, then retrigger the CF update.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:42:46