开发人员指南概述

亚马逊广告 API 概览

利用 AWS 优化 Amazon Marketing Stream 费用

Amazon Marketing Stream 的成功实施依赖于对 AWS 基础架构的深刻理解,包括 AWS SQSAWS Lambda。本文档提供了一些建议和优秀实践,用于在扩展 Amazon Marketing Stream 时优化 AWS 费用。

注意

AWS 根据您的业务需求为自定义配置提供了许多选项。本指南包含一些常规建议,但亚马逊鼓励您在设计和实施 Stream 集成时与熟悉 AWS 的人员合作。

AWS SQS

了解 SQS 定价

AWS Simple Queue Service (SQS) 是您需要用于 Amazon Marketing Stream 的主要 AWS 工具。要优化 SQS 费用,必须了解 SQS 定价的运作方式。

作为 Stream 入门流程的一部分,您可以设置一个队列并对 Stream 数据集订阅该队列。然后,Stream 会将包含广告活动数据和事件的记录发送到您的 SQS 队列。

您在队列中执行的每项操作都会产生相关费用。SQS API 操作参考中描述的所有操作都会产生费用。例如,消息进入队列后,您需要向 SQS 发送请求以接收消息(可以通过 SQS 平台,或以程序化方式使用 SQS API 中的 ReceiveMessage 请求)。

作为 AWS SQS 免费套餐的一部分,您每月可以发出一百万个免费请求。每增加一百万个请求,将根据您所在的区域收取费用(有关最新定价,请参阅 SQS 费用计算器)。

在不同区域的 SQS 和 EC2 或 Lambda 之间传输的数据也会产生费用。有关详细信息,请参阅费用计算器

优秀实践

要优化 SQS 费用,亚马逊建议按照 AWS 建议实施长轮询和批处理。

长轮询

为了减少对空消息收取费用的可能性,亚马逊建议在 SQS 队列中配置长轮询。

SQS 提供两种接收队列消息的选项:短轮询和长轮询。默认情况下,队列使用短轮询,这意味着 ReceiveMessage 请求会立即产生响应,即使队列中未找到任何消息。对于长轮询,则只有在轮询期间找到一条消息,或者轮询等待时间到期时,您才会收到一条消息。例如,如果您发送 ReceiveMessage 请求,但队列中没有 Stream 消息,则会得到空响应。在 SQS 中,空响应仍将算作产生费用的操作。您可以通过查看 NumberOfEmptyReceives CloudWatch 指标来验证效果。

更多信息:

ReceiveMessage 请求的批处理

SQS 的定价基于您发送的请求数量。如果减少请求数量,则可以降低费用。批处理请求是减少请求数量的一种方法。

考虑以下示例: 亚马逊广告向您的队列发送了五条新消息。您可以向 SQS 发送五个单独的 ReceiveMessage 请求以检索消息,将分别被收取五次费用。但是,这些消息中的每条都相对较小,在本示例中,假设每条 10 KB,总计 50 KB。AWS 允许您将消息一起批处理,只要批量不超过 65 KB,您只需支付一次费用。在此示例中,您可以将所有五条消息一起批处理,总 payload 大小为 50 KB,从而将收取费用的消息总数从五条消息减少为一条。

AWS 允许您最多将十条消息一起批处理。从 Stream 发送的消息应始终小于 6 KB;因此,您应该能够将批处理的最大允许数量设置为 10,同时也能安全地低于 64 KB 的 payload 阈值。

更多信息:

提示

如果您要使用 AWS Lambda 来使用队列中的消息,则应实施事件源映射,这将默认进行长轮询和批处理。 进一步了解如何配置队列以使用 Lambda

避免跨区域传输数据

如果您需要传输数据,亚马逊建议仅在同一区域内发送数据。将数据传输到其他区域会增加费用

AWS Lambda

您也可以使用 AWS Lambda 对 SQS 中收到的消息运行重复流程。

如果您要使用 AWS Lambda,则可能需要考虑 AWS 发布的以下关于管理 Lambda 费用的博客文章: