如何使用 Elastic Beanstalk 为 AWS CDK 设置环境变量?

Posted

技术标签:

【中文标题】如何使用 Elastic Beanstalk 为 AWS CDK 设置环境变量?【英文标题】:How to set environment variable for AWS CDK with Elastic Beanstalk? 【发布时间】:2020-02-05 12:12:45 【问题描述】:

我想设置一个在我的 Nodejs 应用程序中可用的环境变量,该应用程序使用 AWS CDK 部署到 Elastic Beanstalk。我尝试将其添加到 Environment 选项中,但部署卡住了几分钟,直到我手动取消堆栈更新。

根据docs from 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();

【问题讨论】:

还没有答案吗? 【参考方案1】:

不知道为什么会失败,因为这是在 optionSettings 中设置 env 变量的方式,使用 'aws:elasticbeanstalk:application:environment' 作为命名空间(您也可以添加多个同名命名空间)

【讨论】:

'aws:elasticbeanstalk:application:environment' 也为我工作。

以上是关于如何使用 Elastic Beanstalk 为 AWS CDK 设置环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Elastic Beanstalk 为 AWS CDK 设置环境变量?

如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?

AWS Elastic beanstalk:使用 docker 镜像时如何设置 ulimit

在 Elastic Beanstalk 中,如何使用 .ebextensions 将现有安全组设置为负载均衡器?

如何在 Elastic Beanstalk 上为特定容器设置文件夹权限

如何使用 Elastic Beanstalk 创建“tmp”目录?