Amazon Cognito에서 Lambda 트리거와 관련된 오류를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Cognito에서 AWS Lambda 함수를 트리거로 구성하는 동안 발생하는 오류를 해결하고 싶습니다.

해결 방법

다음은 Amazon Cognito에서 Lambda 트리거를 사용할 때 해결해야 하는 일반적인 오류입니다.

“액세스 거부 예외 오류로 인해 사전 등록 호출이 실패했습니다.“

**참고:**트리거 유형은 오류 메시지에 언급되어 있습니다. 예를 들어 사용자 풀에 PreSignUp 트리거로 연결된 Lambda 함수는 위 오류로 응답합니다.

오류 원인

Amazon Cognito 콘솔에서 Lambda 함수를 사용자 풀에 트리거로 추가하면 Amazon Cognito는 다음 작업을 수행합니다.

  • 함수의 리소스 정책에 필요한 권한을 추가합니다. 이 리소스 정책을 사용하면 특정 이벤트 트리거 유형의 경우 Amazon Cognito가 함수를 호출할 수 있습니다.
  • 다음 메시지를 표시합니다. “Lambda 함수 호출 권한 - Amazon Cognito에 사용자를 대신하여 이 Lambda 함수를 호출할 수 있는 권한을 부여하는 것입니다. Amazon Cognito는 리소스 기반 정책 설명을 함수에 추가합니다.“

이 오류는 트리거로 추가한 함수를 삭제할 때도 발생합니다. Lambda 트리거를 삭제하는 경우 사용자 풀에서 해당 트리거를 업데이트해야 합니다. 예를 들어 사후 인증 트리거를 삭제하는 경우 해당 사용자 풀의 사후 인증 트리거없음으로 설정해야 합니다.

오류 해결

Amazon Cognito 콘솔 외부에서 트리거를 만들 때는 트리거를 사용자 풀에 할당할 때 명시적으로 권한을 추가해야 합니다. 권한을 추가하려면 AWS SDK, AWS Command Line Interface (AWS CLI) 또는 Amazon CloudFormation을 사용하십시오.

권한을 추가하면 Amazon Cognito는 사용자 풀 및 계정을 대신해서만 함수를 호출합니다. Lambda 콘솔에서 권한을 추가하려면 Lambda용 리소스 기반 정책 사용의 단계를 따르십시오. AddPermission 작업을 사용할 수도 있습니다.

다음은 Amazon Cognito가 함수를 호출하도록 허용하는 Lambda 리소스 기반 정책의 예입니다. 사용자 풀은 aws:SourceArn 상태이고 계정은aws:SourceAccount 상태입니다.

**참고:**example_lambda_function_arn,example_account_number,example_user_pool_arn을 사용자 고유의 값으로 바꾸십시오.

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "lambda-allow-cognito",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "example_lambda_function_arn",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "example_account_number"
        },
        "ArnLike": {
          "AWS:SourceArn": "example_user_pool_arn"
        }
      }
    }
  ]
}

“인증 오류가 발생했습니다. 앱 소유자에게 문의하십시오.“

오류 원인

이 오류는 다음 두 가지 이유로 발생합니다.

  • 사용자 지정 발신자 Lambda 트리거를 제외하고 Amazon Cognito는 Lambda 함수를 동기적으로 호출합니다. 함수는 5초 이내에 응답해야 합니다. 함수가 응답하지 않는 경우 Amazon Cognito는 호출을 재시도합니다. 세 번의 시도가 실패하면 함수의 제한 시간이 초과됩니다. 5초 제한 시간 값은 변경할 수 없습니다.
  • Amazon Cognito가 5초 이내에 트리거로부터 응답을 받지 못하면 세 번의 시도가 실패하면 Amazon Cognito가 오류를 반환합니다.

오류 해결

함수 제한 시간이 초과되면 Lambda 함수 사용에 대한 모범 사례를 적용하여 함수를 최적화하십시오. 사용자 풀과 연결된 Lambda 함수가 두 번째 Lambda 함수를 비동기적으로 호출하도록 할 수 있습니다. 이 설정을 통해 함수는 시간 초과 없이 필요한 모든 작업을 수행할 수 있습니다.

“lambda_function 모듈의 구문 오류가 발생하여 PreSignUp이 실패했습니다.“

오류 원인

Amazon Cognito는 Lambda 함수에 구문 오류가 있을 때 이 오류를 반환합니다.

오류 해결

함수 코드를 다시 확인하고 구문 오류를 수정합니다.

“핸들러 PreSignUp 오류로 PreSignUp이 실패했습니다. 모듈에 lambda_function이 누락되었습니다.“

오류 원인

함수의 런타임 설정에는 핸들러 매개 변수가 포함됩니다. HandlerInfo에 잘못된 정보나 구문이 설정된 경우 함수가 실행되지 않아 이 오류가 발생합니다.

오류 해결

함수 구성에서 핸들러 파라미터를 구성하여 Lambda 런타임에 호출할 핸들러 메서드를 지시합니다.

](https://docs.aws.amazon.com/lambda/latest/dg/python-handler.html)Python에서 함수를 구성할[ 때 핸들러 설정 값은 파일 이름과 점으로 구분된 핸들러 모듈 이름입니다. 예를 들어, Main.handler는 main.py에 정의된 핸들러 메서드를 호출합니다.

핸들러 구문에 대한 자세한 내용은 런타임 환경 수정을 참조하십시오.

관련 정보

중요 고려 사항

사용자 지정 AWS Lambda 런타임

AWS 공식
AWS 공식업데이트됨 2년 전