#いつの間にかGCPで1万円の課金が発生!
無料枠の中で使用するにとどめていたはずなのに。
###当該プロジェクト
- 保有株の情報(価格推移, 次回決算発表日など)を日本市場、米国市場の終了後に自分のメールに送信する
- 大学の講義情報(アナウンス, 未提出課題, テスト, メール)をまとめて自分のメールに送信する
###使用GCPプロダクト
- Cloud Function
- Cloud Pub/Sub
- Cloud Scheduler
###原因
-
メールの2段階認証を設定した為。stmpを使ったメール送信では送信元メールアカウントのID(メールアドレス)とパスワードが必要だが、2段階認証を有効にした場合、メールアドレスのパスワードではなく例外的に2段階認証なくフルアクセスを許可するアプリケーションパスワードをログインパスワードに置き換える必要がある。例外的に設定したアプリケーションパスワードと from_addr を与えて smtp経由で送信する必要がある。セキュリティー上良くないなと思い2段階認証を設定したが、GCPでそのメールアカウントを使ってsmtp経由で送信しているのを忘れていた。
-
Cloud Functions で失敗時に再試行するようビルドしていた。1日に2~3回しか実行しないはずなのに、上記のstmpエラーがトリガーとなって24時間実行していたようだった。
###解決法
-
2段階認証をオンにしたままsmtp送信を行うには、例外的に2段階認証なくフルアクセスできるようにアプリケーションパスワードを作成する。ログイン時にはメールアドレスとアプリケーションパスワードを与える。もちろん2段階認証をオフにすることも出来るがセキュリティー上非推奨。
-
Cloud Functions で失敗時に再試行をオフにしてビルドする。自分しか使ってないサービスならこれでも良いだろう。
また、Google Cloud Console をスマートフォンでモニタリングできる Google Cloud Console というアプリがある。モニタリング用途であればパソコンからアクセスするまでもないことが多いし、予算アラートもスマホに通知されるので便利。
iOS: Google Cloud Console
Android: Google Cloud Console
いや、全然GCP周りの躓きじゃないじゃん。メールやん。