使用 SourceConfiguration 时 Elastic Beanstalk 环境丢失

Elastic Beanstalk environment lost when using SourceConfiguration

我在 AWS 上使用 Codestar 创建了一个新的 WebApplication,它通常运行良好。我现在遇到的大问题是,我在 Beanstalk 的软件配置中设置的环境变量不会在部署之间持续存在。

我很快发现我可以在 template.yml 中使用 SourceConfiguration 来实现这一点,所以这就是我所做的:

  1. 部署我的应用程序
  2. 准备就绪后,我在软件配置中定义了所有变量并等待应用程序重新部署
  3. 前往 Actions -> Save Configuration,并成功保存所有内容
  4. 在我的 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'