无法在cloudformation中使用https设置我的弹性负载均衡器

问题描述 投票:0回答:3

我在启用 https 协议的情况下为 beanstalk 设置 cloudformation 时遇到问题。

这是我的配置设置:

 configurationTemplateUI:
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
DependsOn: BeanstalkAppUI
Properties:
  ApplicationName:
    Ref: BeanstalkAppUI
  Description: AWS ElasticBeanstalk Sample Configuration Template
  OptionSettings:
  - Namespace: aws:autoscaling:asg
    OptionName: MinSize
    Value:
      Ref: MinEc2s
  - Namespace: aws:autoscaling:asg
    OptionName: MaxSize
    Value:
      Ref: MaxEc2s
  - Namespace: aws:elasticbeanstalk:environment
    OptionName: EnvironmentType
    Value: LoadBalanced
  - Namespace: aws:autoscaling:launchconfiguration
    OptionName: InstanceType
    Value:
      Ref: InstanceType
  - Namespace: aws:ec2:vpc
    OptionName: VPCId
    Value:
      Fn::ImportValue: !Sub ${BusinessUnit}-${EnvironmentInfra}-vpc-VpcId
  - Namespace: aws:ec2:vpc
    OptionName: Subnets
    Value:
      Fn::ImportValue: !Sub ${BusinessUnit}-${EnvironmentInfra}-vpc-SubnetIdPrivate${SubnetAvNumber}
  - Namespace: aws:ec2:vpc
    OptionName: ELBSubnets
    Value:
      Fn::ImportValue: !Sub ${BusinessUnit}-${EnvironmentInfra}-vpc-SubnetIdPublic${SubnetAvNumber}
  SolutionStackName:
    Ref: BeanstalkPackInstallationUI

如你所见,我有很多价值观,当我运行它时,效果非常棒。我没有找到任何关于如何使用 https 设置 Elb 的选项。我可以在网络部分的 beanstalk 配置中手动在控制台中执行此操作。

有人能解释一下吗?云信息中可以吗?

amazon-web-services amazon-elastic-beanstalk aws-cloudformation aws-opsworks
3个回答
7
投票

我建议您查看 aws:elb:listener:listener_port 命名空间。

以下是我认为您可能会有所帮助的一些选项:

- Namespace: aws:elb:listener:443
  OptionName: ListenerProtocol
  Value: HTTPS
- Namespace: aws:elb:listener:443
  OptionName: InstancePort
  Value: 80
- Namespace: aws:elb:listener:443
  OptionName: InstanceProtocol
  Value: HTTP
- Namespace: aws:elb:listener:443
  OptionName: SSLCertificateId
  Value: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012

在此示例中,它将 ELB 配置为接受 HTTPS 请求并使用 ACM 证书

arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
为它们提供服务。 SSL 在 ELB 处终止,并使用标准 HTTP 执行与支持 EC2 实例的连接。

希望有帮助。

编辑

由于某种原因,CloudFormation Elastic Beanstalk 选项在较新的样式 aws:elb:listener:listener_port 选项中没有得到尊重,但提问者能够使用旧样式 aws:elb:loadbalancer 选项

获得成功
- Namespace: aws:elb:loadbalancer
  OptionName: LoadBalancerHTTPPort
  Value: '80'
- Namespace: aws:elb:loadbalancer
  OptionName: LoadBalancerHTTPSPort
  Value: '443'
- Namespace: aws:elb:loadbalancer
  OptionName: SSLCertificateId
  Value: arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012

3
投票

我相信应用程序负载均衡器的设置是:

        - 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/12345678-1234-1234-1234-123456789012

0
投票

尽管 AWS 文档 指出

ListenerEnabled
默认为 true,但为自定义端口显式设置它至关重要。这是使用 Terraform AWS CDK 配置它的关键步骤。

from cdktf_cdktf_provider_aws.elastic_beanstalk_environment import 
 ElasticBeanstalkEnvironmentSetting

ElasticBeanstalkEnvironmentSetting(
    namespace="aws:elbv2:listener:443",
    name="ListenerEnabled",
    value="true",
    resource="AWSEBV2LoadBalancer",
),
ElasticBeanstalkEnvironmentSetting(
    namespace="aws:elbv2:listener:443",
    name="Protocol",
    value="HTTPS",
    resource="AWSEBV2LoadBalancer",
),
ElasticBeanstalkEnvironmentSetting(
    namespace="aws:elbv2:listener:443",
    name="SSLCertificateArns",
    value=ACM_CERTIFICATE_ARN,
    resource="AWSEBV2LoadBalancer",
),
© www.soinside.com 2019 - 2024. All rights reserved.