CloudWatch 支持协议的常见问题解答
CloudWatch SDK 现在支持另外两种协议:AWS JSON 1.1
什么是 AWS JSON 协议?其与现有的 CloudWatch API 请求和响应有何不同?
JSON 是目前异构系统间进行通信时,应用程序最广泛且接受度最高的数据格式之一。CloudWatch 使用 JSON 作为媒介在 AWS SDK 客户端(例如:Java、Python、Golang、JavaScript)与 CloudWatch 服务器之间进行通信。CloudWatch API 操作的 HTTP 请求接受 JSON 形式的输入。系统会执行 CloudWatch 操作,然后将执行的响应以 JSON 形式反过来共享给 SDK 客户端。与 AWS Query 相比,JSON 在客户端和服务器之间的数据传输方面效率更高。
-
CloudWatch AWS JSON 协议充当 CloudWatch 客户端和服务器之间的中介层。
-
CloudWatch AWS 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 的新协议?
若要快速使用,请使用最新版本 AWS SDK/CLI 调用 CloudWatch 支持的最新协议。将 AWS SDK 升级到指定版本或其后续任一版本。
| 语言 | 协议 | SDK 版本 |
|---|---|---|
| C++ | RPC v2 CBOR | 1.11.708 |
| Golang 2.x | RPC v2 CBOR | 1.53.0 |
| Java 1.x | AWS JSON 1.1 | 1.12.795 |
| Java 2.x | RPC v2 CBOR | 2.40.6 |
| JavaScript v3.x | AWS JSON 1.1 | 3.949.0 |
| .NET v3 | AWS JSON 1.1 | 3.7.1182.0 |
| .NET v4 | RPC v2 CBOR | 4.0.150.0 |
| PHP | AWS JSON 1.1 | 3.367.0 |
| Python-boto3 | AWS JSON 1.1 | 1.42.7 |
| Python-botocore | AWS JSON 1.1 | 1.42.7 |
| AWS CLI v1 | AWS JSON 1.1 | 1.43.13 |
| AWS CLI v2 | AWS JSON 1.1 | 2.32.14 |
| Ruby | AWS JSON 1.1 | 1.126.0 |
| Powershell | AWS JSON 1.1 | 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 在 AWS JSON 协议和 Smithy RPC v2 CBOR 协议中的处理方式,与之前的 AWS Query 协议有所不同 – 在 AWS Query 协议中,列表内的空值会被自动移除;在 JSON/CBOR 协议中,空值则会随 API 调用完整传递。
此外,如果使用 AWS SDK 的自定义实现或自定义客户端和 AWS SDK 的组合,与生成基于 AWS Query(也就是基于 XML)的响应的 CloudWatch 进行交互,则可能与 AWS JSON 或 CBOR 协议不兼容。如果遇到任何问题,请与 AWS Support 联系。
如果已经使用最新版 AWS SDK,但开源解决方案不支持 JSON 或 CBOR,该怎么办?
必须将 SDK 版本更改为先前版本。请参阅如何开始使用 CloudWatch 的新协议?小节,选择低于所列版本的版本。如果将 AWS SDK 更改为先前版本,CloudWatch API 会使用 AWS Query 协议。
CloudWatch API 中使用的 AWS JSON 和 CBOR 协议支持哪些区域?
CloudWatch 在所有提供 CloudWatch 的 AWS 区域都支持 AWS JSON 和 CBOR 协议。
升级至指定 AWS SDK 版本并使用新协议后,CloudWatch 的延迟性能预计可提升多少?
相较于 AWS Query 协议,JSON 和 CBOR 协议可将延迟与 CPU 占用率降低最高 80%。这两种协议的网络带宽利用率最高可提升 20%。
AWS Query 协议会被弃用吗?
我们会继续支持 AWS Query 协议。只要将 AWS SDK 版本设置为除如何开始使用 CloudWatch 的新协议?中列出的版本之外的任何先前版本,即可继续使用 AWS Query 协议。
在哪里可以找到有关 AWS JSON 和 Smithy RPC v2 CBOR 协议的更多信息?
有关 JSON 协议的更多信息,可参阅 Smithy 文档中的 AWS JSON 1.1
有关 CloudWatch API 请求的更多信息,请参阅《CloudWatch API Reference》指南中的 Making API Requests。