由于安全组悬空而导致 Elastic Beanstalk 部署失败
Posted
技术标签:
【中文标题】由于安全组悬空而导致 Elastic Beanstalk 部署失败【英文标题】:Elastic Beanstalk deployment failing because of a dangling security group 【发布时间】:2015-12-30 06:56:40 【问题描述】:使用 Elastic Beanstalk 进行部署时,我们收到以下错误:
错误:配置验证异常:无效的选项值:'sg-fdd33e89'(命名空间:'aws:autoscaling:launchconfiguration',选项名称:'SecurityGroups'):具有 id 'sg-fdd33e89' 的安全组确实不存在。
可能相关的事情:
我们在 .ebextensions 中为 ELB 提供了自定义安全组设置 我们之前从旧的 EB 环境中克隆了这个特定的 EB 环境,但由于这个安全组而无法终止旧环境。(已经解决了这个问题,但是分享这个问题以防它帮助其他人)
【问题讨论】:
我遇到了同样的错误,并首先由 Google 引导到这里,但我发现这个其他 SO 答案更适用于我,因为我确信我的安全组仍然存在(实际上是默认VPC安全组):***.com/questions/40671054/… 【参考方案1】:我发现了 Derya Sezen 的相关博文 AWS Elastic Beanstalk the security group having id does not exist problem
描述了一个案例,即旧环境中的旧安全组被继承到新环境(我可能也是这种情况) 建议使用 AWS CLI 更新 EB 环境的安全组选项我在博客文章之后使用 AWS CLI 运行以下命令:
aws elasticbeanstalk update-environment --environment-name my-env-name --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=""
之后,EB更新了一段时间的环境,之后我就可以成功部署了。
【讨论】:
【参考方案2】:您可以通过运行eb config
删除有问题的部分。您将收到环境的可编辑配置,您可以在其中找到不存在的安全组并轻松删除它。
【讨论】:
eb config
似乎不再是新 CLI 中的选项。你知道通过aws elasticbeanstalk
获取可编辑配置的新方法吗?【参考方案3】:
如果您犯了与我相同的错误并终止环境,则无法使用 AWS CLI 来解决此问题。
$ aws elasticbeanstalk update-environment --environment-name my-kick-ass-env --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=""
A client error (InvalidParameterValue) occurred when calling the UpdateEnvironment operation: No Environment found for EnvironmentName = 'my-kick-ass-env'.
唯一的解决方案是等到终止的环境被 AWS 完全删除。终止后通常需要一个小时才能删除。
【讨论】:
【参考方案4】:我在使用 EB Web 控制台创建新环境时遇到了同样的错误。
为了避免这种情况,我采取了以下措施:
确保为实例选择适当的 VPC/将您的实例放在适当的 VPC 中 在 Web ui 中,至少选择一个实例子网【讨论】:
以上是关于由于安全组悬空而导致 Elastic Beanstalk 部署失败的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk:将数据库安全组迁移到 VPC 安全组
限制对 Elastic Beanstalk 的 HTTP 访问
如何在 CloudFormation 模板中为 Elastic Beanstalk 启动配置指定安全组?
Aws Elastic Load Balancing 安全组不允许入站调用