API 키 소스 선택 - Amazon API Gateway

API 키 소스 선택

사용량 계획을 API와 연결하고 API 메서드에서 API 키를 활성화할 때 API에 수신되는 모든 요청에는 API 키가 포함되어야 합니다. API Gateway는 이 키를 읽고 사용량 계획에 있는 키와 비교합니다. 일치하는 항목이 있으면 API Gateway는 계획의 요청 한도와 할당량에 따라 요청을 제한합니다. 그렇지 않으면 InvalidKeyParameter 예외가 발생합니다. 그 결과, 호출자는 403 Forbidden 응답을 수신합니다.

API Gateway API는 다음 둘 중 하나의 소스에서 API 키를 수신할 수 있습니다.

HEADER

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

AUTHORIZER

Lambda 권한 부여자가 권한 부여 응답의 일부로 API 키를 반환하도록 할 수 있습니다. 권한 부여 응답에 대한 자세한 내용은 API Gateway Lambda 권한 부여자의 출력 단원을 참조하세요.

참고

고려해야 할 모범 사례는 API 키 및 사용량 계획의 위한 모범 사례 섹션을 참조하세요.

API Gateway 콘솔을 사용하여 API의 API 키 소스를 선택하려면
  1. API Gateway 콘솔에 로그인합니다.

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

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

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

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

  6. Save changes(변경 사항 저장)를 선택합니다.

AWS CLI를 사용하여 API의 API 키 소스를 선택하려면 다음과 같이 update-rest-api 명령을 호출합니다.

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

클라이언트가 API 키를 제출하도록 하려면 이전의 CLI 명령에서 valueHEADER로 설정합니다.

API Gateway REST API를 사용하여 API의 API 키 소스를 선택하려면 다음과 같이 restapi:update를 호출합니다.

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 입력에서 AUTHORIZERpatchOperations로 설정합니다.

선택하는 API 키 원본 유형에 따라 다음 절차 중 하나를 사용하여 메서드 호출에서 헤더로 제공된 API 키 또는 권한 부여자가 반환한 API 키를 사용합니다.

헤더로 제공된 API 키를 사용하려면
  1. 원하는 API 메서드를 사용하여 API를 생성한 다음, API를 스테이지에 배포합니다.

  2. 새 사용량 계획을 만들거나 기존 사용량 계획을 선택합니다. 사용량 계획에 배포한 API 단계를 추가합니다. 사용량 계획에 API 키를 연결하거나 계획에서 기존 API 키를 선택합니다. 선택한 API 키 값을 적어 둡니다.

  3. API 키를 요구하도록 API 메서드를 설정합니다.

  4. 동일한 단계에 API를 다시 배포합니다. 새 단계에 API를 배포하는 경우 새 API 단계를 연결하도록 사용량 계획을 업데이트해야 합니다.

이제 클라이언트가 x-api-key 헤더에 선택한 API 키를 헤더 값으로 제공하여 API 메서드를 호출할 수 있습니다.

권한 부여자가 제공한 API 키를 사용하려면
  1. 원하는 API 메서드를 사용하여 API를 생성한 다음, API를 스테이지에 배포합니다.

  2. 새 사용량 계획을 만들거나 기존 사용량 계획을 선택합니다. 사용량 계획에 배포한 API 단계를 추가합니다. 사용량 계획에 API 키를 연결하거나 계획에서 기존 API 키를 선택합니다. 선택한 API 키 값을 적어 둡니다.

  3. 토큰 기반 Lambda 권한 부여자를 생성합니다. 권한 부여 응답의 루트 수준 속성으로 usageIdentifierKey:{api-key}를 포함시킵니다. 토큰 기반 권한 부여자를 만드는 방법에 대한 지침은 TOKEN 권한 부여자 Lambda 함수 예제을 참조합니다.

  4. API 키를 요구하도록 API 메서드를 설정하고, 메서드에서 Lambda 권한 부여자를 활성화합니다.

  5. 동일한 단계에 API를 다시 배포합니다. 새 단계에 API를 배포하는 경우 새 API 단계를 연결하도록 사용량 계획을 업데이트해야 합니다.

이제 클라이언트가 API 키를 명시적으로 제공하지 않고도 API 키 요구 메서드를 호출할 수 있습니다. 권한 부여자가 반환한 API 키가 자동으로 사용됩니다.