

# API Gateway의 REST API 사용량 계획 설정
<a name="api-gateway-create-usage-plans"></a>

사용량 계획을 만들기 전에 API 키를 설정했는지 확인합니다. 자세한 내용은 [API Gateway의 REST API를 사용하여 API 키 설정](api-gateway-setup-api-keys.md) 섹션을 참조하세요.

**Topics**
+ [API를 기본 사용량 계획으로 마이그레이션(필요한 경우)](#api-gateway-usage-plan-migrate-to-default)
+ [사용량 계획 생성](#api-gateway-usage-plan-create)
+ [사용량 계획에 스테이지 추가](#api-gateway-usage-plan-add-stage)
+ [사용량 계획에 API 키 추가](#api-gateway-usage-plan-add-key)

## API를 기본 사용량 계획으로 마이그레이션(필요한 경우)
<a name="api-gateway-usage-plan-migrate-to-default"></a>

사용량 계획 기능이 출시된 2016년 8월 11일 *이후*에 API Gateway를 사용하기 시작한 경우, 지원되는 모든 리전에서 사용량 계획이 자동으로 활성화됩니다.

이 날짜 이전에 API Gateway를 사용하기 시작한 경우 기본 사용량 계획으로 마이그레이션해야 할 수 있습니다. 선택한 리전에서 처음으로 사용량 계획을 사용하기 전에 **Enable Usage Plans(사용량 계획 활성화)** 옵션이 메시지로 표시됩니다. 이 옵션을 활성화하면 기존 API 키에 연결된 모든 고유 API 단계에 대해 기본 사용량 계획이 생성됩니다. 조절 및 할당량 한도가 초기에 설정되어 있지 않은 기본 사용량 계획에서는 API 키와 API 단계 간의 연결이 사용량 계획에 복사됩니다. API는 전과 동일하게 동작합니다. 하지만 [ApiKey](https://docs.aws.amazon.com/apigateway/latest/api/API_ApiKey.html) `stageKeys` 속성을 사용하는 대신, [https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlan.html) `apiStages` 속성을 사용하여 지정된 API 단계 값(`apiId` 및 `stage`)을 포함된 API 키([https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlanKey.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UsagePlanKey.html)를 통해)와 연결해야 합니다.

기본 사용량 계획으로 이미 마이그레이션했는지 여부를 점검하려면 [https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-account.html](https://docs.aws.amazon.com/cli/latest/reference/apigateway/get-account.html) CLI 명령을 사용하세요. 사용량 계획이 활성화되면 명령 출력에서 `features` 목록에 `"UsagePlans"` 항목이 포함됩니다.

다음과 같이 AWS CLI를 사용하여 기본 사용량 계획으로 API를 마이그레이션할 수도 있습니다.

**AWS CLI를 사용하여 기본 사용량 계획을 마이그레이션하려면**

1. CLI 명령 [https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-account.html](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-account.html)를 호출합니다.

1. `cli-input-json` 파라미터에 대해 다음 JSON을 사용합니다.

   ```
   [
       {
           "op": "add",
           "path": "/features",
           "value": "UsagePlans"
       }
   ]
   ```

## 사용량 계획 생성
<a name="api-gateway-usage-plan-create"></a>

다음 절차에서는 사용량 계획을 생성하는 방법에 대해 설명합니다.

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

**사용량 계획을 생성하려면**

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)에서 API Gateway 콘솔에 로그인합니다.

1. API Gateway 기본 탐색 창에서 **사용량 계획**을 선택한 다음 **사용량 계획 생성**을 선택합니다.  
![\[API 사용량 계획 엔터티\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-create-setup.png)

1. **이름**에 이름을 입력합니다.

1.  (선택 사항) **설명**에 설명을 입력합니다.

1. 기본적으로 사용량 계획에는 제한이 활성화됩니다. 사용량 계획의 **요율** 및 **버스트**를 입력합니다. 제한을 해제하려면 **조절**을 선택합니다.

1. 기본적으로 사용량 계획에서는 일정 기간 할당량이 활성화됩니다. **요청**에 사용량 계획 기간 동안 사용자가 할 수 있는 총 요청 수를 입력합니다. 할당량을 해제하려면 **할당량**을 선택합니다.

1. **사용량 계획 생성**을 선택합니다.

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

다음 [create-usage-plan](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-usage-plan.html) 명령은 월초에 재설정되는 사용량 계획을 만듭니다.

```
aws apigateway create-usage-plan \
    --name "New Usage Plan" \
    --description "A new usage plan" \
    --throttle burstLimit=10,rateLimit=5 \
    --quota limit=500,offset=0,period=MONTH
```

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

[https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlan.html)를 호출하여 사용량 계획을 생성합니다.

------

## 사용량 계획에 스테이지 추가
<a name="api-gateway-usage-plan-add-stage"></a>

다음 절차에서는 사용량 계획에 스테이지를 추가하는 방법에 대해 설명합니다.

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

**사용량 계획에 스테이지 추가**

1. 사용량 계획을 선택합니다.

1.  **연결된 스테이지** 탭에서 **스테이지 추가**를 선택합니다.  
![\[사용량 계획에 API 스테이지를 추가합니다.\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-create-add-stage.png)

1.  **API**에서 API를 선택합니다.

1.  **스테이지**에서 스테이지를 선택합니다.

1. (선택 사항) 메서드 수준 제한을 설정하려면 다음을 수행합니다.

   1. **메서드 수준 제한**을 선택한 다음 **메서즈 추가**를 선택합니다.

   1. **리소스**에서 API의 리소스를 선택합니다.

   1. **메서드**에서 API의 메서드를 선택합니다.

   1.  사용량 계획의 **요율** 및 **버스트**를 입력합니다.

1. **사용량 계획 추가**를 선택합니다.

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

다음 [update-usage-plan](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-usage-plan.html) 명령은 API의 `Prod` 스테이지를 사용량 계획에 추가합니다.

```
aws apigateway update-usage-plan \
    --usage-plan-id abc123 \
    --patch-operations op="add",path="/apiStages",value="a1b1c2:Prod"
```

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

[https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateUsagePlan.html](https://docs.aws.amazon.com/apigateway/latest/api/API_UpdateUsagePlan.html)를 직접적으로 호출하여 사용량 계획을 업데이트합니다.

------

## 사용량 계획에 API 키 추가
<a name="api-gateway-usage-plan-add-key"></a>

다음 절차에서는 사용량 계획에 API 키를 추가하는 방법을 보여줍니다.

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

**사용량 계획에 키를 추가하려면**

1. **연결된 API 키** 탭에서 **API 키 추가**를 선택합니다.  
![\[API 사용량 계획 엔터티\]](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/api-gateway-new-console-usage-plan-keys-create-add-key.png)

1. 

   1.  기존 키를 사용량 계획에 연결하려면 **기존 키 추가**를 선택한 다음 드롭다운 메뉴에서 기존 키를 선택합니다.

   1. 새 API 키를 생성하려면 **새 키 생성 및 추가**를 선택한 다음 새 키를 생성합니다. 새 키를 생성하는 방법에 대한 자세한 정보는 [API 키 생성](api-gateway-setup-api-keys.md#api-gateway-usage-plan-create-apikey) 섹션을 참조하세요.

1. **API 키 추가**를 선택합니다.

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

다음 [create-usage-plan-key](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-usage-plan-key.html) 명령은 기존 API 키를 사용량 계획과 연결합니다.

```
aws apigateway create-usage-plan-key \
    --usage-plan-id a1b2c3 \
    --key-type "API_KEY" \
    --key-id aaa111bbb
```

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

[https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlanKey.html](https://docs.aws.amazon.com/apigateway/latest/api/API_CreateUsagePlanKey.html)를 직접적으로 호출하여 기존 API 키를 사용량 계획과 연결합니다.

API 키를 가져올 때 API 키를 사용량 계획과 직접 연결할 수도 있습니다. [https://docs.aws.amazon.com/apigateway/latest/api/API_ImportApiKeys.html](https://docs.aws.amazon.com/apigateway/latest/api/API_ImportApiKeys.html)를 호출하여 하나 이상의 API 키를 지정된 사용량 계획에 직접 추가합니다. 요청 페이로드는 API 키 값, 연결된 사용량 계획 식별자, 그리고 사용량 계획에 대해 활성화된 키를 보여 주는 부울 플래그를 포함해야 하며, API 키 이름 및 설명도 포함할 수 있습니다.

다음 `apikey:import` 요청의 예는 3개의 API 키(`key`, `name`, `description`으로 식별됨)를 하나의 사용량 계획(`usageplanIds`로 식별됨)에 추가합니다.

```
POST /apikeys?mode=import&format=csv&failonwarnings=fase HTTP/1.1
Host: apigateway.us-east-1.amazonaws.com
Content-Type: text/csv
Authorization: ...

key,name, description, enabled, usageplanIds
abcdef1234ghijklmnop8901234567, importedKey_1, firstone,  tRuE, n371pt 
abcdef1234ghijklmnop0123456789, importedKey_2, secondone, TRUE, n371pt
abcdef1234ghijklmnop9012345678, importedKey_3,          , true, n371pt
```

따라서 3개의 `UsagePlanKey` 리소스가 생성되고 `UsagePlan`에 추가됩니다.

이런 식으로 두 개 이상의 사용량 계획에 API 키를 추가할 수도 있습니다. 이를 위해 각 `usageplanIds` 열 값을 사용자가 선택한 사용량 계획 식별자를 포함하고 따옴표로 묶인, 쉼표로 구분된 문자열로 변경합니다(`"n371pt,m282qs"` 또는 `'n371pt,m282qs'`).

------

**참고**  
API 키는 하나 이상의 사용량 계획과 연결할 수 있습니다. 사용량 계획은 하나 이상의 단계와 연결할 수 있습니다. 그러나 지정된 API 키는 API의 각 단계에 대하여 단 하나의 사용량 계획에만 연결할 수 있습니다.