签署 Amazon API 请求
重要
如果您使用 Amazon SDK 或 Amazon 命令行工具向 Amazon 发送 API 请求,则这些工具会为您签署 API 请求。如果您不使用 Amazon SDK 或 Amazon 命令行工具向 Amazon 发送 API 请求,则必须按照本文档所述要求签署 Amazon API 请求。
如需将 API 请求发送给 Amazon,则必须签署请求,以便 Amazon 能够识别发送者。出于安全考虑,大多数请求都必须使用 Amazon 安全凭证签署。
Amazon Web Service 收到经身份验证的请求时,会使用请求中包含的身份验证信息重新创建签名。如果签名匹配,则服务将处理该请求。否则,服务将拒绝该请求。
Signature Version 4 是 Amazon 签名协议。Amazon 还支持 Signature Version 4A 扩展,该扩展支持多区域 API 请求的签名。有关更多信息,请参阅 GitHub 上的 sigv4a-signing-examples
何时签署请求
编写自定义代码来将 API 请求发送给 Amazon 时,必须包含用于签署请求的代码。您可能需要编写自定义代码,原因如下:
-
您正在使用的编程语言没有对应的 Amazon 开发工具包。
-
您需要完全控制将请求发送给 Amazon 的方式。
为什么签署请求
签名过程通过以下方式帮助保护请求:
-
验证请求者的身份
请求必须由拥有有效访问密钥的人员发送。
-
保护传输中的数据
为了防止传输时请求被篡改,一些请求元素将用于计算请求的哈希(摘要),得到的哈希值将包括在请求中。在 Amazon Web Service 收到请求时,它将使用相同信息计算哈希,并将其与您的请求中包括的哈希值进行匹配。如果值不匹配,Amazon 将拒绝请求。
-
防止潜在的反演攻击
在大多数情况下,请求必须在请求中的时间戳的 5 分钟内到达 Amazon。否则,Amazon 将拒绝该请求。