GCP에 대한 외부 함수 문제 해결하기¶
이 항목에서는 GCP의 외부 함수에 대한 문제 해결 정보를 제공합니다.
이 항목의 내용:
플랫폼과는 무관한 런타임 문제¶
데이터 타입 반환 값이 예상 반환 값과 일치하지 않음¶
인자를 외부 함수로 전달하거나 외부 함수에서 전달할 때, 데이터 타입이 적절한지 확인하십시오. 전송된 값이 수신 중인 데이터 타입에 맞지 않으면 다른 방식으로 값이 잘리거나 손상될 수 있습니다.
자세한 내용은 외부 함수에 대한 인자가 원격 서비스에서 구문 분석한 인자와 일치하도록 하기 섹션을 참조하십시오.
오류: 행 번호가 잘못됨¶
- 가능한 원인:
각 배치 내에서 반환하는 행 번호는 0에서 시작해 단조 증가하는 정수여야 합니다. 입력 행 번호 역시 이 규칙을 따라야 하며, 각 출력 행은 해당 입력 행과 일치해야 합니다. 예를 들어, 출력 행 0의 출력은 입력 행 0의 입력과 일치해야 합니다.
- 가능한 해결책:
반환하는 행 번호가 수신한 행 번호와 똑같고 각 출력 값이 해당 입력의 행 번호를 사용하는지 확인합니다. 이 방법이 효과가 없으면 입력 행 번호가 정확하지 않을 수 있거나 행을 올바른 순서로 반환하지 않았을 수 있습니다.
다음으로, 출력 행 번호가 0에서 시작해 1씩 증가하고 순서가 올바른지 확인합니다.
데이터 입력 및 출력 형식에 대한 자세한 내용은 원격 서비스 입력 및 출력 데이터 타입 을 참조하십시오.
오류: “JSON 구문 분석 중 오류: 잘못된 응답”¶
- 가능한 원인:
가장 가능성이 큰 원인은 원격 서비스에서 반환되는 JSON(예: AWS Lambda Function)이 올바르게 생성되지 않았기 때문입니다.
- 가능한 해결책:
외부 함수가 수신된 각 입력 행에 대해 하나의 내부 배열이 반환되는 배열로 구성된 배열을 반환하는지 확인합니다. Snowflake에서 받는 데이터 타입 에서 출력 형식에 대한 설명을 살펴보십시오.
오류: 반환된 값의 형식이 JSON이 아닙니다.¶
- 가능한 원인:
반환 값은 값 안에 큰따옴표를 포함합니다.
- 가능한 해결책:
JSON 문자열은 큰따옴표로 구분되지만, 대부분의 경우 문자열 자체는 따옴표로 시작하고 끝나면 안 됩니다. 포함된 큰따옴표가 올바르지 않은 경우에는 제거하십시오.
오류: 함수가 잘못된 수의 행을 수신함¶
- 가능한 원인:
원격 서비스가 수신한 것보다 많거나 적은 행을 반환하려고 했습니다. 함수가 명목상 스칼라이더라도,
event
매개 변수의body
필드에서 여러 행을 수신할 수도 있으며 수신한 개수만큼의 행을 정확히 반환해야 합니다.- 가능한 해결책:
원격 서비스가 수신하는 행마다 하나의 행을 반환하도록 합니다.
GCP에 특정한 문제¶
오류: ‘{“메시지”:”Jwt의 대상 그룹은 허용되지 않음”,”코드”:403}’으로 요청 실패¶
- 가능한 원인:
API 통합의
google_audience
필드에서 이 값은 허용되지 않습니다.- 가능한 해결책:
API 통합의
google_audience
값이 추적 워크시트의Managed Service Identifier
필드에 기록해야 하는 API의 관리형 서비스 이름과 일치하는지 확인합니다.API 구성 파일의 securityDefinitions 섹션에 x-google-audiences 필드를 추가한 경우 x-google-audiences 의 값이 API 통합의
google_audience
필드에 있는 값과 일치하는지 확인하십시오.
Google 인증에 대한 자세한 내용은 Google 서비스 계정 인증 설명서 를 참조하십시오.
오류: ‘{“메시지”:”Jwt가 없음”,”코드”:401}’로 요청 실패¶
- 가능한 원인:
구성 파일에서 securityDefinitions 필드에 있는 x-google-issuer 필드의 값이 추적 워크시트에 기록된 API 통합에 대한 API_GCP_SERVICE_ACCOUNT 의 값과 일치하지 않을 수 있습니다.
x-google-issuer 의 값에 추가 공백이 포함될 수 있습니다.
- 가능한 해결책:
API_GCP_SERVICE_ACCOUNT 와 일치하도록 x-google-issuer 를 업데이트하십시오.
불필요한 공백을 제거하십시오.
오류: ‘403 금지’로 요청 실패¶
- 가능한 원인:
이 구성을 사용하는 서비스 계정에 백엔드에 대한 적절한 권한이 없습니다.
- 가능한 해결책:
서비스 계정의 권한을 업데이트하십시오.