私は過去、AWSとAzureの個人アカウントで大課金を発生させたことがあります。
コスト意識はパブリッククラウドで使う上で、超超重要だと思っているのですが、どうも個人アカウントだと自由がある分、意識がゆるふわになってしまうところがあり...過去2度ほど大課金祭りをやらかしました。
どれくらい大課金なのかというと「中古だけど比較的あたらしめの原付きが1台買えるくらいの金額」でしょうか。(分かりづらいかもしれませんが、大体で察してください)
という事で私が「もう二度とおこすまい!」と決意した際の小ネタを共有しておこうと思います。
Azure
AzureではCost Managementで予算を作成します。
メールだけでは埋もれてしまって見ないこともあるので、個人使いでよく見るSlackのチャンネルにもアラートを投げるようにしています。また、Azure Mobile APPのプッシュ通知を有効化することで、さらに気づきやすくなるのでオススメです。
AWS
AWSの場合も同様にAWS Budgetsで予算を作成してアラートを投げるのは基本として、
それ以外にAWS Organizationsで管理アカウント一括請求にしつつ、別アカウントを作成し、それを普段使いのアカウントにすることです。そうする事で管理アカウントのAWS Budgetsから → SNS → Lambdaで予算を超えたアカウントは閉鎖して全てを消し去る!といった荒業ができます。
import { OrganizationsClient, CloseAccountCommand } from"@aws-sdk/client-organizations";
const client = new OrganizationsClient(config);
const input = {
AccountId: "000000000000",
};
const command = new CloseAccountCommand(input);
const response = await client.send(command);
「作ってたリソースが消えてしまった…」などとぼやいてはいけません。自分が悪いのだからしょうがないのです。
共通
2度の大課金を発生させて以降、そもそもリソースの作成はすべてIaCで行うと決めてます。
時間がかかろうがなんだろうが、そんなもの関係ないのです。絶対にIaCを使います。
消したと思ってたけど残ってたリソースがいつのまにか高額課金に…といった事態を防ぐ為。また、アカウントが閉鎖されようがすべてのリソースを抹消しようが、「IaC残ってるから、またすぐ復活できるもーん」という意識が芽生えるのでリソースを消すことに躊躇いがなくなります。
そしてさらに、infracost という素晴らしいOSSもあります。これはTerraformのコードからコスト概算を把握することができるものです。Visual Studio Codeの拡張機能などもあり重宝しています。詳細は色々な記事もあると思うのでそちらをご参考ください。
まとめ
なんとなく、おざなりになってしまいがちな個人アカウント。
これらを活用してもう二度と高額課金は発生させまいと誓ったのでした。
拙い内容で恐縮ですが最後までご覧頂き有難うございました🙏