【问题标题】:AWS: Saving every SNS messageAWS:保存每条 SNS 消息
【发布时间】:2019-08-15 03:50:06
【问题描述】:

保存/记录在 AWS SNS 主题上发布的每条消息的最简单方法是什么?我认为可能有一个神奇的设置可以自动将它们推送到 S3 或数据库,或者可能是自动支持 HTTP 目标的数据库服务,但似乎并非如此。也许需要通过 Lambda 函数来完成?

目的只是在设置一些 SNS 发布时进行基本诊断和调试。我并不真正关心大规模或快速查询,只想一次记录几分钟的所有活动并执行基本查询。

【问题讨论】:

  • 处理消息的应用程序不能这样做吗?
  • 可能是这样,但我试图避免在 AWS 中开发自定义 UI。寻找通用+基本查询接口。
  • 您可以选择一个应用程序并选择“交付状态”然后“创建 iam 角色”然后“保存配置”,这将记录到 cloudwatch 每次成功和失败的交付。
  • Cloudwatch 可能是最好的方法。

标签: amazon-web-services amazon-sns


【解决方案1】:

您可以设置一个触发器来将您的SNS 消息推送到SQS 队列。推送是自动的,不需要任何代码。

【讨论】:

  • SQS 是否可以用于查询目的?鉴于它是为短期消息设计的,我会认为它具有非常有限的查询能力和昂贵的存储空间。
  • 是的。您可以查询 SQS 消息。每个 receive 呼叫最多 10 个。 aws.amazon.com/sqs/pricinglimited querying capability and expensive storage 是主观的。
  • @mahemoff 你实际上不能查询 SQS 消息,如果通过查询意味着选择性地搜索它们。您可以在控制台中一次预览几个,或者从队列中消费并将它们保存在其他地方......但 SQS 将它们免费存储,直到被读取和删除或它们因年老而死,以先到者为准......默认 4天,最多可配置 14 天,不收取存储费用,并且任何时候队列中的消息数量不受限制。这是一种从 SNS 捕获消息以进行调试的非常有效的方法。我使用了一个脚本,可以将它们从队列中删除并存储在数据库或文件中。
  • @Michael-sqlbot 那并不理想。我试图避免编写(和部署)该脚本并查看哪些选项可用于纯粹通过配置将数据转换为可查询的形式。
  • @mahemoff 将 Lambda 函数连接到 SNS 主题,并让该函数将每条消息发送到 CloudWatch 日志。
【解决方案2】:

根据the docs,SNS可以发布到:

http – delivery of JSON-encoded message via HTTP POST
https – delivery of JSON-encoded message via HTTPS POST
email – delivery of message via SMTP
email-json – delivery of JSON-encoded message via SMTP
sms – delivery of message via SMS
sqs – delivery of JSON-encoded message to an Amazon SQS queue
application – delivery of JSON-encoded message to an EndpointArn for a mobile app and device.
lambda – delivery of JSON-encoded message to an AWS Lambda function.

是的,一个简单的方法是触发 lambda 函数以写入 S3 或 CloudWatch。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2017-05-28
    • 2021-10-18
    • 2015-08-22
    • 1970-01-01
    相关资源
    最近更新 更多