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

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

このトピックの内容:

トラブルシューティング

プラットフォームに依存しない症状

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

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

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

SQL から関数を呼び出すと、行番号が故障しているというメッセージを表示

考えられる原因

各バッチ内で返される行番号は、0から始まる単調な昇順の整数でなければならないことに注意してください。入力行番号もその規則に従う必要があり、各出力行は対応する入力行と一致する必要があります(例: 出力行0の出力は、入力行0の入力に対応する必要あり)。

考えられる解決策
  1. 返される行番号が受け取った行番号と同じであること、および各出力値が対応する入力の行番号を使用していることを確認してください。これで うまくいくはずです。解決できない場合は、入力行番号が正しくなかったか、行を正しい順序で返していない可能性があるため、以下のステップ2に進みます。

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

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

外部関数を呼び出そうとすると、「エラー解析 JSON: 無効な応答」というメッセージを表示

考えられる原因

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

考えられる解決策

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

戻り値の形式が JSON ではないことを示すエラーメッセージ

考えられる原因

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

考えられる解決策

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

関数が間違った行数を受け取ったことを示すエラーメッセージ

考えられる原因

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

考えられる解決策

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

プラットフォーム固有の症状

'{"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' が表示され、リクエストに失敗

考えられる原因

この失敗で考えられる原因の1つは、Configを使用しているサービスアカウントに、バックエンドに対する適切なアクセス許可がないことです。

考えられる解決策

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