【问题标题】:How can I refer to the generated domain name of `elasticsearch.CfnDomain` in AWS CDK?如何在 AWS CDK 中引用 `elasticsearch.CfnDomain` 生成的域名?
【发布时间】:2021-04-18 07:38:36
【问题描述】:

我在 AWS CDK 中创建了一个CfnDomain,并试图获取生成的域名来创建警报。

const es = new elasticsearch.CfnDomain(this, id, esProps);

new cloudwatch.CfnAlarm(this, "test", {
  ...
  dimensions: [
    {
      name: "DomainName",
      value: es.domainName,
    },
  ],
});

但貌似domainName属性实际上是我传入的参数(我没有传入所以会自动生成),所以实际上是undefined,不能使用。

有什么方法可以指定它,让它等待elasticsearch集群创建,以便我可以获取生成的域名,或者有没有其他方法可以为集群的指标创建警报?

【问题讨论】:

    标签: amazon-cloudformation amazon-cloudwatch aws-cdk aws-elasticsearch


    【解决方案1】:

    您使用CfnDomain.ref 作为维度的域值。红色集群状态的示例警报创建:

    const domain: CfnDomain = ...;
    const elasticDimension = {
        "DomainName": domain.ref,
    };
    
    const metricRed = new Metric({
        namespace: "AWS/ES",
        metricName: "ClusterStatus.red",
        statistic: "maximum",
        period: Duration.minutes(1),
        dimensions: elasticDimension
    });
    
    const redAlarm = metricRed.createAlarm(construct, "esRedAlarm", {
        alarmName: "esRedAlarm",
        evaluationPeriods: 1,
        threshold: 1
    });
    

    【讨论】:

    • 谢谢!我看到您正在做new Metric,它是在尝试创建新指标还是引用现有指标?因为据我所知,AWS 确实在创建 CfnDomain 时创建了指标
    • 它引用给定名称空间中的现有指标名称 - docs.aws.amazon.com/cdk/api/latest/docs/… 此类不代表资源,因此不是构造。相反,Metric 是一种抽象,可以轻松指定用于警报和图表的指标。
    猜你喜欢
    • 2022-01-03
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2022-07-22
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多