在 Elastic Beanstalk 中,如何使用 .ebextensions 将现有安全组设置为负载均衡器?

Posted

技术标签:

【中文标题】在 Elastic Beanstalk 中,如何使用 .ebextensions 将现有安全组设置为负载均衡器?【英文标题】:In Elastic Beanstalk, how to set existing security group to load balancer with .ebextensions? 【发布时间】:2016-10-08 15:01:36 【问题描述】:

我正在尝试使用.ebextensions 在我的 Elastic Beanstalk 应用程序中为 ELB 设置现有安全组。

出于某种原因,.configs 喜欢

option_settings:
  aws:elb:loadbalancer:
    SecurityGroups: sg-abcd1234

似乎什么也没做。另外,由于现有的 SG 是严格定义的,我不想使用 ManagedSecurityGroup,因为这会修改现有的 SG。

任何想法如何实现这一目标?非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

您可以使用 SecurityGroups 选项设置为您的 ELB 指定自己的安全组,beantalk 会将您的 ELB 与该安全组相关联。此外,beantalk 将创建一个新的安全组,允许在该新安全组上的 HTTP 端口 80 上进出。 Beanstalk 不会修改您在上面的选项设置中指定的安全组。

当你说它似乎没有做任何事情时,你的意思是它没有连接到 ELB?除了新的安全组之外,它还应该附加到 ELB。您能否通过在 ELB 控制台中检查与您的 ELB 关联的安全组来确认。

如果您不希望 beanstalk 创建新的安全组,那么您也可以指定该安全组管理的安全组选项设置,但这会更新您的安全组并提供从该安全组到您的 EC2 安全组的入口.

如果您不希望修改安全组,则可以使用选项设置。它将创建一个新的安全组并将新的安全组和您的安全组都附加到 ELB。如果您可以解释您在使用此设置时遇到的具体问题,那么我可以解释更多。

【讨论】:

就像我说的,我需要的是一种在环境构建时自动设置安全组的方法,而不是手动抚摸控制台,所以这不是解决方案。此外,SG on EB deploy 仅适用于服务器,不适用于 ELB 本身。我也知道,如果我手动设置 SG,它不会被修改,这就是我提到 ManagedSecurityGroup 的原因,如果你提供 .ebextensions,它将被修改(根据文档)。 因此,如果您提供自己的安全组并且不希望对其进行修改,那么目前 beanstalk 将始终在您的安全组之外创建一个新的安全组并将其与 ELB 关联。到目前为止,这基本上是两种选择。【参考方案2】:

问题是 Application Load Balancer aws:elbv2 的命名空间(不同于 Elastic Load Balancer 经典 aws:elb

http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/environments-cfg-applicationloadbalancer.html

这在 ALB 中有效

option_settings:
  - namespace:  aws:elbv2:loadbalancer
    option_name:  ManagedSecurityGroup
    value:  sg-XXXXXXXX
  - namespace:  aws:elbv2:loadbalancer
    option_name:  SecurityGroups
    value:  sg-XXXXXXXX

【讨论】:

以上是关于在 Elastic Beanstalk 中,如何使用 .ebextensions 将现有安全组设置为负载均衡器?的主要内容,如果未能解决你的问题,请参考以下文章

无法使 HTTPS 在 CloudFront 和 Elastic BeanStalk 之间工作

使用 eb-cli 创建单实例 Elastic Beanstalk 应用程序

如何在 elastic-beanstalk 中应用 ruby​​ 版本补丁

如何在 AWS elastic-beanstalk 中更改我的 python 版本

Elastic Beanstalk设置配置选项

限制从 API Gateway(客户端证书)访问 Elastic Beanstalk