Lambda 권한 부여자를 생성한 후 API Gateway 401 권한 없음 오류가 발생하는 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 5월 8일

Lambda 권한 부여자를 생성한 후 Amazon API Gateway API를 호출하면 401 권한 없음 오류가 발생합니다. 이 오류가 발생하는 이유는 무엇입니까?

간략한 설명

참고: API Gateway는 다양한 시나리오에서 401 권한 없음 오류를 반환할 수 있습니다. 이 문서에서는 Lambda 권한 부여자와 관련한 401 오류만 다룹니다.

Lambda 권한 부여자를 사용하는 API Gateway API가 권한 없는 요청을 수신하면 API Gateway는 401 권한 없음 응답을 반환합니다. 토큰 기반 권한 부여자의 경우 일반적으로 이 오류는 권한 부여자의 토큰 검증 표현식에서 필수 토큰이 누락되거나 무효화되었을 때 발생합니다. 요청 파라미터 기반 권한 부여자의 경우 일반적으로 구성된 자격 증명 소스가 누락되거나, null이거나, 비어 있거나, 유효하지 않을 때 이 오류가 발생합니다.

Lambda 권한 부여자 유형에 대한 자세한 내용은 API Gateway Lambda 권한 부여자 사용을 참조하십시오.

​해결 방법

API Gateway 콘솔에서 Lambda 권한 부여자의 구성을 검토하여 API에 대한 요청에 포함되어야 할 항목을 결정합니다. 그런 다음 필요한 헤더와 토큰 값 또는 자격 증명 소스로 API를 호출하여 권한 부여자를 테스트합니다.

팁: API Gateway 개발자 안내서의 예제 설정을 활용하면 Lambda 권한 부여자를 올바르게 구성하는 데 도움이 됩니다. 지침은 예: 토큰 기반 Lambda 권한 부여자 함수 생성 또는 예: 요청 기반 Lambda 권한 부여자 함수 생성을 참조하십시오.

Lambda 권한 부여자의 구성 확인

  1. API Gateway 콘솔의 [API] 창에서 API 이름을 선택합니다.
  2. 왼쪽 탐색 창의 API에서 [권한 부여자]를 선택합니다.
  3. 권한 부여자에서 다음을 검토합니다.
    [Lambda 이벤트 페이로드]가 [토큰]으로 설정된 경우 [토큰 소스]의 값을 확인합니다. 이 값을 요청 헤더로 사용해야 합니다. [토큰 검증]에 정규식을 입력한 경우 API Gateway는 이 표현식을 사용해 토큰을 검증합니다. 예를 들어 정규식 \w{5}를 입력한 경우 5자의 영숫자 문자열을 포함하는 토큰 값만 검증됩니다.
    [Lambda 이벤트 페이로드]가 [요청]으로 설정된 경우 구성된 자격 증명 소스를 확인합니다. 자격 증명 소스는 헤더, 쿼리 문자열, 스테이지 변수 또는 $context 변수일 수 있습니다. [권한 부여 캐싱]이 활성화되어 있는 경우 API에 대한 요청이 구성된 모든 자격 증명 소스에 대해 검증됩니다.
  4. [권한 부여 캐싱]이 설정되어 있는 경우("권한 부여가 {0}분 동안 캐싱됨") 다음 단계에서 테스트를 위해 캐싱을 비활성화합니다.

자세한 내용은 API Gateway 콘솔을 사용하여 Lambda 권한 부여자 구성을 참조하십시오.

API 배포

Lambda 권한 부여자의 구성 또는 기타 API 설정을 변경한 경우 API를 배포하여 변경 사항을 커밋합니다.

Lambda 권한 부여자 테스트

테스트로서 API를 호출합니다. 이때 Lambda 권한 부여자의 구성에 따라 요청을 구성합니다.

API Gateway 콘솔

  1. API Gateway 콘솔의 [권한 부여자] 페이지에서 권한 부여자에 대해 [테스트]를 선택합니다.
  2. [권한 부여자 테스트] 대화 상자에서 다음 중 하나를 수행합니다.
    토큰 기반 권한 부여자의 경우 {headerName} (헤더) 옆에 유효한 권한 부여 토큰 값을 입력합니다.
    요청 파라미터 기반 권한 부여자의 경우 [요청 파라미터]에 권한 부여자에 대해 구성된 모든 자격 증명 소스의 값을 입력합니다.
  3. [테스트]를 선택합니다.

권한 부여에 성공하면 응답 코드: 200이 표시됩니다.

Postman 또는 curl

Postman 앱을 사용하거나 명령 인터페이스에서 curl을 사용하여 테스트로서 API를 호출할 수도 있습니다. Postman을 사용하는 방법에 대한 지침은 API Gateway Lambda 권한 부여자를 사용하여 API 호출을 참조하십시오. curl에 대한 자세한 내용은 cURL 프로젝트 웹 사이트를 참조하십시오.

참고: 테스트 전에 Lambda 권한 부여자에 대해 권한 부여 캐싱을 비활성화한 경우 테스트 후 다시 활성화할 수 있습니다. 이 설정을 다시 활성화하는 경우 나중에 API를 다시 배포해야 합니다.