Snowpark Container Servicesトラブルシューティング

このトピックでは、よくある問題とその解決方法について説明します。

イメージレジストリ

  • パブリックサービスエンドポイントへのアクセス時に「invalid consent request」エラーが発生した。

    現在の実装では、Snowflakeは既定のロールを使用して現在のユーザーを認証します。このエラーは、ユーザーが ACCOUNTADMIN、 SECURITYADMIN、 ORGADMIN などの権限ロールのいずれかを既定のロールとして使用しているためと考えられます(統合の使用から特定のロールをブロックする を参照)。 ALTER USER コマンドを使用してユーザーの既定のロールを変更し、もう一度試してください。

  • docker login 認証に失敗した。

    docker login コマンドで大文字のホスト名を使用しないでください。そして docker pushdocker 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
    
    Copy

    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
    
    Copy

サービス

  • 実行中のサービスが(サービス関数またはパブリックエンドポイントからの)リクエストに応答しなくなった。サービスのステータスが実行中から保留中に変更された。

    これは、コンピューティングプールノードのリソースが枯渇していることを示している可能性があります。コンテナーがリソース集約型(CPU/メモリ)である場合は、単一のノードに多くのサービス/ジョブが配置されないように、サービス/ジョブ仕様でリソースリクエストを明示的に指定する必要があります。

    現在の実装では、メモリリクエストのみ指定できます。

    たとえば、コンピューティングプールのノードの RAM が64 GB の場合、32 GB 以上のサービス/ジョブをリクエストすると、一度に1つのノードで1つのサービス/ジョブのみ実行することを保証します。各インスタンス型の機能については CREATE COMPUTE POOL をご参照ください。

  • サービスのパブリックエンドポイントにリクエストを送信する場合は、 HTTP 認証ヘッダーに二重引用符を使用しないでください。

サービス関数

  • サービス関数のタイムアウトと重複実行の問題。

    単一のサービス関数の呼び出しに30秒以上かかる場合、Snowflakeは関数を再試行し、数回の再試行の後、関数はタイムアウトエラーで失敗します。コンテナー内の関数実装がべき等でない場合は、予期しない結果になる可能性があります。異なる HTTP コード(202)を返すことで、より長いタイムアウトを可能にする非同期実行の使用を検討してください。詳細については、 非同期リモートサービス をご参照ください。

  • サービス関数を呼び出すと「service not found」エラーが返されますが、 SHOW SERVICES コマンドはサービスが存在することを示す。

    サービス関数に関連付けられたサービスがドロップ(DROP SERVICE)され、再作成(CREATE SERVICE)されたかどうかを確認します。そうなっている場合は、サービス関数を再作成し、新しいサービスをポイントする必要があります。