GCP 用の外部関数のトラブルシューティング

このトピックでは、 GCP 用の外部関数のトラブルシューティング情報を提供します。

このトピックの内容:

プラットフォームに依存しないランタイムの問題

データ型の戻り値が期待される戻り値と一致しない

外部関数との間で引数を渡すときは、データ型が適切であることを確認してください。送信された値が受信中のデータ型に適合しない場合、値は切り捨てられるか、他の方法で破損する可能性があります。

詳細については、 外部関数の引数がリモートサービスにより解析される引数に対応していることを確認 をご参照ください。

エラー: 行番号の順序が正しくありません

考えられる原因

各バッチ内で返される行番号は、0から始まる単調な昇順の整数でなければなりません。入力行番号もこのルールに従う必要があり、各出力行は対応する入力行と一致する必要があります。たとえば、出力行0の出力は、入力行0の入力に対応している必要があります。

考えられる解決策

返される行番号が受け取った行番号と同じであること、および各出力値が対応する入力の行番号を使用していることを確認してください。これが機能しない場合は、入力された行番号が正しくないか、行を正しい順序で返さなかった可能性があります。

次に、出力行番号が0から始まり、1ずつ増加し、順番に並んでいることを確認します。

データの入力形式および出力形式の詳細については、 リモートサービスの入力および出力データ形式 をご参照ください。

エラー: 「JSON の解析エラー: 無効な応答」

考えられる原因

最も可能性の高い原因は、リモートサービスから返された JSON (例: AWS Lambda関数)が正しく構築されていないことです。

考えられる解決策

外部関数が受け取った入力行ごとに1つの内部配列を返し、配列中の配列1つを返すことを確認します。 Snowflakeが受信するデータ形式 で出力形式の説明を確認します。

エラー: 戻り値の形式がJSONではありません

考えられる原因

考えられる原因の1つは、戻り値の中に二重引用符が含まれていることです。

考えられる解決策

JSON文字列は二重引用符で区切られますが、ほとんどの場合、文字列自体は引用符で開始および終了できません。埋め込まれた二重引用符が正しくない場合は、削除してください。

エラー: 関数が間違った行数を受け取りました

考えられる原因

リモートサービスが受信した行よりも多いか少ない行を返そうとしました。関数は名目上スカラーではあるものの、 event パラメーターの body フィールドに複数の行を受け取る可能性があり、受け取った行とまったく同じ数の行を返す必要があります。

考えられる解決策

リモートサービスが、受信する行ごとに1行を返すことを確認します。

GCP固有の問題

エラー: '{"message":"Audiences in Jwt are not allowed","code":403} ' が表示され、リクエストに失敗

考えられる原因

API統合の google_audience フィールドの値が許可されていません。

考えられる解決策
  • API統合の google_audience 値が、APIのマネージドサービス名と一致することを確認してください。この名前は、追跡ワークシートの「Managed Service Identifier」フィールドに記録する必要があります。

  • API Configファイルの securityDefinitions セクションに x-google-audiences フィールドを追加した場合は、 x-google-audiences の値がAPI統合の google_audience フィールドの値と一致することを確認してください。

Googleでの認証の詳細については、Googleサービスアカウント 認証のドキュメント をご参照ください。

エラー: '{"message":"Jwt is missing","code":401} ' が表示され、リクエストに失敗

考えられる原因
  • 構成ファイルの securityDefinitions フィールドにある x-google-issuer フィールドの値が、追跡ワークシートに記録されているAPI統合の API_GCP_SERVICE_ACCOUNT の値と一致しない場合があります。

  • x-google-issuer の値には、余分な空白が含まれている可能性があります。

考えられる解決策
  • API_GCP_SERVICE_ACCOUNT と一致するように x-google-issuer を更新します。

  • 不要な空白を削除します。

エラー: '403 Forbidden' が表示され、リクエストに失敗

考えられる原因

Configを使用しているサービスアカウントに、バックエンドに対する適切なアクセス許可がありません。

考えられる解決策

サービスアカウントの権限を更新します。