

# API Gateway で API キーソースを選択する
<a name="api-gateway-api-key-source"></a>

使用量プランを API と関連付けて API メソッドで API キーを有効にする場合、API への各受信リクエストには [API キー](api-gateway-basic-concept.md#apigateway-definition-api-key)が含まれている必要があります。API Gateway はキーを読み取り、使用量プランのキーと照合します。一致する場合、API Gateway は、プランのリクエスト制限とクォータに従ってリクエストを調整します。それ以外の場合は、`InvalidKeyParameter` 例外がスローされます。その結果、発信者は `403 Forbidden` レスポンスを受け取ります。

API Gateway は 2 つのソースのいずれかから API キーを受け取ることができます。

**`HEADER`**  
API キーを顧客に配布して、各受信リクエストの `X-API-Key` ヘッダーとして API キーを渡す必要があります。

**`AUTHORIZER`**  
この認可レスポンスの一部として API キーを返す Lambda オーソライザーを使用することができます。認可レスポンスの詳細については、「[API Gateway Lambda オーソライザーからの出力](api-gateway-lambda-authorizer-output.md)」を参照してください。

**注記**  
考慮すべきベストプラクティスについては、「[API キーと使用量プランのベストプラクティス](api-gateway-api-usage-plans.md#apigateway-usage-plans-best-practices)」を参照してください。

次の手順は、API の API キーソースを選択する方法を示しています。

------
#### [ AWS マネジメントコンソール ]

**API の API キーソースを選択するには**

1. [API Gateway コンソール] にサインインします。

1. 既存の API を選択するか、新しい API を作成します。

1. メインナビゲーションペインで、**[API の設定]** を選択します。

1. **[API の詳細]** セクションで **[編集]** を選択します。

1.  **API キーソースで**、ドロップダウンリストから `Header` または `Authorizer` を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ AWS CLI ]

次の [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html) コマンドは、API キーソースを `AUTHORIZER` に設定するように API を更新します。

```
aws apigateway update-rest-api --rest-api-id 1234123412 --patch-operations op=replace,path=/apiKeySource,value=AUTHORIZER
```

クライアントが API キーを送信するように指定するには、前のコマンドで `value` を `HEADER` に設定します。

------
#### [ REST API ]

API Gateway REST API を使用して API の API キーのソースを選択するには、次のように [https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateRestApi.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateRestApi.html) を呼び出します。

```
PATCH /restapis/fugvjdxtri/ HTTP/1.1
Content-Type: application/json
Host: apigateway.us-east-1.amazonaws.com
X-Amz-Date: 20160603T205348Z
Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20160603/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash}

{
  "patchOperations" : [
    {
        "op" : "replace",
        "path" : "/apiKeySource",
        "value" : "HEADER"
    }
  ]
}
```

オーソライザーに API キーを戻すには、前の `value` 入力で `AUTHORIZER` を `patchOperations` に設定します。

------