

# AWS API リクエスト署名の要素
<a name="reference_sigv-signing-elements"></a>

**重要**  
AWS SDK または CLI を使用していない限り、リクエストの認証情報を提供する署名を計算するコードを記述する必要があります。AWS Signature Version 4 での署名計算は複雑な作業になる場合があるため、可能な限り AWS SDK または CLI を使用することをお勧めします。

Signature Version 4 の署名を使用する各 HTTP/HTTPS リクエストには、これらの要素を含める必要があります。

**Topics**
+ [エンドポイント仕様](#endpoint-specification)
+ [Action](#action)
+ [アクションパラメータ](#parameters)
+ [日付](#date)
+ [認証情報](#authentication)

## エンドポイント仕様
<a name="endpoint-specification"></a>

リクエストの送信先となるエンドポイントの 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 全般のリファレンス」の「[サービスエンドポイントとクォータ](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)」を参照してください。

## Action
<a name="action"></a>

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

各サービスでサポートされているアクションについては、「[サービス認可リファレンス](https://docs.aws.amazon.com//service-authorization/latest/reference/reference.html)」を参照してください。

## アクションパラメータ
<a name="parameters"></a>

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

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

## 日付
<a name="date"></a>

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

タイムスタンプは UTC で、*YYYYMMDD*T*HHMMSS*Z の ISO 8601 形式を使用する必要があります。例えば、`20220830T123600Z`。タイムスタンプにミリ秒を含めないでください。

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

## 認証情報
<a name="authentication"></a>

送信する各リクエストには、次の情報を含める必要があります。AWS はこの情報を使用してリクエストの有効性と信頼性を確保しています。
+ アルゴリズム – 署名プロセスの一部として使用しているアルゴリズム。
  + SigV4 — `HMAC-SHA256` ハッシュアルゴリズムで Signature Version 4 を指定する場合に `AWS4-HMAC-SHA256` を使用します。
  + SigV4a – `ECDSA-P256-SHA-256` ハッシュアルゴリズムを指定するために `AWS4-ECDSA-P256-SHA256` を使用します
+ 認証情報 – アクセスキー ID と認証情報スコープのコンポーネントを連結して形成される文字列。
  + SigV4 – 認証情報スコープには、アクセスキー ID、*YYYYMMDD* 形式の日付、リージョンコード、サービスコード、およびスラッシュ (/) で区切った `aws4_request` 終了文字列が含まれます。リージョンコード、サービスコード、および終了文字列には、小文字を使用する必要があります。

    ```
    AKIAIOSFODNN7EXAMPLE/YYYYMMDD/region/service/aws4_request
    ```
  + SigV4a – 認証情報スコープには、YYYYMMDD 形式の日付、サービス名、およびスラッシュ (/) で区切った `aws4_request` 終了文字列が含まれます。このリージョンは別のヘッダー `X-Amz-Region-Set` でカバーされているため、認証情報スコープにはこのリージョンが含まれないことに注意してください。

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

  SigV4a の場合、リクエストが有効なリージョンセットを指定するリージョンセットヘッダーを含める必要があります。ヘッダー `X-Amz-Region-Set` はカンマ区切り値のリストとして指定されます。次の例は、us-east-1 リージョンと us-west-1 リージョンの両方でリクエストを行うことを許可するリージョンヘッダーを示しています。

  ```
  X-Amz-Region-Set=us-east-1,us-west-1
  ```

  リージョンでワイルドカード (\$1) を使用して、複数のリージョンを指定できます。次の例では、ヘッダーを使用して、us-west-1 と us-west-2 の両方でリクエストを行うことができます。

  ```
  X-Amz-Region-Set=us-west-*
  ```
+ 署名 — 計算された署名を表す 16 進エンコードされた文字列。`Algorithm` パラメータで指定したアルゴリズムを使用して署名を計算する必要があります。

詳細については、[認証方法](reference_sigv-authentication-methods.md) を参照してください。