如何在AWS CDK的输入区域部署弹性搜索集群



我想在input中提供的区域中部署一个es集群。我能够使用cdk部署es。下面是我使用的代码,

import cdk = require('@aws-cdk/core');
import {CfnDomain} from '@aws-cdk/aws-elasticsearch';
export class RegionalInfraCreation extends cdk.Construct {
constructor(scope: cdk.Construct, id: string) {
super(scope, id);
let globalTableName = 'regional_infra'
let region = 'eu-west-1'
let profileName = 'default'
// es cluster 
// @ts-ignore
const elasticsearchDomain = new CfnDomain(this,
'ElasticsearchDomain',
{
accessPolicies: {
Version: '2012-10-17',
Statement: [
{
Effect: 'Allow',
Principal: {
AWS: '*',
},
Action: 'es:*',
Resource: "arn:aws:es:*:*:domain/*/*",
},
],
},
ebsOptions: {
ebsEnabled: true,
volumeSize: 10,
volumeType: 'standard',
},
elasticsearchClusterConfig: {
instanceCount: 1,
instanceType: 't2.medium.elasticsearch',
},
domainName: 'test-cluster',
elasticsearchVersion: '7.4',
}
);
console.log('logical id es')
console.log(elasticsearchDomain.logicalId)
}
}

现在使用它,我可以在单个区域部署es集群(比如us-east-1(。现在我想对此进行输入,以便在不同的区域部署集群(eu-west-1(。我如何像在其他服务中一样更新弹性搜索区域,以及如何为创建的资源获取逻辑id。我不想在不同的区域创建堆栈,我想在发电机中出现下面这样的东西,即更新区域,

const dynamodb = new Dynamodb({
region: region
});

CDK生成一个CFn模板,需要将其部署到特定区域。如果目的是切换/更改部署CFn脚本的目标区域,以在CDK脚本中创建ES,则没有这种方法。

CDK部署绑定到创建AWS资源的特定区域CDK_DEFAULT_region。

CDK环境

AWS CDK应用程序中的每个Stack实例都显式或隐式地与环境(env(关联。环境是目标AWS帐户和打算部署堆栈的AWS区域。

如果目的是使CDK脚本和生成的CFn模板区域不可知,则不指定CDK环境。

AWS CDK区分完全不指定env属性和使用CDK_DEFAULT_ACCOUNT和CDK_DEFAULT_REGION指定它。前者意味着堆栈应该合成一个与环境无关的模板。

最新更新