微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有 AWS CDK 代码可用于为 Kinesis firehose 传输流启用 WAF 日志记录?

如何解决是否有 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

调用该调用所需的条件:

  1. Web ACL 的ResourceArn
  2. 应接收日志的 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 举报,一经查实,本站将立刻删除。