AWS API 请求签名的元素 - AWS Identity and Access Management

AWS API 请求签名的元素

重要

除非您使用 AWS SDK 或 CLI,否则您必须编写代码来计算在请求中提供身份验证信息的签名。AWS 签名版本 4 中的签名计算可能是一项复杂的任务,我们建议您尽可能使用 AWS 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 请求。

有关每项服务支持的端点,请参阅《AWS 一般参考》中的 服务端点和限额

操作

为服务指定 API 操作。例如,DynamoDB CreateTable 操作或 Amazon EC2 DescribeInstances 操作。

有关每项服务支持的操作,请参阅 服务授权参考

操作参数

指定请求中指定的操作的参数。每个 AWS API 操作都有一组必备参数和可选参数。API 版本通常是必需参数。

有关 API 操作支持的参数,请参阅服务的 API 参考。

Date

指定请求的日期和时间。在请求中包括日期和时间有助于防止第三方拦截您的请求并稍后重新提交。您在凭证范围中指定的日期必须与您请求的日期匹配。

时间戳必须采用 UTC 表示,并具有以下 ISO 8601 格式:YYYYMMDDTHHMMSSZ。例如,20220830T123600Z。请勿在时间戳中包含毫秒。

您可以使用 date 标头或 x-amz-date 标头,或将 x-amz-date 作为查询参数包含在内。如果无法找到 x-amz-date 标头,则需要查找 date 标头。

身份验证信息

您发送的每个请求都必须包含以下信息。AWS 使用这些信息来确保请求的有效性和真实性。

  • 算法 – 使用 AWS4-HMAC-SHA256HMAC-SHA256 哈希算法指定 Signature Version 4。

  • 凭证 – 由访问密钥 ID、YYYYMMDD 格式的日期、区域代码、服务代码和 aws4_request 终止字符串组成的字符串,用斜杠(/)分隔。区域代码、服务代码和终止字符串必须使用小写字符。

    AKIAIOSFODNN7EXAMPLE/YYYYMMDD/region/service/aws4_request
  • 已签名标头 – 签名中要包含的 HTTP 标头,用分号(;)分隔。例如,host;x-amz-date

  • 签名 – 代表计算得到的签名的十六进制编码字符串。您必须使用您在 Algorithm 参数中指定的算法来计算签名。

有关更多信息,请参阅 身份验证方法