Amazon Connect 고객 응대 흐름에서 발생하는 Lambda 함수 오류 문제를 해결하려면 어떻게 해야 합니까?

4분 분량
0

고객 응대 흐름이 Amazon Connect에서 함수를 호출하려고 할 때 AWS Lambda 함수 호출이 실패하는 이유를 알고 싶습니다.

해결 방법

고객 응대 흐름 로그에서 오류 메시지 확인

다음 작업을 완료하십시오.

  • 고객 응대 흐름 로그를 구성하지 않은 경우 Amazon Connect 인스턴스에 대한 고객 응대 흐름 로깅을 활성화합니다.
  • 고객 응대 흐름 로그에서 오류 메시지를 검색합니다. 예를 들어 특정 기간의 오류 메시지를 검색하려면 다음과 비슷한 쿼리를 실행합니다.
    fields @timestamp, @message
    | filter @message like 'Results'
    | parse @message '"Results":"*","ContactId":"*","ContactFlowId":"*","ContactFlowName":"*","ContactFlowModuleType":"*"' as Results, ContactId, ContactFlowId, ContactFlowName, BlockType
    | filter Results like 'rror' or Results like 'ailed' or Results like 'imeout' or Results like 'xception' or Results like 'No prompt provided' or Results like 'Instance has reached concurrent Lambda thread access limit' or Results like 'nsupported' or Results like 'nvalid' or Results like 'not found' or Results like 'execution limit reached'
    | filter BlockType = 'InvokeExternalResource'
    | sort @timestamp asc
    | display Timestamp, Results, ContactId, ContactFlowId, ContactFlowName, BlockType

오류 메시지를 기반으로 다음 작업을 완료합니다.

Status Code: 403; Error Code: AccessDeniedException; RequestId: XXXXXXXX

함수의 리소스 기반 정책이 Amazon Connect에 함수 호출 권한을 부여하지 않는 경우 위 오류가 발생할 수 있습니다. 함수의 리소스 기반 정책을 검토하여 정책에 필요한 권한이 포함되어 있는지 확인하십시오.

정책에 필요한 권한을 추가하려면 다음 방법 중 하나를 사용하십시오.

  • Amazon Connect 콘솔을 사용하여 인스턴스에 Lambda 함수를 추가합니다. 함수는 인스턴스에 추가될 때 자동으로 리소스 권한을 가져옵니다.

  • add-permission AWS Command Line Interface(AWS CLI) 명령을 실행합니다. 주요 connect.amazonaws.com과 Amazon Connect 인스턴스의 Amazon Resource Name(ARN)을 포함합니다.
    예시:

    aws lambda add-permission --function-name function-name --action lambda:InvokeFunction --statement-id connect-to-lambda --principal connect.amazonaws.com --source-arn connect-instance-arn
  • Lambda 콘솔을 사용하여 리소스 기반 정책을 생성합니다. 자세한 내용은 Lambda에서 권한 관리를 참조하십시오.
    리소스 기반 정책 예시:

    {
      "Version": "2012-10-17",
      "Id": "default",
      "Statement": [
        {
          "Sid": "100",
          "Effect": "Allow",
          "Principal": {
            "Service": "connect.amazonaws.com"
          },
          "Action": "lambda:InvokeFunction",
          "Resource": "<Qualified AWS Lambda ARN>",
          "Condition": {
            "ArnLike": {
              "AWS:SourceArn": "<Amazon Connect ARN>"
            }
          }
        }
      ]
    }

"The Lambda Function Returned An Error"

위 오류의 원인을 알아보려면 Lambda의 Amazon CloudWatch 지표를 확인합니다. 관련 타임스탬프의 데이터에 대한 지표를 검토합니다.

오류 지표에 관련 타임스탬프의 데이터가 포함되어 있지 않은 경우 함수의 응답을 확인합니다.

참고: Lambda 함수에서 반환된 출력을 테스트하는 것이 모범 사례입니다. Lambda 함수가 Amazon Connect와 호환되는 형식으로 출력을 반환하는지 확인하십시오.

출력을 보려면 다음 구성을 검토합니다.

  • Lambda 페이로드는 NULL이 아닌 값이어야 합니다.
  • 응답 검증 유형이 STRING_MAP인 경우 출력은 키 값 쌍으로 구성된 플랫 객체여야 하며 중첩될 수 없습니다. 유형이 JSON인 경우 객체는 유효한 JSON 값이어야 하며 중첩된 JSON을 포함할 수 있습니다.
  • 키-값 쌍에는 영숫자, 대시 문자 또는 밑줄 문자만 포함될 수 있습니다.
  • 반환되는 데이터의 크기는 32KB 미만이어야 하며 UTF-8 데이터여야 합니다.
  • Lambda 함수의 제한 시간 설정이 충분히 높은 값으로 설정되었는지 확인합니다. 함수가 데이터를 호출하고 처리한 다음 응답을 반환할 수 있을 만큼 값이 커야 합니다.

고객 응대 흐름에서 Lambda 함수 호출을 사용하는 경우, 제한은 Lambda 최대 제한 시간에 구성된 제한보다 작습니다. 제한 시간 설정의 기본값은 3초이고 최대값은 8초입니다.

예를 들어 Lambda 함수가 제한 시간 값이 15초로 구성되어 있고 Lambda가 10초 동안 실행된다고 가정해 보겠습니다. 제한 시간 오류는 발생하지 않지만, 허용 가능한 최대 제한 시간 값이 8초이기 때문에 고객 응대 흐름은 실행을 오류 분기로 라우팅합니다.

함수를 호출하는 데 걸리는 시간을 알아보려면 Amazon CloudWatch에서 함수의 기간 지표를 검토하십시오. 그런 다음 필요에 따라 Lambda 함수 호출Lambda 함수의 제한 시간 값을 업데이트합니다.

참고: 호출하는 데 8초 이상 걸리는 Lambda 함수를 고객 응대 흐름에 포함시키려면 Amazon Connect에서 비동기 Lambda 함수를 사용하십시오. Lambda 함수를 여러 개 호출하는 경우 함수 시퀀스의 지속 시간은 20초 이하여야 합니다.

Lambda 오류 지표에 관련 타임스탬프의 데이터가 포함된 경우 Lambda 함수 오류 문제를 해결하려면 어떻게 해야 합니까?의 단계를 완료하십시오.

관련 정보

Amazon Connect에서 AWS Lambda 함수 별칭 호출

AWS 공식
AWS 공식업데이트됨 4달 전