如何解决是否有 AWS CDK 代码可用于为 Kinesis firehose 传输流启用 WAF 日志记录?
任何人都有 Python CDK 代码来启用 WAF 中的 Amazon Kinesis Data Firehose 传输流日志记录?任何语言的 CDK 代码都适合我的参考,因为我在官方 python CDK/api 文档或任何博客中都没有找到任何合适的语法或示例来启用。
解决方法
从现有的文档(从 CDK 版本 1.101 和扩展 Cloudformation 开始)似乎没有办法开箱即用。
但是有可以与 boto3 一起使用的 API 调用,例如:https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/wafv2.html#WAFV2.Client.put_logging_configuration
调用该调用所需的条件:
- Web ACL 的ResourceArn
- 应接收日志的 Kinesis Data Firehose ARN 列表
这意味着您可以尝试使用自定义资源并实现此行为。鉴于您之前在堆栈中创建了 Firehose 和 web ACL,使用它来创建自定义资源: https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.custom_resources/README.html
crd_provider = custom_resources.Provider(
self,"Custom resource provider",on_event_handler=on_event_handler,log_retention=aws_logs.RetentionDays.ONE_DAY
)
custom_resource = core.CustomResource(
self,"WAF logging configurator",service_token=crd_provider.service_token,properties={
"ResourceArn": waf_rule.attr_arn,"FirehoseARN": firehose.attr_arn
}
)
on_event_handler
在本例中是您需要实现的 lambda 函数。
应该可以通过使用 AwsSdkCall
来进一步简化:
on_event_handler = AwsSdkCall(
action='PutLoggingConfiguration',service='waf',parameters={
'ResourceArn': waf_rule.attr_arn,'LogDestinationConfigs': [
firehose.attr_arn,]
)
这样您就无需编写自己的 lambda。但是您的用例可能会发生变化,您可能希望向此日志记录配置器添加一些额外的功能,因此我将展示这两种方法。
免责声明:我没有测试过这个精确代码,而是我为解决类似的绕过 Cloudformation 覆盖率差距的问题而编写的类似代码的摘录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。