ElasticBeanstalk:从配置文件设置实例类型和安全组

ElasticBeanstalk:从配置文件设置实例类型和安全组

我无法通过.ebextensions/*.config应用程序包根目录中的文件定义实例类型和安全组。

简而言之,我有两个如下所示的配置文件:

.ebextensions/01-options.config

option_settings:
  [...]
  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: CONFIG_FILE_ONE
    value: '01-options.config'
  [...]

.ebextensions/02-app-test-env.config

option_settings:
  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: NODE_ENV
    value: 'Test'

  - namespace: 'aws:elasticbeanstalk:application:environment'
    option_name: CONFIG_FILE_TWO
    value: '02-app-test-env'

  - namespace: aws:autoscaling:launchconfiguration
    option_name: InstanceType
    value: t2.micro

  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: sg-ys75dfs2

现在,环境变量正在设置,所以我知道它正在读取两个配置文件,但是安全组和实例类型尚未设置 - 即使我重建环境,实例仍会像t1.micro默认安全组一样创建 - 我的设置没有被应用。

我这里遗漏了什么?如何使用.config文件定义实例类型?

答案1

您应该能够使用该配置文件中的内容作为启动配置命名空间,但是您需要在命名空间和值周围使用单引号,就像在前两个正常工作的文件中一样。

- namespace: 'aws:autoscaling:launchconfiguration'
  option_name: InstanceType
  value: 't2.micro'

- namespace: 'aws:autoscaling:launchconfiguration'
  option_name: SecurityGroups
  value: 'sg-ys75dfs2'

此外,如果使用 eb cli 3.x,请务必注意 eb 日志中的错误。希望有所帮助。

答案2

正如评论中提到的,如果配置文件中的设置也在环境级别设置,则会被忽略(并且的设置InstanceType自动创建环境层面)。

如果您希望将设置保留在配置文件中,则需要将其从环境中删除,可以使用InstanceType以下命令执行此操作:

aws elasticbeanstalk update-environment --environment-name my-env --options-to-remove Namespace=aws:autoscaling:launchconfiguration,OptionName=InstanceType

也可以看看AWS 文档了解更改环境级别设置的其他方法。

相关内容