CloudWatch 支持协议的常见问题解答 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

CloudWatch 支持协议的常见问题解答

CloudWatch SDK 现在支持另外两种协议:Amazon JSON 1.0Smithy RPC v2 CBOR。相较于此前 CloudWatch SDK 及 CLI 所使用的 Amazon Query 协议,这两种协议的性能更优。AmazonSDK 会自动为每种语言选择性能最优的通信协议。

什么是 Amazon JSON 协议?其与现有的 CloudWatch API 请求和响应有何不同?

JSON 是目前异构系统间进行通信时,应用程序最广泛且接受度最高的数据格式之一。CloudWatch 使用 JSON 作为媒介在 Amazon SDK 客户端(例如:Java、Python、Golang、JavaScript)与 CloudWatch 服务器之间进行通信。CloudWatch API 操作的 HTTP 请求接受 JSON 形式的输入。系统会执行 CloudWatch 操作,然后将执行的响应以 JSON 形式反过来共享给 SDK 客户端。与 Amazon Query 相比,JSON 在客户端和服务器之间的数据传输方面效率更高。

  • CloudWatch Amazon JSON 协议充当 CloudWatch 客户端和服务器之间的中介层。

  • CloudWatch Amazon SDK 在 CloudWatch 客户端与服务器之间使用序列化(将对象转换为 JSON 格式)和反序列化(将 JSON 格式转换为对象)。

什么是 Smithy RPC v2 CBOR 协议?其与现有的 CloudWatch API 请求和响应有何不同?

Smithy RPC v2 CBOR(简明二进制对象表示)是 Amazon 自研的高效数据传输协议。该数据格式专为压缩消息体积设计,支持格式无缝演进,无需在系统间进行版本协商。其与 JSON 编码的核心区别在于:JSON 采用人类可读的文本格式(如 "name": "John"),而 CBOR 采用二进制格式(由 0 和 1 组成的序列)。这种二进制方式可生成体积更小的数据包,提升网络传输速度;同时由于计算机可直接处理二进制数据,还能有效减少序列化耗时。

  • CloudWatch RPC v2 CBOR 协议充当 CloudWatch 客户端和服务器之间的中介层。

  • CloudWatch SDK 负责处理 CloudWatch 客户端与服务器之间的序列化(将对象转换为 CBOR 格式)和反序列化(将 CBOR 格式还原为对象)操作。

如何开始使用 CloudWatch 的新协议?

若要快速使用,请使用最新版本 Amazon SDK/CLI 调用 CloudWatch 支持的最新协议。将 Amazon SDK 升级到指定版本或其后续任一版本。

SDK 客户端协议支持
语言 协议 SDK 版本
C++ RPC v2 CBOR 1.11.708
Golang 2.x RPC v2 CBOR 1.53.0
Java 1.x RPC v2 CBOR 1.12.795
Java 2.x RPC v2 CBOR 2.40.6
JavaScript v3.x Amazon JSON 1.0 3.949.0
.NET v3 Amazon JSON 1.0 3.7.1182.0
.NET v4 RPC v2 CBOR 4.0.150.0
PHP Amazon JSON 1.0 3.367.0
Python-boto3 Amazon JSON 1.0 1.42.7
Python-botocore Amazon JSON 1.0 1.42.7
Amazon CLI v1 Amazon JSON 1.0 1.43.13
Amazon CLI v2 Amazon JSON 1.0 2.32.14
Ruby Amazon JSON 1.0 1.126.0
Powershell Amazon JSON 1.0 5.0.114
Rust RPC v2 CBOR 1.100.0
Swift RPC v2 CBOR 1.6.14
Kotlin RPC v2 CBOR 1.5.100

为 CloudWatch 工作负载启用这些新协议有哪些风险?

迁移到这些新版 SDK 的过程,预计将实现完全透明、无额外操作成本的无缝过渡。在协议之间存在一项已知的行为差异,该差异涉及列表内 null 值的处理方式:对于可能包含 null 值的列表输入,CloudWatch API 在 Amazon JSON 协议和 Smithy RPC v2 CBOR 协议中的处理方式,与之前的 Amazon Query 协议有所不同 – 在 Amazon Query 协议中,列表内的空值会被自动移除;在 JSON/CBOR 协议中,空值则会随 API 调用完整传递。

此外,如果使用 Amazon SDK 的自定义实现或自定义客户端和 Amazon SDK 的组合,与生成基于 Amazon Query(也就是基于 XML)的响应的 CloudWatch 进行交互,则可能与 Amazon JSON 或 CBOR 协议不兼容。如果遇到任何问题,请与 Amazon Support 联系。

如果已经使用最新版 Amazon SDK,但开源解决方案不支持 JSON 或 CBOR,该怎么办?

必须将 SDK 版本更改为先前版本。请参阅如何开始使用 CloudWatch 的新协议?小节,选择低于所列版本的版本。如果将 Amazon SDK 更改为先前版本,CloudWatch API 会使用 Amazon Query 协议。

CloudWatch API 中使用的 Amazon JSON 和 CBOR 协议支持哪些区域?

CloudWatch 在所有提供 CloudWatch 的 Amazon 区域都支持 Amazon JSON 和 CBOR 协议。

升级至指定 Amazon SDK 版本并使用新协议后,CloudWatch 的延迟性能预计可提升多少?

相较于 Amazon Query 协议,JSON 和 CBOR 协议可将延迟与 CPU 占用率降低最高 80%。这两种协议的网络带宽利用率最高可提升 20%。

Amazon Query 协议会被弃用吗?

我们会继续支持 Amazon Query 协议。只要将 Amazon SDK 版本设置为除如何开始使用 CloudWatch 的新协议?中列出的版本之外的任何先前版本,即可继续使用 Amazon Query 协议。

在哪里可以找到有关 Amazon JSON 和 Smithy RPC v2 CBOR 协议的更多信息?

有关 JSON 协议的更多信息,可参阅 Smithy 文档中的 Amazon JSON 1.0 协议章节;有关 CBOR 协议的信息,可参阅 Smithy 文档中的 Amazon RPC v2 CBOR 协议章节。

有关 CloudWatch API 请求的更多信息,请参阅《CloudWatch API Reference》指南中的 Making API Requests