1

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

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

  1. 部署了我的应用
  2. 准备就绪后,我在软件配置中定义了所有变量并等待应用重新部署
  3. 转到Actions-> Save Configuration,并成功保存了所有内容
  4. 在我的 template.yml 中,我输入了新配置的名称并再次部署了应用程序

上面的过程在我第一次做的时候就奏效了。

但是,当我对配置进行更改时,以新名称再次保存它们,并使用的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
4

2 回答 2

0

在部署应用程序时,您可以使用源代码控制中的 .ebextension 文件来指定配置选项。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html

于 2019-06-11T23:16:12.050 回答
0

原来我在这一切上完全错了。

环境应该在管道配置中设置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'
于 2019-06-19T11:20:11.770 回答