AWS 一般参考
参考指南 (版本 1.0)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS 签名版本 4 请求的元素

每个使用版本 4 签名的 HTTP/HTTPS 请求都必须包含这些元素。

  • 终端节点规范

  • 操作

  • 必需和可选参数

  • 日期

  • 身份验证参数

终端节点规范

这指定为 HTTP/1.1 请求中的 Host 标头。此标头指定您要向其发送请求的计算机的 DNS 名称,例如 dynamodb.us-east-1.amazonaws.com.cn

您必须随 HTTP/1.1 请求包含 Host 标头。对于 HTTP/2 请求,您可以使用 :authority 标头或 Host 标头。仅使用 :authority 标头以符合 HTTP/2 规范。并非所有服务都支持 HTTP/2 请求,因此请检查服务文档以了解详细信息。

终端节点通常包含服务名称和区域,您必须将这两者用作 Credential 身份验证参数的一部分。例如,eu-west-1 区域的 Amazon DynamoDB 终端节点为 dynamodb.eu-west-1.amazonaws.com.cn。如果您未指定区域,Web 服务将使用默认区域 us-east-1。如果您使用的是使用全球唯一终端节点的服务(如 IAM),请使用默认区域 (us-east-1) 作为 Credential 身份验证参数的一部分(如本主题后面所述)。

有关 AWS 支持的终端节点的完整列表,请参阅区域和终端节点

操作

此元素指定您希望 Web 服务执行的操作,如 DynamoDB CreateTable 操作或 Amazon EC2 DescribeInstances 操作。指定的操作确定在请求中使用的参数。对于查询 API,此操作是一个 API 名称。对于非查询 API(如 RESTful API),请参阅服务文档以了解相应的操作。

必需和可选参数

此元素指定请求操作的参数。Web 服务中的每个操作都具有一组用于定义 API 调用的必需参数和可选参数。API 版本通常是必需参数。有关必需参数和可选参数的详细信息,请参阅服务文档。

日期

这是您发出请求的日期和时间。在请求中包括日期有助于防止第三方拦截您的请求并稍后重新提交。该日期使用 ISO8601 Basic 格式通过 x-amz-date 标头以 YYYYMMDD'T'HHMMSS'Z' 格式指定。

身份验证参数

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

  • 算法。您用作签名过程一部分的哈希算法。例如,如果您使用 SHA-256 创建哈希,请使用值 AWS4-HMAC-SHA256

  • 凭证范围。以斜杠(“/”)分隔的字符串,它通过将您的访问密钥 ID 和凭证范围组件串联起来而形成。凭证范围包括采用 YYYYMMDD 格式的日期、AWS 区域、服务名称和特殊的终止字符串 (aws4_request)。例如,以下字符串表示 us-east-1 cn-north-1 区域中 IAM 请求的 Credential 参数。

    AKIAIOSFODNN7EXAMPLE/20111015/us-east-1/iam/aws4_request

    AKIAIOSFODNN7EXAMPLE/20111015/cn-north-1/iam/aws4_request

    重要

    您必须为区域、服务名称和特殊的终止字符串使用小写字符。

  • SignedHeaders 要在签名中包含的 HTTP/HTTPS 标头的以分号(“;”)分隔的列表。

  • 签名 一个十六进制编码字符串,表示在任务 3:为 AWS Signature 版本 4 计算签名中介绍的签名操作的输出。您必须使用您在 Algorithm 参数中指定的算法来计算签名。

若要查看示例已签名请求,请参阅完整版本 4 签名过程的示例 (Python)