我想在输入中提供的区域中部署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)。我如何像其他服务中可能的那样更新elasticsearch的区域,以及如何获得创建的资源的逻辑ID。我不想在不同的区域中创建堆栈,我想要类似下面的内容在dynamo中存在,即更新区域,
const dynamodb = new Dynamodb({
      region: region
    });
任何帮助,将不胜感激!!

最佳答案

CDK生成CFn模板,需要将其部署到特定区域。如果要切换/更改部署CFn脚本的目标区域以在CDK脚本中创建ES,则没有这种方法。
CDK部署绑定(bind)到在其中创建AWS资源的特定区域CDK_DEFAULT_REGION。
CDK Environment

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

09-10 06:05
查看更多