使用 SourceConfiguration 时 Elastic Beanstalk 环境丢失
Elastic Beanstalk environment lost when using SourceConfiguration
我在 AWS 上使用 Codestar 创建了一个新的 WebApplication,它通常运行良好。我现在遇到的大问题是,我在 Beanstalk 的软件配置中设置的环境变量不会在部署之间持续存在。
我很快发现我可以在 template.yml
中使用 SourceConfiguration
来实现这一点,所以这就是我所做的:
- 部署我的应用程序
- 准备就绪后,我在软件配置中定义了所有变量并等待应用程序重新部署
- 前往
Actions
-> Save Configuration
,并成功保存所有内容
- 在我的 template.yml 中,我输入了新配置的名称并再次部署了应用程序
以上过程我第一次成功了。
然而,当我对配置进行更改时,将它们再次保存在一个新名称下,并使用 new SourceConfiguration 重新部署应用程序不使用我创建的最新配置并返回到之前的配置。
如果我在部署后手动加载保存的配置,它会成功恢复我设置的环境。
我是不是遗漏了一些非常明显的东西?
这是我编辑的 template.yml 以防我做错什么。
AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::CodeStar
Resources:
EBConfigurationTemplate:
Description: The AWS Elastic Beanstalk configuration template to be created for this project, which defines configuration settings used to deploy different versions of an application.
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
Properties:
ApplicationName: !Ref 'EBApplication'
Description: The name of the sample configuration template.
OptionSettings:
- Namespace: aws:elasticbeanstalk:environment
OptionName: EnvironmentType
Value: LoadBalanced
- Namespace: aws:elasticbeanstalk:environment
OptionName: ServiceRole
Value: !Ref 'EBTrustRole'
- Namespace: aws:elasticbeanstalk:healthreporting:system
OptionName: SystemType
Value: enhanced
SolutionStackName: !Ref 'SolutionStackName'
SourceConfiguration:
ApplicationName: !Ref 'EBApplication'
TemplateName: "my-saved-vars" <---- This is where i define my old configuration
您可以在源代码管理中使用 .ebextension 文件来指定部署应用程序时的配置选项。
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
原来我完全错了。
环境应该在管道配置和 template.yml
中设置,而不是 beanstalk 本身。
编辑示例:
AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::CodeStar
Parameters:
ApiPublicKey:
Type: String
Description: API Token
ApiUrl:
Type: String
Description: API Url
Resources:
EBConfigurationTemplate:
Description: The AWS Elastic Beanstalk configuration template to be created for this project, which defines configuration settings used to deploy different versions of an application.
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
Properties:
ApplicationName: !Ref 'EBApplication'
Description: The name of the sample configuration template.
OptionSettings:
- Namespace: aws:elasticbeanstalk:application:environment
OptionName: API_PUBLIC_KEY
Value: !Ref 'ApiPublicKey'
- Namespace: aws:elasticbeanstalk:application:environment
OptionName: API_URL
Value: !Ref 'ApiUrl'
我在 AWS 上使用 Codestar 创建了一个新的 WebApplication,它通常运行良好。我现在遇到的大问题是,我在 Beanstalk 的软件配置中设置的环境变量不会在部署之间持续存在。
我很快发现我可以在 template.yml
中使用 SourceConfiguration
来实现这一点,所以这就是我所做的:
- 部署我的应用程序
- 准备就绪后,我在软件配置中定义了所有变量并等待应用程序重新部署
- 前往
Actions
->Save Configuration
,并成功保存所有内容 - 在我的 template.yml 中,我输入了新配置的名称并再次部署了应用程序
以上过程我第一次成功了。
然而,当我对配置进行更改时,将它们再次保存在一个新名称下,并使用 new SourceConfiguration 重新部署应用程序不使用我创建的最新配置并返回到之前的配置。
如果我在部署后手动加载保存的配置,它会成功恢复我设置的环境。
我是不是遗漏了一些非常明显的东西?
这是我编辑的 template.yml 以防我做错什么。
AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::CodeStar
Resources:
EBConfigurationTemplate:
Description: The AWS Elastic Beanstalk configuration template to be created for this project, which defines configuration settings used to deploy different versions of an application.
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
Properties:
ApplicationName: !Ref 'EBApplication'
Description: The name of the sample configuration template.
OptionSettings:
- Namespace: aws:elasticbeanstalk:environment
OptionName: EnvironmentType
Value: LoadBalanced
- Namespace: aws:elasticbeanstalk:environment
OptionName: ServiceRole
Value: !Ref 'EBTrustRole'
- Namespace: aws:elasticbeanstalk:healthreporting:system
OptionName: SystemType
Value: enhanced
SolutionStackName: !Ref 'SolutionStackName'
SourceConfiguration:
ApplicationName: !Ref 'EBApplication'
TemplateName: "my-saved-vars" <---- This is where i define my old configuration
您可以在源代码管理中使用 .ebextension 文件来指定部署应用程序时的配置选项。
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html
原来我完全错了。
环境应该在管道配置和 template.yml
中设置,而不是 beanstalk 本身。
编辑示例:
AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::CodeStar
Parameters:
ApiPublicKey:
Type: String
Description: API Token
ApiUrl:
Type: String
Description: API Url
Resources:
EBConfigurationTemplate:
Description: The AWS Elastic Beanstalk configuration template to be created for this project, which defines configuration settings used to deploy different versions of an application.
Type: AWS::ElasticBeanstalk::ConfigurationTemplate
Properties:
ApplicationName: !Ref 'EBApplication'
Description: The name of the sample configuration template.
OptionSettings:
- Namespace: aws:elasticbeanstalk:application:environment
OptionName: API_PUBLIC_KEY
Value: !Ref 'ApiPublicKey'
- Namespace: aws:elasticbeanstalk:application:environment
OptionName: API_URL
Value: !Ref 'ApiUrl'