내용으로 건너뛰기

API Gateway의 Lambda Authorizer 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon API Gateway API에 AWS Lambda Authorizer를 연결했습니다. API Gateway 호출 요청에 대해 표시되는 Lambda Authorizer 오류를 해결하고 싶습니다.

해결 방법

호출 요청이 Lambda 함수에 도달하는지 확인

Amazon CloudWatch를 사용하여 호출 지표를 검토합니다. 지표에 값이 표시되면 호출 요청이 Lambda 함수에 도달하는 것입니다.

호출 지표에 호출이 표시되지 않는 경우 스로틀 지표에서 스로틀링된 호출 요청을 확인하세요. Lambda 스로틀링 문제를 해결하려면 "Rate exceeded" 및 "TooManyRequestsException" 스로틀링 오류가 발생하는 Lambda 함수 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

API Gateway 실행 로그를 검토하여 오류 파악

Lambda Authorizer 오류를 파악하려면 CloudWatch API 로깅을 켜고 로그를 검토하십시오. 그런 다음, 표시된 오류 메시지를 기반으로 문제를 해결하십시오.

"Invalid permissions on Lambda function" 오류 해결

다음 오류 메시지가 표시된다면 API Gateway API에 Lambda 함수를 호출할 권한이 없는 것입니다.

"Execution failed due to configuration error: Invalid permissions on Lambda function"

사용자가 API Gateway 콘솔에서 Lambda Authorizer를 만들면 API Gateway는 Lambda 함수의 리소스 기반 정책에 필요한 권한을 자동으로 추가합니다. AWS CloudFormation 또는 AWS Cloud Development Kit(AWS CDK)와 같은 코드형 인프라(IaC) 도구를 사용하여 Lambda Authorizer를 구성하는 경우 권한을 수동으로 추가해야 합니다.

Lambda 함수의 리소스 기반 정책에 다음 권한을 추가합니다.

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "xyz",
      "Effect": "Allow",
      "Principal": {
        "Service": "apigateway.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:your-region:accountID:function:function-name",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:execute-api:your-region:accountID:API_ID/authorizers/AuthorizerID"
        }
      }
    }
  ]
}

참고: your-region을 AWS Region으로, accountID를 AWS 계정 ID로, function-name을 Lambda 함수 이름으로 바꾸십시오. 또한 API_ID를 API Gateway API ID로, AuthorizerID를 Lambda Authorizer ID로 바꾸십시오.

교차 계정 Lambda Authorizer를 구성하려면 교차 계정 API Gateway Lambda Authorizer 구성을 참조하십시오.

"Unable to parse given policy" 구성 오류 해결

다음과 같은 오류 메시지가 표시된다면 권한 부여자 Lambda 함수에 문제가 있는 것입니다.

"Execution failed due to configuration error: Unable to parse given policy"

이 문제를 해결하려면 다음 단계를 완료하십시오.

  1. Lambda 콘솔을 엽니다.
  2. 탐색 창에서 함수를 선택한 다음 인증 Lambda 함수를 선택합니다.
  3. 함수의 코드 소스를 검토합니다. 코드가 올바른지 확인합니다.<br id=hardline_break/> 참고: 유효한 예제는 REQUEST 권한 부여자 Lambda 함수 예제TOKEN 권한 부여자 Lambda 함수 예제를 참조하십시오.
  4. Lambda 함수가 제대로 작동하는지 확인하려면 함수를 테스트하십시오.

"AuthorizationFailureException" 오류 해결

다음과 같은 오류 메시지가 표시된다면 Lambda Authorizer에 문제가 있는 것일 수 있습니다.

"Execution failed due to an authorizer error Tue Jan 01 04:59:40 UTC 2020 : AuthorizerFailureException"

이 문제를 해결하려면 CloudWatch 로그를 확인하여 Lambda 함수에 권한 부여 실패, 코드 구문 오류 또는 제한 시간 초과 문제가 있는지 조사하십시오.

"500 Internal Server Error" 오류 해결

API Gateway HTTP API를 호출할 때 "500 Internal Server Error" 오류 메시지가 표시되는 경우 Lambda Authorizer 문제 해결을 참조하십시오.

참고: Lambda Authorizer가 10초 이내에 응답하지 않는 경우에도 이 오류 메시지가 표시됩니다.