AWS API リクエスト署名の要素 - AWS Identity and Access Management

AWS API リクエスト署名の要素

重要

AWS SDK または CLI を使用していない限り、リクエストの認証情報を提供する署名を計算するコードを記述する必要があります。AWS Signature Version 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 ヘッダーを含められます。HTTP/2 仕様にのみ準拠するには、:authority ヘッダーのみ使用します。すべてのサービスが HTTP/2 リクエストをサポートしているわけではありません。

各サービスでサポートされているエンドポイントについては、「AWS 全般のリファレンス」の「サービスエンドポイントとクォータ」を参照してください。

アクション

サービスの API アクションを指定します。たとえば、DynamoDB CreateTable アクションや Amazon EC2 DescribeInstances アクションなどです。

各サービスでサポートされているアクションについては、「サービス認証リファレンス」を参照してください。

アクションパラメータ

リクエストで指定されたアクションのパラメータを指定します。各 AWS API アクションには、必須およびオプションのパラメータのセットがあります。API バージョンは通常、必須パラメータです。

API アクションでサポートされるパラメータについては、サービスの「API リファレンス」を参照してください。

日付

リクエストの日付と時刻を指定します。日付と時刻をリクエストに含めると、サードパーティーによるリクエストの傍受や再送信の防止に役立ちます。認証情報スコープで指定した日付は、リクエストの日付と一致する必要があります。

タイムスタンプは UTC で、YYYYMMDDTHHMMSSZ の ISO 8601 形式を使用する必要があります。例えば、20220830T123600Z と指定します。タイムスタンプにミリ秒を含めないでください。

date または x-amz-date ヘッダーを使用するか、x-amz-date をクエリパラメータとして含めることができます。x-amz-date ヘッダーが見つからない場合は、date ヘッダーを探します。

認証情報

送信する各リクエストには、次の情報を含める必要があります。AWS はこの情報を使用してリクエストの有効性と信頼性を確保しています。

  • アルゴリズム — HMAC-SHA256 ハッシュアルゴリズムで Signature Version 4 を指定する場合に AWS4-HMAC-SHA256 を使用します。

  • 認証情報 — アクセスキー ID、YYYYMMDD 形式の日付、リージョンコード、サービスコード、およびスラッシュ (/) で区切った aws4_request 終了文字列から成る文字列。リージョンコード、サービスコード、および終了文字列には、小文字を使用する必要があります。

    AKIAIOSFODNN7EXAMPLE/YYYYMMDD/region/service/aws4_request
  • 署名付きヘッダー — 署名に含める HTTP ヘッダーを、セミコロン (;) で区切ります。例えば、host;x-amz-date と指定します。

  • 署名 — 計算された署名を表す 16 進エンコードされた文字列。Algorithm パラメータで指定したアルゴリズムを使用して署名を計算する必要があります。