初めに
自分は2年くらい業務でGCP(今はGoogle Cloudですね)を使っていたのですが、友達が個人開発でGoogle Cloud使いたいから手伝ってとのことで、久々にコンソール触りたいなーと思ったので環境構築を手伝うことにしました。友達のクレジットカードが紐づいた環境なので自分の環境以上に課金やセキュリティに対して注意しなくてはなりません。課金だけでなく友情も爆発してしまいかねませんので
今回は最初期から構築するということで個人開発者向けにお財布や環境を守るうえでの最初にやったほうがよい課金のセーフティ的な設定をまとめていきたいと思います。企業で検証環境管理している人にも参考になるかと思いますので是非最後まで見てもらえると嬉しいです!
前提
- Google Cloudのプロジェクトを作成していること
- 課金アカウントを作成していること(クレジットカードの紐づけできていること)
その1 予算アラートとメール通知を設定しよう
まずは予算アラートを設定し、メール通知を設定しましょう。予算額を設定し必要なメールアドレスの設定をすれば予算に対する閾値でメールが届くようになります。デフォルトでは設定した予算に対し、50%,90%,100%でアラートメールが届くようになりますが、個人開発で予期せぬ課金がされていることは避けなければいけないので、自分は25%,50%...など少し細かく設定しようと思います。
この設定では課金額が予算額を超えてもメールが届くだけで課金が止められないので、次は一定の金額になったらプロジェクトの課金が停止する設定をしましょう!
その2 一定の金額になったらプロジェクトが停止するようにする
プロジェクトと課金アカウントの紐づけを強制的に解除することで課金を停止させることができます。その1で設定した予算にはPubSubと連携できる機能があるので、予算100%に到達したらPubSubとcloudFunctionで上記公式ページ中のコードをデプロイし、課金の強制停止の自動化を行うことができます。ただし強制停止すると一部リソースが削除されてしまう可能性があったり、インスタンスが正常に停止されない可能性があるなどで注意が必要です。バックアップやIaC等でリソースの再現性を高めておくと吉だと思います。
一度予算を低めに設定して課金が止まるのか必ずテストしておきましょう!万が一ツールが動かない→課金爆発は絶対に避けなければなりません。
※開発中のサービスを公開する場合、課金が止まる=サービス断につながるので、リリース後に関してはこの設定は非推奨です。あくまで予算が厳しく一時的に止めても問題ない検証用の環境などを想定しています。リリースするタイミングでprod用のプロジェクト立ててリリースすればややこしいことにはならないかもですね
余談
このスクリプト、自分の企業で使っている従業員用の検証環境でも入れたんですけど、GKEやSQLつけっぱなし→気づいたら課金されまってる!みたいなシチュエーションをある程度回避できるのでおすすめですね。
また、PubSubでなくてもcloudFunctionがキックできれば問題ないので、例えば課金情報をBigQueryにExportした上で、schedulerで1日ごとにcloudFunctionをキック。cloudFunction内でBigQueryクエリ叩いてプロジェクトA・B・Cの合計課金額が10万超えたら3つのプロジェクト停止する。なんて応用も効いたりします!
その3 手動で課金の有効化・無効化を行ってみる
その2で行ったプロジェクトの自動停止をテストした後は、課金の有効化についても試してみましょう。基本的に課金アカウントの紐づけを再度有効化をするだけですが、万が一復元期間ギリギリで間に合わなかった!なんて事故を起こさないためにも一度確認しておくことをおすすめします。また、無効化についても仕事が忙しい間だけ個人開発をお休みする、なんてときにもチマチマした不要な課金が走らなくなるのでこちらも一度試しておくと良いと思います。
ちなみに、強制停止したプロジェクトの復元可能期間は30日です。復活させたい場合は30日以内に課金の有効化を行いましょう!
まとめ
クラウドサービスは無料枠があるので工夫次第でかなり安く扱えて便利ですが、インスタンスの停止忘れなど思わないところで料金がかかりがちです。予算アラートと課金の上限さえ設定できてしまえばそれ以上は課金が走らなくなるので、ある程度お財布を気にせず安心して使えるようになると思います!
それでは良いクラウドライフを!