料金管理

このページでは、Earth Engine でコンピューティング費用を管理するために、1 日の上限を設定し、進行中の EECU 時間をモニタリングする方法について説明します。

1 日の EECU 時間を制限する

Earth Engine の費用を管理するために、プロジェクトで 1 日に使用できる EECU 時間の上限を設定するには、次の Cloud 割り当てを更新します。

  • Earth Engine compute time (EECU-time) per day in seconds: プロジェクト内のすべてのユーザーの合計 EECU 時間を制限するプロジェクト レベルの割り当て。

設定できる Earth Engine の割り当ての詳細については、Earth Engine の割り当てをご覧ください。

1 日の利用時間の上限を設定する

割り当ては、Google Cloud コンソールの [Quotas & System Limits] ページで表示および編集できます。割り当てを調整すると、数分以内に変更が反映されます。1 日の利用時間の上限を設定または更新するには、次の操作を行います。

  1. 選択したプロジェクトで、プロジェクトの割り当てを変更する権限 があることを確認します。
  2. Google Cloud コンソールの [割り当て] ページに移動します。
  3. [フィルタ] 検索ボックスの [指標] フィルタを使用して、earthengine.googleapis.com/daily_eecu_usage_time をフィルタします。Earth Engine compute time (EECU-time) per day in seconds 割り当てが表示されない場合は、選択したプロジェクトで Earth Engine API が有効になっていることを確認します。
  4. その他メニューから [割り当てを編集] をクリックします。
  5. [無制限] チェックボックスがオンになっている場合は、オフにします。
  6. [新しい値] フィールドに、必要な EECU 秒単位の上限を入力します。[リクエストを送信] をクリックします。

割り当ての表示と管理の詳細については、割り当ての表示と管理 をご覧ください

返されたエラー メッセージ

1 日の利用時間の上限を設定した後、上限を超えると、Earth Engine は次のエラー メッセージを返します。

使用量が 'earthengine.googleapis.com/daily_eecu_usage_time' のカスタム割り当てを超えました。この割り当ては、Google Cloud コンソール(https://console.cloud.google.com/quotas/?project=_)で管理者が調整できます。

割り当てを超えると、翌日に割り当てがリセットされるか、管理者が上限を引き上げるまで、Earth Engine リクエストは失敗します。

きめ細かいモニタリングとアラート

日次 上限よりも細かい粒度で費用を管理およびモニタリングする必要がある場合は、次のレシピでより多くの設定が必要になりますが、 アラートとキャンセルを workload_tagとバッチ タスク レベルで有効にできます。

これらのレシピでは、実行中のリクエストに対して表示される進行中の EECU 時間モニタリングを使用します。Cloud Monitoring での進行中の EECU 時間レポートの詳細については、モニタリング 使用状況ガイドをご覧ください。

アラートの設定

Cloud Monitoring でアラートを構成して、指標が特定のしきい値に達したときに警告を表示できます。Cloud Monitoring のアラート システムは非常に柔軟です。ここではおすすめのレシピをいくつか紹介しますが、ニーズに合わせてカスタム構成を使用することもできます。

レシピ: workload_tag の使用状況に関するチャット通知

この例では、特定の workload_tagの Earth Engine コンピューティング使用量が しきい値を超えた場合に、チャット通知(Google Chat メッセージや Slack メッセージなど)を送信する方法を示します。これは、本番環境サービス用のデータを作成するエクスポート タスクのセットがあり、それらのタスクが合計で一定量の EECU 時間を超えて使用した場合に通知を受けたい場合に便利です。

  1. Cloud コンソールの Cloud Monitoring セクションの [アラート] ページに移動します。
  2. [ポリシーを作成] を選択して、新しいアラート ポリシーを構成します。
  3. 指標を選択します。
    • [**進行中の EECU 秒**] は、保留中の(まだ成功していない)コンピューティング秒数を表します。
    • 指標を表示するには、[有効] フィルタの選択を解除する必要がある場合があります。
  4. フィルタを追加します。
    • workload_tag == your_workload_tag_value を使用して、特定のワークロード タグにフィルタします。
    • compute_type = batch または compute_type = online を使用して、特定のタイプのコンピューティングにフィルタします。
  5. 適切な [ローリング ウィンドウ] 値を選択します。不明な場合は、5 min を使用します。
  6. [ローリング ウィンドウ関数] メニューから [合計] を選択します。 アラートの指標の構成
  7. アラートのトリガーを選択し、名前を付けます。
  8. 通知チャンネルを選択します。
    • このレシピでは、モーダル ウィンドウから [通知チャンネルの管理] を選択し、[新規追加] を選択して Google Chat のスペース ID を貼り付けます。この ID は、チャットを表示しているときに Gmail または Chat ページの URL で確認できます。
    • Google Chat を使用している場合は、@Google Cloud Monitoring と入力してアプリを選択し、アラート アプリをスペースに追加する必要があります( 組織で許可されている場合)。
  9. 関連するポリシーと重大度のラベルを選択します。
  10. 短いドキュメント スニペットを作成します。
  11. 新しいアラート ポリシーを公開します。

設定すると、プロジェクトのしきい値を超えたときに、チャット スペースでアラートを受け取ることができます。

レシピ: 進行中の EECU 時間の合計に関するメールアラートを受け取る

チャットの通知のレシピに従いますが、次の 2 つの変更を加えます。

  1. workload_tag フィルタを追加する手順をスキップして、すべての値を表示できるようにします。
  2. 通知チャンネルを選択するときに、チャットチャンネルを構成する代わりに、メールアドレスを追加します。

アラートのレイテンシとタイミング

Monitoring レポートの伝播には若干の遅延があるため、即時の通知は期待できません。

リソースを大量に消費するタスクをキャンセルする

上限が設定されている場合、Earth Engine API を使用して保留中のタスクのリストを定期的に確認し、EECU 秒の上限を超える実行中のタスクのキャンセルをリクエストできます。

レシピ: ノートブックまたはローカルの Python シェルでコード スニペットを実行する

eecu_seconds_limit = 50 * 60 * 60  # 50 hours
print("Watching for operations to cancel...")
while(True):
  for op in ee.data.listOperations():
    if op['metadata']['state'] == 'RUNNING':
      if op['metadata'].get('batchEecuUsageSeconds', 0) > eecu_seconds_limit:
        print(f"Cancelling operation {op['name']}")
        ee.data.cancelOperation(op['name'])
  time.sleep(10)  # 10 seconds