我无法通过.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 文档了解更改环境级别设置的其他方法。