【问题标题】:Transfer CloudWatch Logs to S3 using Lambda or Kinesis Firehose?使用 Lambda 或 Kinesis Firehose 将 CloudWatch Logs 传输到 S3?
【发布时间】:2021-11-05 17:02:07
【问题描述】:

我正在寻找一种将 cloudwatch 日志传输到 s3 存储桶的方法。我发现我可以在 cloudwatch 中使用订阅过滤器。我看到了两个选项。

一个是 CW -> Kinesis Firehose -> S3。

另一个是 CW -> lambda -> S3。

你知道哪个更好吗?我觉得 Kinesis firehose 更容易设置,但使用 lambda 是否更便宜?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudwatchlogs amazon-kinesis-firehose


    【解决方案1】:

    使用 lambda 时会收费:

    • 每 100 万个请求 0.20 美元(或 0.0000002 美元/请求)
    • 0.00001667 GB 秒的内存(在计算期间固定)

    对于 Kinesis,您需要付费:

    • 每提取 GB 0.035 美元

    如果设置正确,Lambda 将始终是一个更便宜的解决方案。

    后面的 Kinesis 是一个 lambda。

    【讨论】:

    • CW 上的 Kinesis Firehose 订阅过滤器可以快速轻松地设置。我最近这样做了,它工作了几天。但在我的环境中,我们必须在存储桶策略中将入站 IP 地址范围列入白名单。 Kinesis 不发布其 CIDR 范围。拉姆达也没有。我们从日志中跟踪地址范围,并添加它。但是几天后整个事情就破裂了。所以现在我要在我们的 VPC 中从 Kinesis 迁移到 Lambda。
    • 一开始的托管解决方案是一种简单的方法。但最终你会移动它并创建一些自定义的东西,因为它太有限/太昂贵了,......
    【解决方案2】:

    使用 Firehose 将 CloudWatch Logs 发送到 S3 要简单得多。如果您使用 Lambda 执行此操作,您将需要自己处理将对象放在 S3 上,并在您的 Lambda 出现问题时有重试机制。如果您需要在实际发送日志之前对其进行处理,则更推荐使用 Lambda。

    如果您采用这种方式,请务必提前计算将生成的日志数据量,并根据您的 Firehose 相应的配置。

    最后,如果您不关心实时发送的日志,您还可以探索Export to S3 feature by CloudWatch。您可以设置一个定期运行的 Lambda,并为您的 CloudWatch 日志组创建一个导出。这是更便宜的解决方案,但缺点是不能实时传输日志。

    【讨论】:

    • 您可以设置事件/订阅到带有 lambda 的 cloudwatch 并实时完成。您可以使用 firehose/kinesis 执行的所有操作,也可以使用 Lambda 执行。 Firehose 和 Kinesis 的底层是 Lambdas/ec2
    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2021-09-14
    • 2019-12-25
    • 2016-02-03
    • 2017-10-16
    • 2018-10-25
    相关资源
    最近更新 更多