Google Cloud の予算アラート設定はプロジェクトレベルの権限のみでも設定できる

こんにちは、京セラコミュニケーションシステム 石関 (@kccs_daisuke-ishizeki)です。

Google Cloud（旧称 GCP）を使う上で重要な課金周りの対策筆頭である**予算アラート**設定していますか？

2023/10/23 より機能がアップデートされ、プロジェクトレベルの権限のみで単一プロジェクトの予算とアラート設定ができるようになりました。

（↑がこの記事の全てです😅）

たまに質問をいただくこともありましたので、まだ知らない方に向けて記事にしてみます。

:::note warn
本記事は2024年9月12日ごろに作成しております。引用している内容は執筆時点のものとなります。
:::

## この記事の対象者

- 請求先アカウントに対する権限はないが、プロジェクトの予算アラートを設定したい方
- 請求先アカウントに対するロールを割り当てたくないが、プロジェクトの予算アラートを設定しセルフコントロールして欲しいと思っている管理者相当の方

## 記事概要

2023/10/23 より機能がアップデートされ、**プロジェクトレベルの権限のみ**で**単一プロジェクト**の予算とアラート設定が可能になりました。

プロジェクトオーナー / プロジェクト編集者 のロールが割り当てられていれば、予算アラートを設定できます。

:::note warn
1つの予算アラート設定で複数のプロジェクトを対象としたい場合は、これまでどおり請求先アカウントに対する権限が必要です。
:::

## 予算アラートとは

あらかじめ任意の金額（予算）を決めておき、しきい値を超えるタイミングでアラートとして通知を送ることができる機能です。

Google Cloud コンソールをこまめに確認することなく、予期せぬ課金の発生や想定していない金額の到達に早く気づくことができます。

## 必要な IAM ロール

プロジェクトの予算を作成するには、プロジェクトに対する以下のいずれかのロールが必要です。

- プロジェクトオーナー（roles/owner）
- プロジェクト編集者（roles/editor）

基本ロールはちょっと…という方は、以下の権限を含むカスタムロールを作成してください。

```
resourcemanager.projects.get
billing.resourceCosts.get
billing.resourcebudgets.read
billing.resourcebudgets.write
```

## リソース準備

通知先にはメールまたはプログラム（Pub/Sub）が指定可能です。

具体的には以下のパターンが設定できます。

- メール通知
  - ロールベースのメール通知
    - 課金管理者とユーザー（請求先アカウント管理者 / 請求先アカウントユーザー）
    - **プロジェクトオーナー**
  - **任意の宛先へのメール（Cloud Monitoring での通知チャネル）**
- プログラム（Pub/Sub）による通知

この記事では プロジェクトオーナー / 任意の宛先へのメール（Cloud Monitoring での通知チャネル）へのメールを例に記載します。

### プロジェクトオーナー へのメールの場合

1. Google Cloud コンソールのプロジェクトセレクタで対象のプロジェクトを選択します
2. IAM の画面にて予算アラートのメールを受信するユーザーに プロジェクトオーナー ロールが割り当てられていることを確認します（または 必要に応じて変更します）
```
# 対象ロール
プロジェクトオーナー（roles/owner）

# プリンシパル（ロールの割り当て先）
予算アラートのメールを受け取る Google アカウント
```

### 任意の宛先へのメール（Cloud Monitoring での通知チャネル）の場合

Cloud Monitoring の通知チャネルを作成します。設定には以下のロールが必要です。

- Monitoring 編集者（roles/monitoring.editor）

1. Google Cloud コンソールのプロジェクトセレクタで対象のプロジェクトを選択します
2. Google Cloud コンソールから [Monitoring] - [アラート] を開き [Edit notification channels] を選択します
3. 通知チャネルの Email セクションにてメールを受け取るメールアドレスを指定します

参考

https://cloud.google.com/monitoring/support/notification-options?hl=ja#email

## 予算とアラート設定作業

以下の手順で予算の金額とアラート通知タイミングとなるしきい値を設定します。

1. [お支払い] - [予算とアラート] より 予算を作成 を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728315/9b4f0542-7c26-0cbf-3c82-6e0da592bae0.png)
2. [名前] に任意の名称を入力し、次へ
![image-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728315/0d2b565f-ad6c-f00f-afea-2c09a1af9abe.png)
3. [目標金額] に任意の金額 を入力し、次へ
![image-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728315/2f4e7385-6e55-4959-0da7-6c4ab223dc0a.png)
4. **予算の割合** または **金額** 欄に任意の値を入力します。また通知の管理を以下のとおり設定します
![image-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728315/1302b9da-5ab6-0ba9-b105-d60bbeaadfbf.png)
5. 以下のように作成した予算が表示されれば完了です
![image-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728315/3ddd2385-6a12-7287-2666-6316e61b5533.png)

通知チャネルを使用した場合は、メールアドレスが誤っているケースなど通知が届かないこともあり得るため、初回はテスト用に低いしきい値を設定し、想定通りの動作を確認することをオススメします。

## まとめ

予算アラートはあくまで通知の機能であるため、これだけで予期せぬ課金の発生を防ぐことはできませんが、予算に対する課金のペースを把握したり、予期せぬ課金の発生を早期に検知できます。

権限の問題でいままで後回しにしていた方など、プロジェクトレベルの権限で予算アラートが設定できるようになっていますので、これを機にぜひ設定いただければと思います。

## 参考ドキュメント

https://cloud.google.com/billing/docs/how-to/budgets?hl=ja#steps-to-create-budget

https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients?hl=ja

https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications?hl=ja