由于安全组悬而未决,Elastic Beanstalk 部署失败

Elastic Beanstalk deployment failing because of a dangling security group

使用 Elastic Beanstalk 进行部署时,出现以下错误:

错误:配置验证异常:无效选项值:'sg-fdd33e89'(命名空间:'aws:autoscaling:launchconfiguration',选项名称:'SecurityGroups'):ID 为 'sg-fdd33e89'不存在。

可能相关的事情:

(已经解决了这个问题,但分享这个问题以防对其他人有帮助)

我找到了 Derya Sezen 的相关博客 post AWS Elastic Beanstalk the security group having id does not exist problem

  • 描述了一个案例,其中旧安全组从以前的环境继承到新环境(我可能也是这种情况)
  • 建议使用 AWS CLI 更新 EB 环境的安全组选项

我运行在博客post之后使用AWS CLI进行以下操作:

aws elasticbeanstalk update-environment --environment-name my-env-name --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=""

之后,EB更新了一段时间的环境,之后我就可以部署成功了。

如果您犯了和我一样的错误并终止了环境,您将无法使用 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 完全删除。终止后通常需要一个小时才能移除。

我在使用 EB web 控制台创建新环境时遇到了同样的错误。

以下是我为避免它所做的事情:

  • 确保您的 select 适合实例的 VPC/让您的实例位于适合的 VPC
  • 在网络中 ui,select 至少一个实例子网

您可以通过运行eb config删除有问题的部分。您将收到适用于您环境的可编辑配置,您可以在其中找到不存在的安全组并轻松将其删除。