類似のやらかし記事が見当たらなかったので書いてみました。
ちなみに執筆時点でまだ請求額が確定してないので円安に震えてます。。
本記事は経緯や調査の流れを細かく書いているので「止め方が知りたいんだ!」という方は飛ばしてください。
事の発端
友人 A と趣味で開発をしており、SageMaker を使ったサービス開発をしているのですが、
SageMaker Studio のコンソールをよく分からずポチポチイジっていました。(盛大なフラグ)
実は以前も Rekognition で推論を止め忘れて予想外の請求をされたことがあったので、
作業後には SageMaker のノートブックインスタンスを止めてからその日の作業終了しました。
(同じ過ちを犯すとは我ながら全く学んでいませんね、、)
発覚
ある日クレカの明細を見ていたら AWS から請求がありました。
「先月は個人開発で触ったしこんなもんかー」と思っていましたが、
え?もしかして?と思い、今月の請求予定金額を見てみると、、
( ゚ д ゚)「ん??」「は!?10 万!?!?」 とリアルに二度見しました。
開き直しても金額が変わらず、肝を冷やすとはまさにこの事。。
調査してみた
まずは請求書画面でサービス別料金を確認してみました。
すると SageMaker で $600 超えの項目を発見。
$1.9 per Hrs for Canvas:Workspace Instance (Session-Hrs):RunInstance in Asia Pacific (Tokyo)
なにそれ?おいしいの??
前述の通り SageMaker のノートブックインスタンスは止めたはずなので何故だろう?という気持ちになり、
当初(多分今も) SageMaker に関する知識はゼロだったので料金欄を見ても $1.9/h
というインタンスが見当たらず、ますます謎が深まっていました。
課金の正体
$1.9 という言葉を頼りにネットの海を彷徨うと、、、あった!!!!
説明には以下のようなことが書かれていました。
この時間は、ユーザーが SageMaker Canvas アプリケーションを起動したときに開始され、ユーザーが SageMaker Canvas インターフェイスからログアウトするか、または管理者が AWS マネジメントコンソールから SageMaker Canvas アプリケーションを終了したときのいずれかに終了します。SageMaker Canvas からログアウトしている場合、定期的な請求は発生しません。
「え?マネコンと SageMaker Studio からもログアウトしたよ?そもそもいつログインしたっけ?」
そもそも SageMaker Canvas とは?
ざっくりいうとノーコードで機械学習のモデルを生成できるソリューションだそうです。
課金を止める方法
課金元は分かりましたが止め方が分からなかったので、またもネットの海を彷徨うと以下の動画に出会いました。
私の環境では Organization と SSO で組織向けに SageMaker ドメインを設定していたので、動画とは違う少し深い場所にありました。
SageMaker > 左メニューの「ドメイン」 > 該当しそうなドメイン > 「ユーザプロファイル」タブ > 該当しそうなユーザ
すると、Canvas アプリが動いてました。。。
どうやらブラウザやマネコンをログアウトしただけではインスタンスが止まらず、 Canvas のログアウトもしくはアプリの削除をしないと課金が止まらないようです。
止める方法 その1
前提:起動している Canvas のダッシュボードにログインできる場合
止める方法 その2
前提:該当ユーザの SageMaker Studio にログインできる場合
止める方法 その3
前提:該当ユーザの SageMaker Studio にログインできない場合
- SageMaker のドメインを管理できるユーザでマネコンにログインします
SageMaker > 左メニューの「ドメイン」 > 該当するドメイン > 「ユーザプロファイル」タブ > 該当するユーザ
- アプリケーションタイプから
Canvas
になっているアクションでアプリケーションを削除
を押します
ちなみに今回は友人 A のユーザプロファイルで動作しており、私はログインできなかったので最後の方法で削除しました。
対処
対処その1 予算の設定と料金通知 Bot を作成
今回は高額請求に全く気づかなかったので、今更ですが課金アラームの設定を実施しました。
既に設定していたつもりになっていたのですが、以前の個人開発で使っていた別アカウントに設定しただけで今回のアカウントには何も設定されていませんでした。。
というわけで Lambda 経由で Discord の Webhook を叩いて呟いてもらうことにしました。
予算超過アラームは設定した閾値でしか発火しないため、もし超過した後に高額請求になると気づかないので毎日呟いてもらうことにしました。
対処その2 IAM ロールの権限を絞る(未実施)
こちらはそもそも Canvas を起動できないようするという方針です。
SageMaker ドメイン作成時にアクティビティを選択する欄があるので Canvas を外せば良い気がします。
今回は個人開発ということもあり、今後使うかもしれないので実施してません。
最後に
Canvas を起動したと思われる友人 A 本人もいつ起動したのか全く記憶になく、起動していたことすら知りませんでした。
SageMaker 怖い。。ではなく、料金アラームを設定した上で最低限の知識をつけてから使おう。という気持ちになって頂ければと思います。(盛大なブーメラン)
本記事で参加しているキャンペーンの 新しい年に向けて良いスタートを切りたい方
とは相反するやらかし記事ですが、せめて笑い話に昇華してもらえれば幸いです。。