プログラムによる予算アラート通知の管理

概要

予算の通常動作では、予算アラートしきい値ルールがメール通知をトリガーすると、アラートメールを送信します。

予算アラート通知の図
図 1: 予算アラート通知のデフォルトのメール機能と、プログラムによる通知に Pub/Sub を使用して費用管理レスポンスを自動化するオプションの方法を示しています。

ただし、予算をコスト管理ツールとして使用する場合は、Google Cloud の費用管理をタイムリーに実行するのにメール通知方法は最適でない場合があります。メール通知だけでなく、プログラムによる通知を使用して、コスト管理レスポンスを自動化できます。費用管理レスポンスの例:

  • 自動的な請求の無効化とリソースの終了による Google Cloud の支出の制限。
  • 予算メッセージの他のメディア(Slack など)への転送。
  • 割り当て調整によるリソース使用量の抑制。

詳細についてはコスト管理の自動レスポンスの例をご覧ください。

このタスクに必要な権限

Pub/Sub トピックを設定して Cloud Billing 予算にリンクするには、次のロールが必要です。

ドメインによるリソース共有を制限するように組織のポリシーを設定すると、Pub/Sub トピックを設定する際や Cloud Billing の予算に接続する際にエラーが発生する可能性があります。

この場合、Pub/Sub トピックを予算に正しく関連付けるには、アカウントへの強制アクセスが必要になる可能性があります。具体的には、次の手順でアカウントへのアクセスを強制的に付与します。

  1. ドメインの制限を含む組織のポリシーは、次のいずれかの方法で削除します。

  2. 手順に沿って、Pub/Sub トピックを Cloud Billing 予算に関連付けます

  3. 組織またはプロジェクトの組織のポリシーを復元します(省略可)。

Google Cloud の権限の詳細については、以下をご覧ください。

Pub/Sub のプログラムによる通知の設定と有効化の方法

予算の現在のステータスを含む Pub/Sub メッセージを受け取るようにプログラムによる通知を有効にするには、Pub/Sub トピックを Cloud Billing 予算に関連付けます。

予算にリンクされている Pub/Sub トピックを接続、編集、削除するには、次のことを行います。

1. Pub/Sub トピックを作成する

Cloud Billing 用の Pub/Sub トピックを構成して、予算アラートを発行します。構成済みの Cloud Billing 予算の Pub/Sub トピックがすでにある場合は、すべての予算に対してそれを再利用できます。また、予算ごとに一意のトピックを作成することもできます。

  1. Google Cloud コンソールの [Pub/Sub] ページに移動します。

    Google Cloud コンソールの Pub/Sub にログイン

  2. プロジェクトを選択します。

  3. [トピックを作成] をクリックします。

  4. [トピック ID] フィールドにトピック名を入力し、[トピックを作成する] をクリックします。

2. Cloud Billing の予算を Pub/Sub トピックに関連付ける

Cloud Billing の予算を Pub/Sub トピックに関連付ける方法は次のとおりです。

  1. Google Cloud コンソールの [予算とアラート] ページにログインします。

    [予算とアラート] にログインする

  2. プロンプトで、予算を管理する Cloud 請求先アカウントを選択します。選択した請求先アカウントの [予算とアラート] ページが開きます。

  3. 必要であれば、予算を作成します。既存の予算とアラートルールを編集するには、予算名をクリックします。

  4. [アクション] セクションの [通知の管理] で、[Pub/Sub トピックをこの予算に接続する] を選択します。

  5. [プロジェクト] フィールドで [プロジェクトを選択する] をクリックして、設定した Pub/Sub トピックを含むプロジェクトを選択します。前のセクションの推奨事項に従っている場合、これは請求管理の Google Cloud プロジェクトです。

  6. [Cloud Pub/Sub トピックを選択してください] で、既存のトピックを選択するか、[トピックを作成する] を選択して新しいトピックを作成します。

    • 新しいトピックを作成する場合は、[トピック ID] フィールドにトピック名を入力し、[トピックを作成する] をクリックします。
    • 作成後、トピックが選択されます。
  7. [保存] をクリックします。

通知形式

Pub/Sub トピックに送信される通知は、次の 2 つの部分で構成されます。

  • 属性: イベントを記述する Key-Value ペア。
  • データ: 予算アラートの詳細を記述する JSON オブジェクトを含む文字列。

属性

属性は、Cloud Billing から Pub/Sub トピックに送信されるすべての通知に含まれる Key-Value ペアです。通知ペイロードに関係なく、通知には次の Key-Value ペアのセットが含まれます。

属性名 説明
billingAccountId 01D4EE-079462-DFD6EC 予算を所有する Cloud 請求先アカウントの ID。
budgetId de72f49d-779b-4945-a127-4d6ce8def0bb Cloud 請求先アカウント内の予算アラートの ID。
schemaVersion 1.0 通知のスキーマ バージョン。

データ

スキーマ バージョン 1.x の場合、予算アラートの詳細は base64 でエンコードされた UTF-8 文字列で返されます。これには、次のプロパティを持つ JSON オブジェクトが含まれています。

データ 説明
budgetDisplayName "My Personal Budget" 予算に割り当てられた、人が読める形式の名前。
costAmount 140.321 発生した費用。追跡されるコストのタイプは、予算のフィルタと設定によって異なります。
costIntervalStart "2021-02-01T08:00:00Z" 予算アラート期間の開始。costAmount には、この時点から使用が開始されたコストが含まれます。これは、予算の使用が発生した予算期間(月、四半期、年、指定の期間)の最初の日です。
budgetAmount 152.557 予算に割り当てられた金額。
budgetAmountType "SPECIFIED_AMOUNT" 予算の金額タイプ。次のいずれかの値です。
  • SPECIFIED_AMOUNT: 固定額。
  • LAST_MONTH_COST: 先月に発生した費用の合計額。
  • LAST_PERIODS_COST: 月以外のカレンダーの期間(四半期または年など)に発生した費用。
alertThresholdExceeded 0.9 最大の費用の実値のしきい値。これを超えるとアラートが通知されます。値は 10 進数形式のパーセントです(たとえば、0.9 は 90% です)。費用の実値がしきい値を超えない場合、このキーは存在しません。
forecastThresholdExceeded 0.2 最大の予測費用アラートのしきい値。これを超えるとアラートが通知されます。値は 10 進数形式のパーセントです(たとえば、0.2 は 20% です)。予測費用がしきい値を超えない場合、このキーは存在しません。
currencyCode "USD" 予算アラートの通貨。すべての費用と予算アラートの金額はこの通貨で表示されます。

Pub/Sub への通知の配信保証

予算を作成して Pub/Sub トピックに関連付けると、ここで説明するようにプログラムによる通知を受け取ることができます。

  • 予算通知は、予算の現在のステータスとともに 1 日に数回、Pub/Sub トピックに送信されます。予算アラートメールは、この頻度とは異なり、予算しきい値に達したときにのみ送信されます。
  • Pub/Sub 通知は、Cloud 請求先アカウントで使用量がない場合にも送信されます。
  • 最初の通知を受け取るまでに数時間かかる場合があります。
  • Pub/Sub は at-least-once(最低 1 回)配信のみを保証します。メッセージが複数回送信される場合や、メッセージが順不同で到着する場合があります。
  • Pub/Sub トピックの誤構成により配信に失敗した場合、通知は表示されません。

    次のいずれか 1 つの理由により、配信が失敗することがあります。

    • Pub/Sub トピックが存在しない。
    • Cloud Billing に Pub/Sub トピックへの発行権限がない。
    • 通知の割り当てを超過した。