Amazon API 请求签名的元素
重要
除非您使用 Amazon SDK 或 CLI,否则您必须编写代码来计算在请求中提供身份验证信息的签名。Amazon 签名版本 4 中的签名计算可能是一项复杂的任务,我们建议您尽可能使用 Amazon SDK 或 CLI。
每个使用 Signature Version 4 签名的 HTTP/HTTPS 请求都必须包含这些元素。
终端节点规范
指定您要向其发送请求的端点的 DNS 名称。此名称通常包含服务代码和区域。例如,us-east-1
区域的 Amazon DynamoDB 端点为 dynamodb.us-east-1.amazonaws.com
。
对于 HTTP/1.1 请求,您必须使用 Host
标头。对于 HTTP/2 请求,您可以使用 :authority
标头或 Host
标头。仅使用 :authority
标头以符合 HTTP/2 规范。并非所有服务都支持 HTTP/2 请求。
操作
为服务指定 API 操作。例如,DynamoDB CreateTable
操作或 Amazon EC2 DescribeInstances
操作。
有关每项服务支持的操作,请参阅 服务授权参考。
操作参数
指定请求中指定的操作的参数。每个 Amazon API 操作都有一组必备参数和可选参数。API 版本通常是必需参数。
有关 API 操作支持的参数,请参阅服务的 API 参考。
Date
指定请求的日期和时间。在请求中包括日期和时间有助于防止第三方拦截您的请求并稍后重新提交。您在凭证范围中指定的日期必须与您请求的日期匹配。
时间戳必须采用 UTC 表示,并具有以下 ISO 8601 格式:YYYYMMDDTHHMMSSZ。例如,20220830T123600Z
。请勿在时间戳中包含毫秒。
您可以使用 date
标头或 x-amz-date
标头,或将 x-amz-date
作为查询参数包含在内。如果无法找到 x-amz-date
标头,则需要查找 date
标头。
身份验证信息
您发送的每个请求都必须包含以下信息。Amazon 使用这些信息来确保请求的有效性和真实性。
-
算法 – 使用
Amazon4-HMAC-SHA256
对HMAC-SHA256
哈希算法指定 Signature Version 4。 -
凭证 – 由访问密钥 ID、YYYYMMDD 格式的日期、区域代码、服务代码和
aws4_request
终止字符串组成的字符串,用斜杠(/)分隔。区域代码、服务代码和终止字符串必须使用小写字符。AKIAIOSFODNN7EXAMPLE
/YYYYMMDD
/region
/service
/aws4_request -
已签名标头 – 签名中要包含的 HTTP 标头,用分号(;)分隔。例如,
host;x-amz-date
。 -
签名 – 代表计算得到的签名的十六进制编码字符串。您必须使用您在
Algorithm
参数中指定的算法来计算签名。
有关更多信息,请参阅 身份验证方法