【问题标题】:Athena Queries, Lambda and SNSAthena 查询、Lambda 和 SNS
【发布时间】:2021-12-07 22:35:34
【问题描述】:

我创建了一组自定义指标,我使用 athena 查询对其进行分析,但是我正在尝试自动化该过程并且可以使用 Lambda 函数安全地运行查询,但我需要将该查询的结果发送到SNS 主题,因此我不必每天手动登录 AWS 来查看结果。我对此很陌生,需要一些关于如何实施的帮助?

这是我使用 lamdba 函数运行的查询,它由事件触发(在 eventbridge 上安排)。它所做的是获取我的实例的磁盘利用率,“custom_diskutilization”是一个包含名为 use% 的列的表。我想运行查询以输出 use% > 70 的结果并将其发送到 SNS 主题。 Lambda Function

Query Result when I run directly on Athena

【问题讨论】:

  • 我找不到专门关于使用 Lambda 中的 Athena 的官方文档,但是 here is an AWS doc 关于如何安排 Lambda 运行 Athena 查询,其中包含示例 Lambda 代码
  • 您好,感谢您的回复,但是我已经实现了这一点,我现在的问题是将该查询的结果(输出到 S3 存储桶)获取到 SNS 主题。老实说,我不需要 S3 存储桶中的结果,我希望通过电子邮件收到结果通知。
  • 明白了。请更新您的问题,详细说明您遇到的问题。目前,您似乎在询问有关如何完成 Lambda-Athena-SNS 集成的一般概述。请包括所有相关详细信息:您拥有的无效代码、您尝试修复的内容等:)
  • 我已回复,我是此页面的新手,我尝试粘贴代码但出现错误,因此我将其作为图片上传。
  • 那好多了 - 我会更进一步,重新编写您的问题,以专注于您不知道该怎么做:获取 Athena 查询结果并将结果发布到 SNS: ) 我知道自动代码长度检查令人沮丧,但如果可以的话,请尝试缩短代码以便能够直接包含它。使用可复制粘贴的代码比使用屏幕截图要容易得多。

标签: amazon-sns amazon-athena


【解决方案1】:

所以你已经有了获取查询结果的逻辑,你缺少的步骤是

  1. 将查询结果转换为您要发布的任何格式(对象)
  2. 将转换后的结果写入 SNS

第一步,决定您是要发布一个通知,其中包含所有利用率 > 70% 的条目,还是发布多个通知,每个通知都包含一个利用率 > 70% 的条目。两者都是有效的方法,这实际上取决于来自 SNS 主题的更有用的方法。如果您不确定查询结果的开头是什么样的,我建议您记录它以便查看结构。

对于第二步,您可以查看例如boto3 Publish Message in SNSboto3 publish message sns(有几个非常相似的问题)。

还要注意:放置> 70% 过滤器的正确位置可能是in Athena 查询,因为您有一个use % 列。这将使您不必在 Lambda 中添加逻辑,并减少 Athena 需要发回给您的数据量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2016-05-02
    相关资源
    最近更新 更多