💭

AWS SageMakerの料金が止まらない(2日で約4000円課金)

に公開

解決方法について説明します!

はじめに

AWSの機械学習サービス SageMaker を試してみたら、2日で約4,000円も課金されてビックリ
しかも SageMakerのコンソールには何も表示されない状態だったので、気づいたときには手遅れになってました

この記事では、SageMakerで何をしたのか/課金が止まらなかった原因/CLIで完全に止めるまでにやったことの3つを紹介します。


SageMakerで何をしたのか

※Windows11

Random Cut Forest(RCF)アルゴリズムを使って、IoTセンサーデータの中に「異常なデータ」があるかを検出するシステムを作成しました

使用した技術・サービス

  • Amazon SageMaker
    • 統合開発環境(JupyterLab)
    • 異常検知アルゴリズム:Random Cut Forest (RCF)
  • Amazon S3
    • Timestreamからエクスポートされたセンサーデータ(CSV)を格納
  • Python (boto3, pandas, sklearn)
    • データ前処理、スケーリング、可視化など

なぜ課金されたのか?

結論:推論エンドポイント(InService)が裏で動きっぱなしだった

SageMakerでモデルをデプロイすると、「エンドポイント」というAPIサーバーが常時稼働する仕組みになっています。
このエンドポイント、手動で削除しないと永遠に課金され続けます、やべえ


課金が発生した状況

  • SageMaker StudioでRandom Cut Forest(異常検知)モデルを動かした
  • 学習後、自動で「推論エンドポイント」が複数作成された
  • 使い終わっても削除せず放置
  • Studio画面には「エンドポイント」など表示されず気づけなかった
  • 2日後、Billingを見たら 4,000円超え…

解決方法:AWS CLIでの一括削除

まずは認証設定(必要に応じて)

aws configure

① エンドポイントを確認・削除

エンドポイント一覧表示

aws sagemaker list-endpoints --output table

全エンドポイント削除(PowerShell向け)

$endpoints = aws sagemaker list-endpoints --query "Endpoints[].EndpointName" --output text
$endpointList = $endpoints -split "`t"
foreach ($ep in $endpointList) {
    Write-Host "Deleting endpoint: $ep"
    aws sagemaker delete-endpoint --endpoint-name $ep
}

② 構成(Endpoint Config)を削除

aws sagemaker list-endpoint-configs --query "EndpointConfigs[].EndpointConfigName" --output text | `
ForEach-Object { aws sagemaker delete-endpoint-config --endpoint-config-name $_ }

③ モデルも削除

aws sagemaker list-models --query "Models[].ModelName" --output text | `
ForEach-Object { aws sagemaker delete-model --model-name $_ }

④ Studioドメインを削除(必要に応じて)

aws sagemaker list-domains --output table

aws sagemaker delete-domain --domain-id <ドメインID> --retention-policy "Retain=false"

その他

  • SageMakerのコンソールでドメインが削除されているのか
  • S3バケットが削除されているか

確認


以下の2つさえ空になっていればOK

aws sagemaker list-endpoint-configs
{
    "EndpointConfigs": []
}
aws sagemaker list-domains
{
    "Domains": []
}

Discussion