アプリをアップグレードする

このトピックでは、 Snowflake Native App のアップグレードに関する情報を提供します。

アップグレードについて

Snowflake Native App Framework では、プロバイダーはアプリを新しいバージョンやパッチにアップグレードすることができます。アプリの新しいバージョンやパッチを開発するための全体的なワークフローの中で、アップグレードがどのように適合するかについては、 アプリ更新のワークフロー をご参照ください。

プロバイダーは、アプリケーションパッケージにリリースディレクティブをセットすることで、アプリケーションの新しいバージョンやパッチへのアップグレードを開始することができます。リリースディレクティブが変更されると、Snowflakeは自動的に現在のバージョンのアプリのインストールされているすべてのインスタンスをリリースディレクティブで指定されたバージョンにアップグレードします。

プロバイダーがアップグレードを開始すると、Snowflakeはアップグレードする各アプリをキューに追加します。各アプリはリソースの可用性に応じてアップグレードされます。アップグレードプロセスは、インストールされているすべてのバージョンのアプリで完了するまでに時間がかかることがあります。アップグレードプロセスを迅速化するために、コンシューマーは、新しいバージョンやパッチが利用可能になったときに、手動でアプリのアップグレードを開始することもできます。

注釈

アプリのアップグレードプロセスが開始されると、コンシューマーはアプリを手動でアップグレードすることができなくなります。

ワークフローのアップグレード

プロバイダーは、以下のワークフローを使用して、インストール済みアプリをアップグレードします。

  1. 新しい機能があれば、アプリをアップデートしてください。

  2. アプリの新しいバージョンを作成していて、現在アプリに2つのバージョンが定義されている場合:

    1. 現在、そのバージョンを実行しているコンシューマーがいないことを確認してください。

    2. 交換するアプリのバージョンを削除します。

  3. アプリケーションパッケージの変更に対して、新しいバージョンまたはパッチを作成します。

    アプリケーションパッケージの DISTRIBUTION プロパティが EXTERNAL にセットされている場合、 自動セキュリティスキャン が開始されます。アップグレードを行う前に、セキュリティスキャンに合格する必要があります。

  4. テストアカウントにアプリをインストールして、新しいバージョンをテストしてください。

  5. バージョンやパッチのリリースディレクティブを更新します。

    これにより自動アップグレードが開始され、インストールされているすべての旧バージョンのインスタンスが更新されます。プロバイダーは、アップグレードが利用可能であることをコンシューマーに通知し、アプリを 手動でアップグレード するよう求めることができます。

アップグレードの開始

プロバイダーがアプリケーションパッケージのリリースディレクティブ(デフォルトまたはカスタム)を更新し、新しいバージョンやパッチを指すようにすると、アップグレードプロセスが自動的に開始されます。以下の例に示すように、 ALTER APPLICATION PACKAGE ... RELEASE DIRECTIVE コマンドを使用してリリースディレクティブをセットします。

ALTER APPLICATION PACKAGE my_application_package SET DEFAULT RELEASE DIRECTIVE
  VERSION = v2
  PATCH = 0;
Copy

このコマンドは、デフォルトのリリースディレクティブをバージョン v2 とパッチ 0 にセットします。

ALTER APPLICATION PACKAGE my_application_package
  SET RELEASE DIRECTIVE my_custom_release_directive
  ACCOUNTS = ( USER_ACCOUNT.snowflakecomputing.com )
  VERSION = v2
  PATCH = 0;
Copy

このコマンドは my_custom_release_directive というカスタムリリースディレクティブを USER_ACCOUNT.snowflakecomputing.com というアカウントのバージョン v2 とパッチ 0 にセットします。

詳細については、 アプリのリリースディレクティブを設定する をご参照ください。

アプリの手動アップグレード

手動アップグレードでは、コンシューマーは自動アップグレードよりも早くインストールしたアプリをアップグレードできます。新しいバージョンやパッチが可用性になった場合、プロバイダーはコンシューマーに手動アップグレードの実行を求めることができます。

コンシューマーは、 ALTER APPLICATION を実行して手動アップグレードを行います。このコマンドは、アプリケーションパッケージで指定されたリリースディレクティブを使用して、インストールされているアプリケーションのバージョンやパッチのアップグレードを開始します。

インストール済み Snowflake Native App を利用可能な最新バージョンにアップグレードするには、コンシューマーは ALTER APPLICATION コマンドの UPGRADE 句を使用してアプリケーションオブジェクトを変更することができます。

ALTER APPLICATION <name> UPGRADE
Copy

リージョンをまたいだアプリのアップグレード

アプリのアップグレード後、リモートリージョンへの更新が実行されるまで、コンシューマーアカウントにインストールされた Snowflake Native App の変更が表示されない場合があります。

Data Sharingの更新 スキーマの APPLICATION_STATE ビュー を使って状態をモニターすることができます。アップグレード後の最初の更新から1日以上経過してもアップグレードが完了しない場合は、更新プロセスに問題がある可能性があります。 Snowflakeサポート にお問い合わせください。

プロバイダーが Cross-Cloud Auto-Fulfillment を使用して Snowflake Native App を発行している場合、自動アップグレードは、以下のような複数の要因によってアップグレードに時間がかかることがあります。

  • リフレッシュスケジュールの値。

  • アプリのインストール済みインスタンス数。

  • アプリが展開されているリージョン数。

アップグレードに、リモート リージョンでアップグレードする必要のある緊急の修正が含まれている場合、プロバイダーはリストの更新頻度をより小さな値に減らすことができます。アカウントレベルの更新頻度のセットに関する情報は、 自動履行設定の監視と管理 をご参照ください。

注意

更新頻度を下げると、複製に関連するコストが増加する可能性があります。

アップグレード状態

アップグレードの過程で、アプリはさまざまな状態を通過します。次の図は、旧バージョンv1から新バージョンv2へのアップグレード時に考えられる状態を示しています。

注釈

この図はバージョンのアップグレードを示していますが、パッチのアップグレードにも当てはまります。

../../_images/na-upgrade-statuses.png

次の表は、アプリケーションパッケージが配置されているリージョンと同じリージョン内のアプリのアップグレードプロセスの各ステージを示しています。

ステージ

説明

1

アプリが無効にされている?

アプリが無効になっている場合、アップグレードはできません。

2

リリースディレクティブをv2.0にセット

プロバイダーはリリースディレクティブをv2.0にセットします。

3

アップグレード対象

Snowflakeは、アプリがアップグレード対象であることを確認するためのチェックを実行します。これらのチェックには、アプリケーションが無効になっていないこと、アプリケーションパッケージが可用性であること、バージョンとパッチがアップグレードに有効であること、コンシューマーアカウントが有効であることなどの確認が含まれます。

4

アップグレードスロットの獲得?

アップグレードするアプリの数やコンシューマーアカウントの数などによっては、アップグレードプロセスの開始を待たなければならない場合があります。

5

セットアップスクリプトは正常に実行されましたか?

アップグレードが開始されると、Snowflakeはセットアップスクリプトを実行します。捕捉されないエラーが発生した場合、セットアップスクリプトの実行は停止します。Snowflakeは、構成された再試行回数に基づいて、アプリを再度アップグレードするためにキューに入れます。

6

バージョンは更新されていますか?

Snowflakeは、アップグレードがバージョンかパッチかを確認します。バージョンアップの場合、Snowflakeは追加のチェックを行い、古いバージョンのアプリからのジョブがすべて完了するまで待機します。

次の表は、リモートリージョンにデプロイされたアプリのアップグレード手順を示しています。

ステージ

説明

7

リリースディレクティブv2.0がリモートジョンに複製されました。

プロバイダーがリモートリージョンにデプロイされたアプリケーションにリリースディレクティブをセットすると、リリースディレクティブはリモートリージョンにデプロイされたアプリケーションパッケージに伝搬されます。

8

v2.0のアクティブリージョンは?

プライマリージョンのアプリのほとんどがアップグレードされると、Snowflakeはリモートリージョンにメッセージを送信し、アプリのアップグレードを開始します。

9

アップグレードプロセスの開始

前の表で説明したように、アプリのアップグレード処理を開始します。

次の表では、アップグレード処理で考えられる各状態について説明します。

状態

説明

DISABLED

アプリは無効になっており、アップグレードの対象ではありません。

QUEUED

アプリとコンシューマーアカウントの数に応じて、アプリはアップグレードのキューに入ります。

UPGRADING

アプリは現在アップグレード中です。

COMPLETED

アプリは正常にアップグレードされました。

QUEUED_RETRY

セットアップスクリプトまたはその他のチェックが失敗し、アプリがアップグレードキューに戻されます。

FAILED

アプリのアップグレードに失敗しました。セットアップスクリプトのエラーなどにより、プロバイダー側でアップグレードが失敗することがあります。アプリが無効化されていたり、コンシューマー・アカウントが無効化されていたりすると、コンシューマー側でもアップグレードが失敗することがあります。

アップグレード状況のモニター

アプリのアップグレード状態を表示するには、 APPLICATION_STATE ビュー を使用します。

たとえば、デフォルトのリリースディレクティブを更新し、すべてのアプリがターゲットバージョンに達したかどうかを確認したい場合です。アップグレードが完了していないアプリケーション・インスタンスを検索するには、次の例のクエリを使用します。

SELECT * FROM snowflake.data_sharing_usage.APPLICATION_STATE
Copy

このビューには、アップグレードの状態やアプリが展開されているリージョンなど、アップグレードに固有の列が含まれています。アップグレード状態の情報については、 アップグレード状態 をご参照ください。

アップグレードに関する問題のトラブルシューティング

Snowflake Native App Framework には、アップグレードのトラブルシューティングの方法がいくつか用意されています。

アップグレードエラーの識別子

コンシューマーは、 DESCRIBE APPLICATION コマンドを使用して、アップグレードの失敗に関するエラーメッセージを表示することができます。このコマンドは、アップグレード処理中に発生したエラーに関する情報を提供します。

プロバイダーは、 APPLICATION_STATE ビュー を使用して、失敗したアップグレードのエラーメッセージを表示できます。この表示を使用して、プロバイダーは特定のアプリケーションの問題を診断できます。詳細については、 アップグレード状況のモニター をご参照ください。

ログとイベントトレースの使用

ログとイベントトレース がアプリに構成されている場合、プロバイダーはアプリのアップグレードの問題を診断するためにイベントテーブルをクエリできます。

詳細については、 イベントテーブルでログおよびイベントを表示する をご参照ください。

アプリのサービス状況のモニター

アプリ内のコンピュートプールやサービスのステータスに関する情報を表示するには、コンシューマーは以下のシステム関数を使用できます。

コンシューマーはこの情報をプロバイダーと共有することができます。プロバイダーは、この情報を返すようにイベント共有を構成することもできます。

無効化されたアプリ

コンシューマーアカウントにインストールされたアプリが無効になると、そのアプリは使用できなくなります。コンシューマーアカウントにインストールされたアプリは、以下のような複数の理由で使用できなくなる可能性があります。

  • アプリケーションパッケージの問題点

  • インストールされたアプリケーションの問題

  • コンシューマーアカウントに関する問題

プロバイダーもコンシューマーも、アプリが長期間使用できない状態を避けるべきです。無効化されたアプリは使用できなくなり、再インストールする必要があります。

無効化されたアプリのアップグレード

無効化されたアプリは通常のアップグレードプロセスの一部ではないため、アップグレードできません。無効にされたアプリが再び有効になると、自動的にリリースディレクティブのバージョンとパッチにアップグレードされます。ただし、バージョンやパッチがもう利用可能でない場合、アプリはアップグレードできず、再インストールする必要があります。

例えば、無効化されたアプリケーションのバージョンが v1 であるにもかかわらず、アプリケーションパッケージの現在と以前のバージョンが v2v3 である場合、そのアプリケーションはアップグレードできず、使用できません。

アプリが無効になる理由

APPLICATION_STATE ビュー の DISABLEMENT_REASONS 列を表示すると、アプリが無効になった理由を確認できます。次のテーブルは、 DISABLEMENT_REASONS 列の可能な値のリストです。

ステータスの説明

回復可能か?

MANUALLY_DISABLED

アプリはSnowflakeによって無効化されます

あり。アプリを再度有効にするには、 Snowflakeサポート にお問い合わせください。

ACCOUNT_INACTIVE

アカウントがロックまたは停止されてアクティブでなくなると、アプリは利用できなくなります。この状態では、コンシューマーは自分のアカウントで SQL クエリを実行できず、アプリはアップグレードできません。

あり。アカウントのロックまたは停止が解除されると、アプリは自動的に再有効化されます

PACKAGE_VERSION_IS_MISSING

アプリのアプリケーションパッケージのバージョンは、プロバイダーによってドロップされました。

なし。アプリは使用できなくなり、有効なリストまたはアプリケーションパッケージからドロップして再インストールする必要があります。

CMK_ACCESS_DENIED

コンシューマーは暗号化キーを自分で管理し(ENCRYPT_USE_CMK_KMS が有効)、Snowflakeはこのキーにはアクセスできません。

あり。アプリを再有効化するには、 CMK を取得するクラウドプロバイダーの構成が正しく、Snowflakeがキーにアクセスできることを確認します。

LISTING_ACCESS_REVOKED

このアプリを作成するために使用されたリストは利用できなくなりました。以下が、このような状態になった理由として考えられます。

  • プロバイダーがリストを削除した

  • プロバイダーがコンシューマーアカウントから非公開リストへのアクセスを手動で削除した

可能性あり。回復可能性は、アクセスが取り消された理由によって異なります。

たとえば、リストが削除された場合は回復できません。コンシューマーアカウントが非公開リストから手動で削除された場合、リストとアプリへのアクセスは復元できます。

LISTING_TRIAL_USAGE_EXCEEDED

このアプリケーションは、従量制試用リストの使用上限を超えました。

無し

LISTING_PAYMENT_REQUIRED

アプリをインストールするために使用されるリストは有料リストであり、さらなる使用には支払いが必要です。

あり。コンシューマーはアプリの支払いを正しく設定する必要があります。

LISTING_TRIAL_TIME_EXCEEDED

アプリケーションの試用期間を超過しました。

無し

APPLICATION_PACKAGE_NOT_AVAILABLE

アプリの作成に使用したアプリケーションパッケージが存在しなくなりました。プロバイダーが対応するアプリケーションパッケージをドロップした可能性があります。

無し

APPLICATION_PACKAGE_DISABLED

アプリの作成に使用されたアプリケーションパッケージは、Snowflakeによって無効化されました。

あり。Snowflakeがアプリケーションパッケージを再有効化すると、アプリは再有効化されます。

APPLICATION_SUSPENDED

アプリが無効化されたため、タスク、サービス、コンピューティングプールなどのアプリリソースが中断されました。

中断されたオブジェクトは、アプリが無効化された他の理由がなければ、アプリが再有効化されるまで中断されたままになります。

有り

APPLICATION_SUSPEND_RESUME_IN_PROGRESS

アプリのリソース(例: タスク、サービス、コンピューティングプール)は現在再開中です。

有り