

# 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 API는 다음 둘 중 하나의 소스에서 API 키를 수신할 수 있습니다.

**`HEADER`**  
고객에게 API 키를 배포하고 수신되는 각 요청의 `X-API-Key` 헤더로서 이 API 키를 전달하도록 요청합니다.

**`AUTHORIZER`**  
Lambda 권한 부여자가 권한 부여 응답의 일부로 API 키를 반환하도록 할 수 있습니다. 권한 부여 응답에 대한 자세한 내용은 [API Gateway Lambda 권한 부여자의 출력](api-gateway-lambda-authorizer-output.md) 단원을 참조하세요.

**참고**  
고려해야 할 모범 사례는 [API 키 및 사용량 계획의 위한 모범 사례](api-gateway-api-usage-plans.md#apigateway-usage-plans-best-practices) 섹션을 참조하세요.

다음 절차에서는 API에 대한 API 키 소스를 선택하는 방법을 보여줍니다.

------
#### [ AWS Management Console ]

**API에 대한 API 키 소스를 선택하려면**

1. API Gateway 콘솔에 로그인합니다.

1. 기존 API를 선택하거나 새 API를 생성합니다.

1. 기본 탐색 창에서 **API 설정**을 선택합니다.

1. **API 세부 정보** 섹션에서 **편집**을 선택합니다.

1.  **API 키 소스**의 드롭다운 목록에서 `Header` 또는 `Authorizer`를 선택합니다.

1. **변경 사항 저장**을 선택합니다.

------
#### [ 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 키를 제출하도록 하려면 이전의 CLI 명령에서 `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`로 설정합니다.

------