在使用Elastic Beanstalk进行部署时,我们得到了以下错误:
错误:配置验证异常:无效选项值:'sg-fdd33e89'(命名空间:'aws:autoscaling:launchconfiguration', OptionName: 'SecurityGroups'): id为'sg-fdd33e89'的安全组不存在
可能相关的事情:
- 我们在. ebeextensions 中为ELB定制了安全组设置
- 我们之前从一个旧的EB环境克隆了这个特定的EB环境,并且由于这个安全组而无法终止旧的环境。
(已经解决了这个问题,但是分享这个问题,以防它对其他人有帮助)
我找到了Derya Sezen的相关博客文章AWS Elastic Beanstalk安全组有id不存在的问题
- 描述了一种情况,旧的安全组从以前的环境被继承到新的环境(可能我也是这种情况)
- 建议使用AWS CLI 更新EB环境的安全组选项
我使用AWS CLI在博客文章之后运行以下命令:
aws elasticbeanstalk update-environment --environment-name my-env-name --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=SecurityGroups,Value=""
在那之后,EB更新了一段时间的环境,之后我能够成功部署。
执行eb config
命令可以删除问题部件。您将收到环境的可编辑配置,您可以在其中找到不存在的安全组并轻松删除它。
我在EB环境中使用的被删除的安全组的情况下得到了这个问题/答案。它有一个旧的平台,因此aws客户端无法获取/更改配置-并且也无法从控制台访问它。对我来说,创建一个与删除的安全组名称相同的安全组就足够了——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控制台创建新环境时遇到了同样的错误。
我是这样避免的:
- 确保为实例选择适当的VPC/将实例置于适当的VPC
- 在web界面中,至少选择一个实例子网