Как установить переменную среды для AWS CDK с Elastic Beanstalk? - PullRequest
1 голос
/ 08 октября 2019

Я бы хотел установить переменную среды, доступную в моем приложении Nodejs, которое развернуто на Elastic Beanstalk с использованием AWS CDK. Я попытался добавить его к параметрам Environment, но развертывание застряло на несколько минут, пока я не отменил обновление стека вручную.

Вот как я пытался добавить переменную среды в соответствии с документы из AWS :

      {
        namespace: 'aws:elasticbeanstalk:application:environment',
        optionName: 'CORS_ALLOW_ORIGIN',
        value:
          'http://my-frontend.s3-website.eu-central-1.amazonaws.com'
      }

Я также попытался добавить значение, используя 'http...' и '"http ...", но безуспешно.

Вот полный сценарий:

#!/usr/bin/env node
import cdk = require('@aws-cdk/core');
import ebs = require('@aws-cdk/aws-elasticbeanstalk');

export class MyPrototype extends cdk.Stack {
  public constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const appName = 'MyPrototypeApp';
    const platform = this.node.tryGetContext('platform');

    const app = new ebs.CfnApplication(this, 'Application', {
      applicationName: appName
    });

    const options: ebs.CfnEnvironment.OptionSettingProperty[] = [
      {
        namespace: 'aws:autoscaling:launchconfiguration',
        optionName: 'IamInstanceProfile',
        value: 'aws-elasticbeanstalk-ec2-role'
      },
      {
        namespace: 'aws:elasticbeanstalk:container:nodejs',
        optionName: 'NodeVersion',
        value: '10.15.0'
      },
      {
        namespace: 'aws:elasticbeanstalk:application:environment',
        optionName: 'CORS_ALLOW_ORIGIN',
        value:
          'http://my-frontend.s3-website.eu-central-1.amazonaws.com'
      }
    ];

    new ebs.CfnEnvironment(this, 'Environment', {
      environmentName: 'MyPrototypeEnvironment',
      applicationName: app.applicationName || appName,
      platformArn: platform,
      optionSettings: options
    });
  }
}

const app = new cdk.App();

new MyPrototype(app, 'ElasticBeanstalk');

app.synth();
...