メニュー
アマゾン ウェブ サービス
全般的なリファレンス (Version 1.0)

タスク 2: 署名バージョン 4 の署名文字列を作成する

署名文字列には、リクエストについてのメタ情報と タスク 1: 署名バージョン 4 の正規リクエストを作成する で作成した正規リクエストについてのメタ情報が含まれています。署名文字列と後で入力として作成する派生署名キーを使用し、タスク 3: AWS 署名バージョン 4 の署名を計算する でリクエスト署名を計算します。

署名文字列を作成するには、次の擬似コードに示すように、アルゴリズム、日付と時間、認証情報スコープ、および正規リクエストのダイジェストを連結します。

署名文字列の構造

StringToSign = Algorithm + \n + RequestDateTime + \n + CredentialScope + \n + HashedCanonicalRequest

次の例では、「タスク 1: 正規リクエストを作成する」と同じリクエストを使用して、署名文字列を作成する方法を示します。

例 HTTPS リクエスト

GET https://iam.amazonaws.com/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 Host: iam.amazonaws.com Content-Type: application/x-www-form-urlencoded; charset=utf-8 X-Amz-Date: 20150830T123600Z

署名文字列の作成方法

  1. まずアルゴリズムを指定し、その後に改行文字を置きます。この値は、正規リクエストでダイジェストを計算するために使用しているハッシュアルゴリズムです。SHA256 では、AWS4-HMAC-SHA256 がこのアルゴリズムです。

    AWS4-HMAC-SHA256\n
  2. 要求日付の値を追加し、その後に改行文字を置きます。日付は、ISO8601 基本形式を使用し、x-amz-date ヘッダーで YYYYMMDD'T'HHMMSS'Z' 形式で指定します。この値は、前のステップで使用した値と一致する必要があります。

    20150830T123600Z\n
  3. 認証情報スコープの値を追加し、その後に改行文字を置きます。この値は、日付、対象とするリージョン、リクエストしているサービス、および小文字の終了文字列 ("aws4_request") を含む文字列です。リージョンおよびサービス名の文字列は、UTF-8 でエンコードされている必要があります。

    20150830/us-east-1/iam/aws4_request\n
    • 日付は YYYYMMDD 形式であることが必要です。日付には時間の値が含まれていないことに注意してください。

    • 指定するリージョンがリクエスト送信先のリージョンであることを確認します。「AWS のリージョンとエンドポイント」を参照してください。

  4. タスク 1: 署名バージョン 4 の正規リクエストを作成する で作成した正規リクエストのハッシュを追加します。この値の後には、改行文字を置きません。ハッシュされた正規リクエストは、「RFC 4648 セクション 8」で定義されているように、小文字で Base16 エンコードする必要があります。

    f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59

次の署名文字列は、2015 年 8 月 30 日の IAM へのリクエストです。

例 署名対象の文字列

AWS4-HMAC-SHA256 20150830T123600Z 20150830/us-east-1/iam/aws4_request f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59