寻求基于CloudFormation部署带Application Load Balancer的Elastic Beanstalk实例资源
嘿,我来帮你梳理下用CloudFormation部署搭载Application Load Balancer(ALB)的Elastic Beanstalk实例的核心配置要点,不用再纠结那些Classic LB的老示例啦:
核心配置步骤
1. 强制指定ALB类型
这是最关键的一步,在Elastic Beanstalk环境的OptionSettings里,通过aws:elasticbeanstalk:environment:loadbalancer命名空间设置负载均衡器类型为application,替代默认的Classic LB:
- Namespace: aws:elasticbeanstalk:environment:loadbalancer OptionName: LoadBalancerType Value: application
2. 自定义ALB专属配置
如果需要调整ALB的监听规则、SSL证书、安全组等,可以通过以下命名空间配置:
- ALB基础设置:用
aws:elbv2:loadbalancer命名空间,比如指定安全组、负载均衡器类型(内部/互联网-facing) - 监听端口配置:用
aws:elbv2:listener:<端口号>命名空间,比如配置HTTPS监听、健康检查路径
3. 完整示例片段
下面是一个可参考的精简CloudFormation模板片段,涵盖了核心配置:
AWSTemplateFormatVersion: '2010-09-09' Resources: # 创建Elastic Beanstalk应用 MyEBApp: Type: AWS::ElasticBeanstalk::Application Properties: Description: 搭载ALB的Elastic Beanstalk应用 # 创建带ALB的Elastic Beanstalk环境 MyEBEnv: Type: AWS::ElasticBeanstalk::Environment Properties: ApplicationName: !Ref MyEBApp # 选择支持ALB的平台版本(Amazon Linux 2及以上都支持) SolutionStackName: "64bit Amazon Linux 2 v3.4.10 running Node.js 16" OptionSettings: # 指定ALB类型 - Namespace: aws:elasticbeanstalk:environment:loadbalancer OptionName: LoadBalancerType Value: application # 配置ALB安全组 - Namespace: aws:elbv2:loadbalancer OptionName: SecurityGroups Value: !Ref MyALBSecurityGroup # 开启HTTPS监听(443端口) - Namespace: aws:elbv2:listener:443 OptionName: ListenerEnabled Value: true - Namespace: aws:elbv2:listener:443 OptionName: Protocol Value: HTTPS - Namespace: aws:elbv2:listener:443 OptionName: SSLCertificateArns Value: arn:aws:acm:us-east-1:123456789012:certificate/your-cert-id # ALB安全组(示例,需根据实际需求调整规则) MyALBSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: ALB安全组 SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 443 ToPort: 443 CidrIp: 0.0.0.0/0
注意事项
- 确保选择的SolutionStackName是支持ALB的平台版本,Amazon Linux 2及后续的平台都默认支持ALB,避免选Amazon Linux AMI(旧版本)
- 执行CloudFormation的角色需要拥有创建Elastic Beanstalk环境、ALB、EC2安全组等资源的权限
- 如果需要VPC内部署,还需在
aws:ec2:vpc命名空间下配置VPC ID、子网等参数
内容的提问来源于stack exchange,提问作者Damien
相关产品推荐
相关产品推荐

