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

如何通过CloudFormation整合.ebextensions实现Elastic Beanstalk HTTP转HTTPS

解决Elastic Beanstalk环境HTTP转HTTPS重定向的CloudFormation整合方案

核心思路

EB的CloudFormation原生资源确实不支持直接配置监器重定向,但可以通过把.ebextensions配置打包进应用版本,让EB环境在创建时自动加载执行这个配置——.ebextensions能自动关联当前EB环境的负载均衡器资源,不需要手动处理ARN的问题。

步骤1:编写.ebextensions重定向配置

在项目根目录创建.ebextensions文件夹,里面新建01-http-to-https.config文件,内容如下(针对应用负载均衡器):

Resources:
  AWSEBV2LoadBalancerListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    Properties:
      LoadBalancerArn:
        Ref: AWSEBV2LoadBalancer
      Port: 80
      Protocol: HTTP
      DefaultActions:
        - Type: redirect
          RedirectConfig:
            Protocol: HTTPS
            Port: '443'
            Host: '#{host}'
            Path: '/#{path}'
            Query: '#{query}'
            StatusCode: HTTP_302

注:如果使用经典负载均衡器,需要替换为对应经典LB的监听器配置逻辑。

步骤2:打包应用版本

把你的应用代码(比如后端服务、静态文件)和.ebextensions文件夹一起打包成ZIP包,确保.ebextensions在ZIP的根目录(不能嵌套在子文件夹里)。然后将这个ZIP上传到你的S3存储桶。

步骤3:在CloudFormation模板中整合

更新你的CloudFormation模板,添加AWS::ElasticBeanstalk::ApplicationVersion资源,并在环境资源中引用它:

Resources:
  # 假设已存在的EB应用资源
  MyEBApplication:
    Type: AWS::ElasticBeanstalk::Application
    Properties:
      ApplicationName: MyApp

  # 新增应用版本,指向S3中打包好的文件
  MyEBAppVersion:
    Type: AWS::ElasticBeanstalk::ApplicationVersion
    Properties:
      ApplicationName: !Ref MyEBApplication
      SourceBundle:
        S3Bucket: your-s3-bucket-name
        S3Key: path/to/your/app-with-ebextensions.zip

  # EB环境引用该应用版本
  MyEBEnvironment:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      ApplicationName: !Ref MyEBApplication
      VersionLabel: !Ref MyEBAppVersion
      # 你的其他环境配置(平台、实例类型等)
      SolutionStackName: "64bit Amazon Linux 2 v3.4.9 running Node.js 16"
      OptionSettings:
        # 配置HTTPS监听器的ACM证书
        - Namespace: aws:elbv2:listener:443
          OptionName: SSLCertificateArns
          Value: arn:aws:acm:us-east-1:123456789012:certificate/your-cert-arn
        - Namespace: aws:elbv2:listener:443
          OptionName: Protocol
          Value: HTTPS

关键注意事项

  • 确保EB环境的负载均衡器类型为应用负载均衡器,经典LB的重定向配置逻辑不同,需调整.ebextensions中的资源类型。
  • 提前在ACM申请并验证SSL证书,并在环境的OptionSettings中配置443端口的证书。
  • 打包ZIP时,.ebextensions文件夹必须在根目录,EB才会识别并执行里面的配置。
  • 若已有环境,更新模板重新部署时,需确保应用版本是新的(修改VersionLabel或替换S3中的ZIP)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:28