我想设置一个在使用 AWS CDK 部署到 Elastic Beanstalk 的 Nodejs 应用程序中可用的环境变量。我尝试将其添加到环境
选项中,但部署卡住了几分钟,直到我手动取消堆栈更新。
这是我尝试添加环境变量的方法,根据 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();
最佳答案
不知道为什么失败,因为这是在 optionSettings 中设置环境变量的方式,使用“aws:elasticbeanstalk:application:environment”作为命名空间(您也可以添加多个具有相同名称的命名空间)
关于node.js - 如何使用 Elastic Beanstalk 设置 AWS CDK 的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58282423/