Amazon web services 更改弹性beanstalk上的实例配置文件
我有一个运行默认实例配置文件的elastic beanstalkAmazon web services 更改弹性beanstalk上的实例配置文件,amazon-web-services,amazon-elastic-beanstalk,ebextensions,Amazon Web Services,Amazon Elastic Beanstalk,Ebextensions,我有一个运行默认实例配置文件的elastic beanstalkaws-elasticbeanstalk-ec2-role。该应用程序在安装过程中使用私有SSH密钥访问外部资源,这意味着我使用的是从S3复制内容 然而,出于各种原因,我需要更改实例配置文件,但我发现这非常困难,可能是因为我的代码依赖于实例配置文件,而且,通过AWS web控制台进行的配置更改似乎只有在配置更改启动新实例时成功部署应用程序时才会成功(更改实例配置文件会导致启动新实例,然后终止旧实例) 我认为关键问题在于我的.ebex
aws-elasticbeanstalk-ec2-role
。该应用程序在安装过程中使用私有SSH密钥访问外部资源,这意味着我使用的是从S3复制内容
然而,出于各种原因,我需要更改实例配置文件,但我发现这非常困难,可能是因为我的代码依赖于实例配置文件,而且,通过AWS web控制台进行的配置更改似乎只有在配置更改启动新实例时成功部署应用程序时才会成功(更改实例配置文件会导致启动新实例,然后终止旧实例)
我认为关键问题在于我的.ebextensions
文件引用了实例概要文件(aws-elasticbeanstalk-ec2-role
):
S3Auth:
水桶:
-
roleName:
? “Fn::GetOptions设置”
:
默认值:aws-elasticbeanstalk-ec2-role
命名空间:“aws:asg:launchconfiguration”
选项名称:IAMSInstanceProfile
类型:s3
如果我通过控制台更改实例配置文件,将启动一个新实例并部署我的应用程序,这将失败,因此将恢复配置更改。
如果我首先更改我的.ebextensions
以使用新角色,则部署该角色将失败,因为引用的实例配置文件与EB当前的配置文件不匹配。即使先部署(当然会失败),然后更改配置,似乎也不会使用新部署的(失败的)版本,但EB可能会退回到以前的版本,因此这似乎是一个第22条军规
我找到的解决办法是
$eb create-ip
这是可行的,但必须终止现有环境才能发布CNAMEs等,以便从头开始重新创建环境,这可能是非常不可取的
eb deploy
命令的一部分,例如通过.elasticbeanstalk/config.yml
指定实例配置文件.ebextensions
配置文件,该规则不直接引用要使用的实例配置文件(必须与EB的配置文件匹配!!),而是“使用当前实例配置文件”?.ebextensions
文件必须说明要使用哪个实例配置文件进行身份验证,而唯一可用的是EB实际持有的实例配置文件,这似乎有点多余S3Auth:
buckets:
- <my-bucket>
roleName:
? "Fn::GetOptionSetting"
:
DefaultValue: aws-elasticbeanstalk-ec2-role
Namespace: "aws:asg:launchconfiguration"
OptionName: IamInstanceProfile
type: s3