Amazon API Gateway
개발자 안내서

API Gateway 콘솔을 사용하여 Lambda 권한 부여자 구성

Lambda 함수를 생성하고 함수가 작동하는지 확인한 후, API Gateway 콘솔에서 다음 단계를 사용해 API Gateway Lambda 권한 부여자(이전에는 사용자 지정 권한 부여자라고 함)를 구성합니다.

API Gateway 콘솔을 사용하여 Lambda 권한 부여자를 구성하려면

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

  2. 새 API를 생성하거나 기존 API를 선택하고 그 API 아래에서 권한 부여자를 선택합니다.

  3. Create New Authorizer(새로운 권한 부여자 생성)를 선택합니다.

  4. 권한 부여자 생성에서 이름 입력 필드에 권한 부여자 이름을 입력합니다.

  5. 유형에서 Lambda 옵션을 선택합니다.

  6. Lambda 함수에서 자신의 계정에서 사용 가능한 Lambda 권한 부여자 함수를 선택합니다.

  7. Lambda 호출 역할은 API Gateway 콘솔이 리소스 기반 정책을 설정하도록 비워 둡니다. 이 정책은 권한 부여자 Lambda 함수를 호출할 수 있는 권한을 API Gateway에 부여합니다. API Gateway가 권한 부여자 Lambda 함수를 호출하도록 허용하는 IAM 역할의 이름을 입력할 수도 있습니다. 이러한 역할의 예는 수임 가능한 IAM 역할 만들기를 참조하십시오.

    API Gateway 콘솔이 리소스 기반 정책을 설정하도록 허용할 경우, Add Permission to Lambda Function(Lambda 함수에 대한 권한 추가) 대화 상자가 표시됩니다. 확인을 선택합니다. Lambda 권한 부여가 생성된 후, 적절한 권한 부여 토큰 값으로 테스트하여 예상대로 작동하는지 확인할 수 있습니다.

  8. Lambda 이벤트 페이로드에서, TOKEN 권한 부여자의 경우 토큰, REQUEST 권한 부여자의 경우 요청을 선택합니다. (이는 유형 속성을 TOKEN 또는 REQUEST로 설정하는 것과 같습니다.)

  9. 이전 단계에서의 선택에 따라 다음 중 하나를 수행합니다.

    1. 토큰 옵션의 경우 다음을 수행합니다.

      • Token Source(토큰 원본)에 헤더의 이름을 입력합니다. API 클라이언트는 권한 부여 토큰을 Lambda 권한 부여자에게 전송하려면 이 이름의 헤더를 포함해야 합니다.

      • 선택적으로 Token Validation 입력 필드에 정규 표현식 문을 제공합니다. API Gateway는 이 표현식에 대해 입력 토큰의 초기 확인을 수행하고 확인이 성공할 경우 권한 부여자를 호출합니다. 그러면 잘못된 토큰에 대해 요금이 부과될 가능성을 줄일 수 있습니다.

      • Authorization Caching(권한 부여 캐싱)에서, 권한 부여자에 의해 생성되는 권한 부여 정책을 캐싱할지 여부에 따라 활성 옵션을 선택하거나 선택 취소합니다. 정책 캐싱을 활성화한 경우 TTL 값을 수정할 수 있습니다. TTL을 0으로 설정하면 정책 캐싱이 비활성화됩니다. 정책 캐싱을 비활성화한 경우 Token Source(토큰 원본)에 지정된 헤더 이름이 캐시 키가 됩니다.

        참고

        기본 TTL 값은 300초입니다. 최대 TTL 값은 3600초이며, 이 제한은 늘릴 수 없습니다.

    2. 요청 옵션의 경우 다음을 수행합니다.

      • 자격 증명 원본에 선택한 파라미터 유형의 요청 파라미터 이름을 입력합니다. 지원되는 파라미터 유형은 Header, Query String, Stage VariableContext입니다. 자격 증명 원본을 더 추가하려면 Add Identity Source(자격 증명 원본 추가)를 선택합니다.

        API Gateway는 지정된 자격 증명 원본을 요청 권한 부여자 캐싱 키로 사용합니다. 캐싱을 활성화한 경우 API Gateway가 런타임 시 모든 지정된 자격 증명 원본이 존재하는 것을 성공적으로 확인한 경우에만 권한 부여자의 Lambda 함수를 호출합니다. 지정된 자격 증명 원본이 없거나, null이거나, 비어 있을 경우 API Gateway가 권한 부여자 Lambda 함수를 호출하지 않고 401 Unauthorized 응답을 반환합니다.

        복수의 자격 증명 원본이 정의된 경우 모두 권한 부여자의 캐시 키를 도출하는 데 사용됩니다. 캐시 키 부분을 변경하면 권한 부여자가 캐시된 정책 문서를 폐기하고 새로 생성합니다.

      • Authorization Caching(권한 부여 캐싱)에서, 권한 부여자에 의해 생성되는 권한 부여 정책을 캐싱할지 여부에 따라 활성 옵션을 선택하거나 선택 취소합니다. 정책 캐싱을 활성화한 경우 TTL 값을 기본값(300)에서 수정할 수 있습니다. TTL=0으로 설정하면 정책 캐싱이 비활성화됩니다.

        캐싱을 비활성화한 경우 자격 증명 원본을 지정할 필요가 없습니다. API Gateway는 권한 부여자 Lambda 함수를 호출하기 전에 확인을 수행하지 않습니다.

    참고

    캐싱을 활성화하려면 권한 부여자가 API 전체의 모든 메서드에 적용 가능한 정책을 반환해야 합니다. 메서드별 정책을 적용하기 위해, TTL 값을 0으로 설정해 API 정책 캐싱을 비활성화할 수 있습니다.

  10. 생성을 선택하여 선택된 API에 대해 새 Lambda 권한 부여자를 생성합니다.

  11. API에 대해 권한 부여자가 생성되면, 선택적으로 메서드에 대해 권한 부여자를 구성하기 전에 권한 부여자 호출을 테스트할 수 있습니다.

    TOKEN 권한 부여자의 경우 Identity token(자격 증명 토큰) 입력 텍스트 필드에 유효한 토큰을 입력하고 테스트를 선택합니다. 토큰이 권한 부여자의 Identity token source(자격 증명 토큰 원본) 설정에서 지정된 헤더로 Lambda 함수에 전달됩니다.

    REQUEST 권한 부여자의 경우 지정된 자격 증명 원본에 해당하는 유효한 요청 파라미터를 입력하고 테스트를 선택합니다.

    API Gateway 콘솔을 사용하는 이외에 AWS CLI 또는 API Gateway용 AWS SDK를 사용해 권한 부여자 호출을 테스트할 수 있습니다. AWS CLI를 사용해 테스트하려면 test-invoke-authorizer를 참조하십시오.

    참고

    메서드 실행 test-invoke와 권한 부여자 test-invoke는 독립된 프로세스입니다.

    API Gateway 콘솔을 사용하여 메서드 호출을 테스트하려면 콘솔을 사용하여 REST API 메서드 테스트를 참조하십시오. AWS CLI를 사용하여 메서드 호출을 테스트하려면 test-invoke-method를 참조하십시오.

    메서드 및 구성된 권한 부여자 호출을 테스트하려면 API를 배포한 후, cURL 또는 Postman을 사용해 필요한 토큰 또는 요청 파라미터를 제공하여 메서드를 호출합니다.

다음 절차에서는 Lambda 권한 부여자를 사용하도록 API 메서드를 구성하는 방법을 보여줍니다.

Lambda 권한 부여자를 사용하도록 API 메서드를 구성하려면

  1. API로 돌아갑니다. 새 메서드를 생성하거나 기존 메서드를 선택합니다. 필요하다면 새 리소스를 만듭니다.

  2. Method Execution(메서드 실행)에서 Method Request(메서드 요청) 링크를 선택합니다.

  3. 설정에서 Authorization(권한 부여) 드롭다운 목록을 확장하여 방금 생성한 Lambda 권한 부여자(예: myTestApiAuthorizer)를 선택한 후, 확인 표시 아이콘을 선택하여 저장합니다.

  4. 사용자 지정 권한 부여 토큰을 백엔드로도 전달하려는 경우, 선택적으로 Method Request(메서드 요청) 페이지에 계속 머물면서 Add header(헤더 추가)를 선택합니다. 이름에서, API에 대한 Lambda 권한 부여자를 생성할 때 지정한 Token Source(토큰 원본) 이름과 일치하는 헤더 이름을 입력합니다. 그런 다음 확인 표시 아이콘을 선택하여 설정을 저장합니다. REQUEST 권한 부여자에는 이 단계가 적용되지 않습니다.

  5. Deploy API(API 배포)를 선택하여 단계에 API를 배포합니다. Invoke URL(URL 호출) 값을 메모합니다. API 호출 시 필요합니다. 단계 변수를 사용하는 REQUEST 권한 부여자의 경우 (Stage Editor(단계 편집기)가 열려 있는 동안 필요한 단계 변수를 지정하고 값을 지정해야 합니다.