如何使用 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 将现有安全组设置为负载均衡器?