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

概要

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

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

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

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

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

このタスクに必要な権限

Cloud 請求先アカウント レベルで予算を管理しているか、Cloud 請求先アカウントのロールを持たないプロジェクト オーナーであるかによって、以下で説明する異なる権限セットが必要になります。

請求先アカウント レベルで費用をモニタリングする場合

主に Cloud 請求先アカウントの費用をモニタリングする場合は、Cloud 請求先アカウント レベルの権限が必要になります。

Cloud 請求先アカウントへのアクセス権がないか、限定されている場合は、所有するプロジェクトに対する十分な権限が付与されている可能性があります。

組織で認証にカスタムロールを使用する場合は、カスタムロールに次の権限が含まれている必要があります。

既存の Cloud Billing 予算を変更して既存の Pub/Sub トピックに関連付けるカスタムロールには、次の権限が含まれている必要があります。

プロジェクト レベルで費用をモニタリングする場合

Cloud 請求先アカウントへのアクセス権がないか、限られている場合は、所有するプロジェクトのみを対象とする予算を管理できます。

組織で認証にカスタムロールを使用する場合は、カスタムロールに次の権限が含まれている必要があります。

  • プロジェクトに対する resourcemanager.projects.get。リンクされたプロジェクト(リンクされた請求先アカウントなど)を表示します。
  • プロジェクトに対する billing.resourceCosts.get(省略可)。プロジェクトの費用と使用状況を表示します。
  • プロジェクトに対する billing.resourcebudgets.read。プロジェクトの範囲である請求先アカウントの単一プロジェクトの予算を表示します。
  • プロジェクトに対する billing.resourcebudgets.write。プロジェクトの範囲である単一プロジェクトの予算を作成または変更します。
  • 使用する Pub/Sub トピックを含むターゲット プロジェクトpubsub.topics.setIamPolicypubsub.topics.list

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

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

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

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

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

Google Cloud の権限について

Cloud Billing 権限の詳細については、次をご覧ください。

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. プロジェクトを選択します。

    Cloud Billing 関連の Pub/Sub トピックなど、Cloud 請求先アカウントの FinOps と請求管理に必要なすべてのリソースを格納する別の Google Cloud プロジェクトを作成して使用することをおすすめします。請求管理のユースケースで FinOps 重視のプロジェクトを使用するメリットの詳細をご確認ください。

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

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

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

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

  1. Google Cloud コンソールの [お支払い] セクションの [予算とアラート] ページにログインします。Cloud 請求先アカウントへのアクセスレベルに応じて手順が異なります。

    Cloud 請求先アカウントの権限を持つユーザー プロジェクト レベルの権限のみを持つユーザー(プレビュー

    Cloud 請求先アカウントの権限がある場合は、アクセス権のある請求先アカウントをリストから選択できます。

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

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

      選択した請求先アカウントの [予算とアラート] ページが開きます。

    プロジェクト権限はあるものの、プロジェクトの Cloud 請求先アカウントに対する権限がなにも付与されていない場合は、[お支払い] セクションに移動する前にプロジェクトを選択する必要があります。

    1. Google Cloud コンソールのダッシュボードにログインし、プロジェクトを選択します。

      Google Cloud コンソールを開く
    2. 予算を管理するプロジェクトを選択します。
    3. 次に、[お支払い] に移動します。Google Cloud コンソールの [ナビゲーション メニュー] を開き、[お支払い] を選択します。

      表示および管理する請求先アカウントを選択するように求められたら、[リンクされた請求先アカウントに移動] をクリックして、選択したプロジェクトにリンクされている請求先アカウントを表示します。

      選択した請求先アカウントの請求の概要ページが表示されます。

    4. [お支払い] ナビゲーション メニューの [費用管理] セクションで、[予算とアラート] を選択します。
  2. 必要であれば、予算を作成します。既存の予算とアラートルールを編集するには、予算名をクリックします。

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

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

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

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

通知形式

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 つの理由により、配信が失敗することがあります。