Snowpark Container Servicesトラブルシューティング¶
このトピックでは、よくある問題とその解決方法について説明します。
イメージレジストリ¶
パブリックサービスエンドポイントへのアクセス時に「invalid consent request」エラーが発生した。
現在の実装では、Snowflakeは既定のロールを使用して現在のユーザーを認証します。このエラーは、ユーザーが ACCOUNTADMIN、 SECURITYADMIN などの権限ロールのいずれかを既定のロールとして使用しているためと考えられます( 統合の使用から特定のロールをブロックする を参照)。 ALTER USER コマンドを使用してユーザーの既定のロールを変更し、もう一度試してください。
docker login
認証に失敗した。docker login
コマンドで大文字のホスト名を使用しないでください。そしてdocker push
、docker pull
コマンドで小文字のホスト名を使用します。Docker CLI は認証情報をケース化されたキーで保存する。Docker CLI 関連 問題。docker push
エラー: リクエストの URL にホストがない。Docker CLI とやり取りする際は、 URL 内のアカウント名のアンダースコアを常にハイフンに置き換えてください。Docker CLI は、ホスト名にアンダースコアが含まれているとエラーを返します(cURL が動作しても)。たとえば、以下のDocker pushでは、アカウント名として「my_acct」を指定します。
docker push myorg-my_acct.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/service_to_service
Dockerはこのエラーを返します。
Get "https:/v2/": http: no Host in request URL.
SHOW IMAGE REPOSITORIES コマンドを使用して有効なリポジトリ URL を取得することもできます。
コンピューティングプール¶
中断されたコンピューティングプールが STOPPING の状態で止まっている。
サービスを実行すると、コンピューティングプールは停止できません。 ALTER COMPUTE POOL コマンドを使用して、コンピューティングプール内の残りのアクティブなサービスをすべて中断してください。
ALTER COMPUTE POOL <pool_name> STOP ALL
サービス¶
実行中のサービスが(サービス関数またはパブリックエンドポイントからの)リクエストに応答しなくなった。サービスのステータスが実行中から保留中に変更された。
これは、コンピューティングプールノードのリソースが枯渇していることを示している可能性があります。コンテナがリソース集約型(CPU/メモリ)である場合は、単一ノードに多くのサービス(ジョブサービスを含む)が配置されないように、サービス仕様でリソースリクエストを明示的に指定する必要があります。
現在の実装では、メモリリクエストのみ指定できます。
たとえば、コンピューティングプールのノードの RAM が64 GB の場合、32 GB 以上のサービス(またはジョブサービス)をリクエストすると、一度に1つのノードで1つのサービスまたはジョブサービスのみが確実に実行されるようになります。各インスタンス型の機能については CREATE COMPUTE POOL をご参照ください。
サービスのパブリックエンドポイントにリクエストを送信する場合は、 HTTP 認証ヘッダーに二重引用符を使用しないでください。
サービス関数¶
サービス関数のタイムアウトと重複実行の問題。
単一のサービス関数の呼び出しに30秒以上かかる場合、Snowflakeは関数を再試行し、数回の再試行の後、関数はタイムアウトエラーで失敗します。コンテナー内の関数実装がべき等でない場合は、予期しない結果になる可能性があります。異なる HTTP コード(202)を返すことで、より長いタイムアウトを可能にする非同期実行の使用を検討してください。詳細については、 非同期リモートサービス をご参照ください。
Ingress¶
認証に失敗する場合は、ユーザーまたはアカウントに関連するネットワークポリシーが原因である可能性があります。
インターネットからパブリックエンドポイントにアクセスすると、ユーザー名/パスワード認証コードは機能しますが、 SSO では、空白のページが表示されるか、以下のエラーが表示されることがあります。" 指定された OAuth クライアントとの統合 ID が見つかりません。"この問題への対処情報については、 進入と SSO への配慮 をご覧ください。
クライアントがイングレスエンドポイント(500/503/504)から 5XX エラーを受信した場合、クライアントは何らかのバックオフを行って再試行する必要があります。境界付き 指数関数的バックオフ をお勧めします。
CORS プリフライトリクエストは、ステータス「404-エンドポイントが存在しません」を返します。
SHOW ENDPOINTS コマンドを実行して、エンドポイントが存在するかどうかを確認します。
CORS プリフライトリクエストはステータス302を返します。
CORS リクエストにはいかなる形式の認証もありませんでした。CORS リクエストとリダイレクト/アンカータグを区別することができないため、リダイレクト/アンカータグのケースを仮定して302を返さなければなりません。
応答ステータス403「Cookieが存在し、リクエストに認証ヘッダーがないため、 CORS リクエストを拒否します」。
これは、クロスオリジンの非 GET 非 HEAD リクエストが認証方法としてCookieを使おうとしたときに発生します。認証ヘッダーはこれらのクロスオリジンリクエストに必要です。このエラーはリクエストにCookieが存在し、認証ヘッダーが存在しない場合に発生します。
エラーメッセージ「クロスオリジンリクエストがブロックされました: 同一オリジンポリシーにより、以下のリモートリソースの読み取りが禁止されています...」。
サービスがリクエストされたクロスオリジンアクセスをサポートしていないことを示した場合、ブラウザーはこのエラーを返します。これは通常、ブラウザーから提供された
Origin
が、エンドポイントのサービス仕様のAccess-Control-Allow-Origin
で指定されたオリジンのいずれかと一致しないために起こります。これらが一致するためには、スキーム(HTTP/HTTPS)とホスト名の両方が一致する必要があります。