更改弹性豆茎上的实例配置文件

时间:2017-04-26 06:56:13

标签: amazon-web-services elastic-beanstalk amazon-elastic-beanstalk ebextensions

我使用默认实例配置文件aws-elasticbeanstalk-ec2-role运行弹性beanstalk。应用程序在安装过程中使用私有SSH密钥访问外部资源,这意味着我使用.ebextensions config file从S3复制内容。

但是,出于各种原因,我需要更改实例配置文件,但我发现这非常困难,可能是因为我的代码依赖于实例配置文件,并且似乎就像配置更改一样只有在配置更改启动新实例时成功部署应用程序时,AWS Web控制台才会成功(更改实例配置文件会导致启动新实例,然后终止旧实例)。

我认为关键问题是我的.ebextensions文件引用了实例配置文件(aws-elasticbeanstalk-ec2-role):

S3Auth: 
  buckets: 
    - <my-bucket>
  roleName: 
    ? "Fn::GetOptionSetting"
    : 
      DefaultValue: aws-elasticbeanstalk-ec2-role
      Namespace: "aws:asg:launchconfiguration"
      OptionName: IamInstanceProfile
  type: s3

如果我通过控制台更改实例配置文件,则会启动一个新实例并部署我的应用程序,这将失败,因此将恢复配置更改。 如果我首先更改.ebextensions以使用新角色,则部署该角色将失败,因为引用的实例配置文件与EB当前具有的不匹配。即使首先部署(当然会失败)和然后更改配置,似乎不会使用新部署(失败)版本,但EB可能会回退到以前的版本 - 所以这看起来像是一个捕获22场景。

我找到的解决方案是

  1. 从头开始创建新环境,并使用
  2. 从头开始指定实例配置文件

    $ eb create -ip <instance profile>

    这很有效,但是不得不终止现有环境来发布CNAME等,以便从头开始重新创建环境。

    1. 将没有依赖关系的虚拟Hello World应用程序部署到实例配置文件,然后在Web控制台中更改实例配置文件,然后使用新实例配置文件部署实际应用程序。
    2. 现在,我的问题。

      1. 由于问题似乎是实例配置文件更改并且应用程序更改需要以原子方式完成,是否有办法将实例配置文件更改为eb deploy命令的一部分,例如通过.elasticbeanstalk/config.yml指定实例配置文件?

      2. 有没有办法创建一个带有S3身份验证规则的.ebextensions配置文件,该规则不会直接引用要使用的实例配置文件(必须与EB所拥有的匹配! ),而是&#34;使用当前的实例配置文件&#34;?似乎有点多余.ebextensions文件必须说明要进行身份验证的实例配置文件,当唯一可用的是EB实际持有的那个?

      3. 还有其他解决这个问题的方法吗?

0 个答案:

没有答案