amazon-web-services - 如何在 AWS CDK 的输入区域部署 elasticsearch 集群?
问题描述
我想在输入提供的区域中部署一个 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 指定它。前者意味着堆栈应该合成一个与环境无关的模板。
推荐阅读
- javascript - 如何排序
- 元素并放置结果
- javascript - 如何在 asp.net core 中使用 ajax 创建评论列表?
- authentication - 通过蓝牙对 ACR1255U-J1 读卡器进行身份验证
- android - Flutter 中的推送通知
- dart - 如何对从 dart/flutter 中的 List.generate 方法获得的列表进行排序?
- php - 调用构造
- wso2 - 如何为 WSO2 3.1.0 安装和配置 apictl 工具?
- r - 为闪亮的应用程序构建 docker 映像时的 R 包依赖问题
- node.js - PayTM 支付网关与 Angular Universal 的集成
- php - 从 HTML 到 PHP 的数据始终为空