gpt4 book ai didi

amazon-web-services - 如何使用 CDK 为 AWS Logs SubscriptionFilter 创建指标/警报?

转载 作者:行者123 更新时间:2023-12-03 07:27:29 24 4
gpt4 key购买 nike

上下文

我创建了一个AWS Logs SubscriptionFilter使用CDK。我现在正在尝试为此资源的某些指标创建指标/警报。

问题

  • 我感兴趣的所有指标(请参阅 Monitoring AWS Logs with CloudWatch Metrics 文档中的 ForwardedLogEventsDeliveryErrorsDeliveryThrotdling)都需要这些维度指定的:
    • 日志组名称
    • 目的地类型
    • 过滤器名称

前两个很容易指定,因为在创建构造时还需要 LogGroupName,而在我的例子中 DestinationType 只是 Lambda。但是,我找不到使用 CDK 获取 FilterName 的方法。

  • 使用 CloudWatch,我发现 FilterName 类似于 MyStackName-MyLogicalID29669D87-GCMA0Q4KKALH。所以我不能直接使用 Fn.ref 指定它(因为我不知道逻辑 ID)。使用 CloudFormation,我可以直接完成 Ref: LogicalId
  • 我也没看到any properties on the SubscriptionFilter object它将返回这个(与大多数其他 CDK 构造不同,这个看起来相当简单,并且绝对不返回有关资源的信息)。
  • SubscriptionFilter 对象上也没有 metric* 方法(与 Lambda 函数、S3 存储桶等其他标准构造不同),因此我必须手动指定 Metric 对象。例如:CDK metric objects docs .
  • CDK 构造(以及底层 CloudFormation 资源: AWS::Logs::SubscriptionFilter )不允许我指定 FilterName - 因此我无法使用变量来指定它,并且名称是动态生成的.

非常接近我需要的示例代码:

const metric = new Metric({
namespace: 'AWS/Logs',
metricName: 'ForwardedLogEvents',
dimensions: {
DestinationType: 'Lambda',

// I know this value since I specified it while creating the SubscriptionFilter
LogGroupName: 'MyLogGroupName',

FilterName: Fn.ref('logical-id-wont-work-since-it-is-dynamic-in-CDK')
}
})

问题

  1. 如何弄清楚如何获取 FilterName 属性来构造 Metric 对象?
  2. 或者,还有其他方法可以解决这个问题吗?

最佳答案

我可以通过使用Stack#getLogicalId来解决这个问题方法。

示例代码

在 Kotlin 中,作为 extension function对于任何 Construct ):

fun Construct.getLogicalId() = Stack.of(this).getLogicalId(this.node.defaultChild as CfnElement)

...然后将其与任何构造一起使用:

        val metric = Metric.Builder.create()
.namespace("AWS/Logs")
.metricName("ForwardedLogEvents")
.dimensions(mapOf(
"DestinationType" to "Lambda",
"LogGroupName" to myLogGroup.logGroupName,
"FilterName" to mySubscriptionFilter.getLogicalId()
))
.statistic("sum")
.build()

关于amazon-web-services - 如何使用 CDK 为 AWS Logs SubscriptionFilter 创建指标/警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61927995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com