このページでは、Earth Engine で計算費用を管理するために、1 日の上限を設定し、進行中の EECU 時間をモニタリングする方法について説明します。
1 日の EECU 時間を制限する
Earth Engine の費用を抑えるために、次の Cloud 割り当てを更新して、プロジェクトで 1 日に使用できる EECU 時間の上限を設定できます。
Earth Engine compute time (EECU-time) per day in seconds
: プロジェクト内のすべてのユーザーの合計 EECU 時間を制限するプロジェクト レベルの割り当て。
設定できる Earth Engine の割り当ての詳細については、Earth Engine の割り当てをご覧ください。
1 日の利用時間の上限を設定する
割り当ては、Google Cloud コンソールの [割り当てとシステム上限] ページで確認して編集できます。割り当てを調整すると、数分以内に変更が反映されます。1 日の上限を設定または更新する手順は次のとおりです。
- 選択したプロジェクトに対するプロジェクトの割り当てを変更する権限があることを確認します。
- Google Cloud コンソールの [割り当て] ページに移動します。
- [フィルタ] 検索ボックスの [指標] フィルタを使用して、
earthengine.googleapis.com/daily_eecu_usage_time
をフィルタします。Earth Engine compute time (EECU-time) per day in seconds
割り当てが表示されない場合は、選択したプロジェクトで Earth Engine API が有効になっていることを確認してください。 - その他メニューから [割り当てを編集] をクリックします。
- [無制限] チェックボックスがオンになっている場合はオフにします。
- [新しい値] フィールドに、必要な EECU 秒数を入力します。[リクエストを送信] をクリックします。
割り当ての表示と管理の詳細については、割り当ての表示と管理をご覧ください。
返されたエラー メッセージ
1 日あたりの上限を設定すると、上限を超えたときに Earth Engine から次のエラー メッセージが返されます。
使用量が、Google Cloud コンソールで管理者が調整できる「earthengine.googleapis.com/daily_eecu_usage_time」のカスタム割り当てを超えました。https://console.cloud.google.com/quotas/?project=_.
割り当てを超えると、翌日に割り当てがリセットされるか、管理者が上限を引き上げるまで、Earth Engine リクエストは失敗します。
きめ細かいモニタリングとアラート
1 日の上限よりも細かい粒度で費用を制御してモニタリングする必要がある場合は、次のレシピを使用します。このレシピでは、より多くの設定が必要になりますが、workload_tag
とバッチタスクのレベルでアラートとキャンセルを有効にできます。
これらのレシピでは、実行中のリクエストに対して表示される進行中の EECU 時間モニタリングを使用します。Cloud Monitoring での進行中の EECU 時間レポートの詳細については、モニタリングの使用状況ガイドをご覧ください。
アラートの設定
Cloud Monitoring でアラートを構成して、指標が特定のしきい値に達したときに警告を受け取ることができます。Cloud Monitoring のアラート システムは非常に柔軟です。ここでは、おすすめのレシピをいくつかご紹介しますが、ご自身のニーズに合わせてカスタム設定で調理することも可能です。
レシピ: workload_tag
の使用状況に関するチャット通知
この例では、特定の workload_tag
の Earth Engine コンピューティング使用量がしきい値を超えた場合に、チャット通知(Google Chat メッセージや Slack メッセージなど)を送信する方法を示します。これは、本番環境サービス用のデータを作成する一連のエクスポート タスクがあり、それらのタスクの合計 EECU 時間が一定量を超えた場合に通知を受けたい場合に役立ちます。
- Cloud コンソールの [Cloud Monitoring] セクションで [アラート] ページにアクセスします。
- [ポリシーを作成] を選択して、新しいアラート ポリシーを構成します。
- 指標を選択します。
- 進行中の EECU 秒数は、保留中の(まだ成功していない)コンピューティング秒数を表します。
- 指標を表示するには、[有効] フィルタの選択を解除する必要がある場合があります。
- フィルタを追加する:
workload_tag == your_workload_tag_value
を使用して、特定のワークロード タグをフィルタします。compute_type = batch
またはcompute_type = online
を使用して、特定のタイプの計算でフィルタします。
- 適切な「ローリング ウィンドウ」の値を選択します。不明な場合は、
5 min
を使用します。 - [ローリング ウィンドウ関数] メニューから [合計] を選択します。
- アラートのトリガーを選択して名前を付けます。
- 通知チャンネルを選択します。
- このレシピでは、モーダル ウィンドウから [通知チャンネルの管理] を選択し、[新規追加] を選択して Google Chat のスペース ID を貼り付けます。この ID は、チャットを表示しているときに Gmail または Chat のページの URL で確認できます。
- Google Chat を使用している場合は、
@Google Cloud Monitoring
と入力してアプリを選択し、Space にアラート アプリを追加する必要があります(組織で許可されている場合)。
- 関連するポリシーと重大度のラベルを選択します。
- 短いドキュメント スニペットを作成します。
- 新しいアラート ポリシーを公開します。
設定すると、プロジェクトのしきい値を超過するたびにチャット スペースでアラートが届きます。
レシピ: EECU の合計進行時間に関するメール通知アラートを取得する
チャット通知のレシピに沿って、次の 2 つの変更を行います。
workload_tag
フィルタを追加する手順をスキップして、すべての値を表示します。- 通知チャネルを選択するときに、チャット チャネルを構成する代わりに、メールアドレスを追加します。
アラートのレイテンシとタイミング
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