SageMaker 地理空間機能　環境削除の備忘録

## 目次

1. [はじめに](#はじめに)

2. [SageMaker地理空間機能の環境削除](#sagemaker地理空間機能の環境削除)

3. [ジョブの削除忘れに注意！！！](#ジョブの削除忘れに注意)

4. [ジョブの削除方法](#ジョブの削除方法)

5. [まとめ](#まとめ)

## はじめに

SageMaker地理空間機能を使い、衛星データを取得しました。その際、環境削除でドメイン削除後も費用が発生してしまいました。初心者あるあるなミスかと思い備忘録として残します。

衛星データを取得したときの記事は後々執筆します。

## SageMaker地理空間機能の環境削除

SageMaker地理空間機能の環境削除は、[開発者ガイド Amazon SageMaker ドメインを削除する](https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/gs-studio-delete-domain.html)に沿ってコンソールからドメインの削除を行いました。

https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/gs-studio-delete-domain.html

その後、AWS CLIでドメインの削除の確認をしました。以下が、確認のコマンドです。

```bash
# アカウント内のドメインのリストを取得
aws --region Region sagemaker list-domains

# 削除するドメインのアプリケーションのリストを取得
aws --region Region sagemaker list-apps \
    --domain-id-equals DomainId

# ドメインのユーザープロファイルのリストを取得
aws --region Region sagemaker list-user-profiles \
    --domain-id-equals DomainId

# ドメイン内の共有スペースのリストを取得
aws --region Region sagemaker list-spaces \
    --domain-id DomainId
```

結果、ドメイン、アプリケーション、ユーザプロファイル、共有スペースが削除されていることを確認しました。

## ジョブの削除忘れに注意！！！

ドメインを削除したので、翌月は費用が発生することはないだろうと思っていましたが、Sagemakerで費用が発生し続けていることがわかりました。

念の為、初週に費用が発生していないか確認して良かった...（念の為、大事！）。

![11月の課金学Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635206/13aa6a00-7634-9e68-63f2-ec1dda8d7ea7.png)

詳しく見てみると、「Amazon SageMaker Geospatial:Storage」が毎日一定額で増え続けていました。※1日あたり$0.67

![11月の課金学詳細Qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635206/e5db653d-555e-8699-a47b-88d11c37b80e.png)
![11月の課金学詳細2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635206/b0d61c40-3e7b-a1b1-482a-15267674d608.png)

解決策として、 **"COMPLETED"ステータスの EarthObservationJob を削除**する必要がありました。

ドメイン削除しただけでは、ジョブは消えないので注意が必要です。

## ジョブの削除方法

削除は、CloudShell から行いました。

[delete-earth-observation-job](https://docs.aws.amazon.com/cli/latest/reference/sagemaker-geospatial/delete-earth-observation-job.html)を参考にすると良いとの回答をいただいたので、以下のコマンドで削除しました。

https://docs.aws.amazon.com/cli/latest/reference/sagemaker-geospatial/delete-earth-observation-job.html

```bash
# EarthObservationJob のリストをjsonファイルで取得
aws sagemaker-geospatial list-earth-observation-jobs --output json > earth_observation jobs. json
```

以下が、取得後のjsonファイルになります。（ARNは一部伏せています）

```json
{
    "EarthObservationJobSummaries": [
        {
            "Arn": "arn:aws:sagemaker-geospatial:us-west-2:012345678910:earth-observation-job/・・・",
            "CreationTime": "2024-10-09T05:35:40.568923+00:00",
            "DurationInSeconds": 7852,
            "Name": "sentinel2-ndvi-job-with-timerange",
            "OperationType": "BANDMATH",
            "Status": "COMPLETED",
            "Tags": {}
        },
        {
            "Arn": "arn:aws:sagemaker-geospatial:us-west-2:012345678910:earth-observation-job/・・・",
            "CreationTime": "2024-10-09T07:23:35.383914+00:00",
            "DurationInSeconds": 8012,
            "Name": "sentinel2-ndvi-job-with-timerange",
            "OperationType": "BANDMATH",
            "Status": "COMPLETED",
            "Tags": {}
        },
        {
            "Arn": "arn:aws:sagemaker-geospatial:us-west-2:012345678910:earth-observation-job/・・・",
            "CreationTime": "2024-10-11T02:53:33.711050+00:00",
            "DurationInSeconds": 8333,
            "Name": "ndvi-job-with-bandmath",
            "OperationType": "BANDMATH",
            "Status": "COMPLETED",
            "Tags": {}
        },
        .
        .
        .
    ]
},
```

一つひとつ指定して削除すると面倒なので、Arnをテキストファイルにまとめて削除しました。

```bash
# Arnをテキストファイルにまとめる
-r ' EarthObservationJobSummaries[].Arn' earth_observation_jobs.json > job_arns.txt

# テキストファイルの中身を確認し削除
while read -r arn; do
  aws sagemaker-geospatial delete-earth-observation-job --arn "$arn"
done < job_arns.txt
```

もう一度、ジョブのリストを取得し削除されていることを確認しました。

```json
{
    "EarthObservationJobSummaries": []
}
```

これにより、ジョブの削除が完了し、費用の発生がが止まりました。

![11月の課金停止後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3635206/53394d29-f962-0aa1-24ac-80b6c835bb16.png)

## まとめ

SageMakerの地理空間機能を使用した際の環境削除についての備忘録でした。

ジョブを実行していた場合は、ドメイン削除だけでなくジョブの削除も忘れずに行いましょう。また、消したつもりになっていることもあるので確認は怠らないことが大切であると感じました。

初めてSagemMakerを使用される方々の参考になれば幸いです。