Amazon SageMakerのQuotaはエラーメッセージで確認する（しかない）

SageMakerのQuotaの調べ方が分からなくて、ちょっと調べるのに手間取ったのちに「調べられない」というのが結論だったので、繰り返さないで済むようにメモ。現時点では、現在のQuota値はエラーメッセージにしか出てこないようです。

# SageMakerのQuotaはエラーメッセージで見る

SageMakerのQuotaを調べるための情報を探していくと「[Amazon SageMaker で ResourceLimitExceeded エラーを解決する](https://aws.amazon.com/jp/premiumsupport/knowledge-center/resourcelimitexceeded-sagemaker/)」が見つかりました。この中では、次のように説明されています。

> 増加が必要なリソースを決定した後、要求する増加の量を決定します。**この情報はエラーメッセージにあります**。たとえば、 us-east-1 リージョンに 18 個の ml.m5.2xlarge ノートブックインスタンスを持つエンドポイントを作成するとします。次のエラーが表示されます。  
> ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling the CreateEndpoint operation: 
The account-level service limit 'ml.m5.2xlarge for endpoint usage' is 20 Instances, with current utilization of 4 Instances and a request delta of 18 Instances.

…エラーメッセージ見ろって、普通にQuota値確認する方法ないのかな。たまたまこう書いてるだけかもしれないし、2020年の記事だから状況が変わってるかもしれないしな。そう思って（あとこれ以上すぐには情報が出てくる気がしなくて）後述の通りマネジメントコンソール、AWS CLI、AWS Tools for PowerShellを試してみましたが、その通りのようでした。エラーメッセージを見ろ。

そうTweetしてたら「[今のところ確認する術はサポートのみな模様。](https://twitter.com/midnight480/status/1527909594416447494)」とリプライをもらいました。昨年末のre:Inventでローンチされたre:Postにこういう投稿があるとのこと。

> SageMakerの現在のService Quotaってどうやって確認すればいい？（How do I check my current SageMaker service quotas?）
> ([Nathaniel Ng, asked 4 months ago](https://repost.aws/questions/QUweO83CSlTu-3Zn2RxdESWg/how-do-i-check-my-current-sage-maker-service-quotas))

> 残念ながら、AWS SageMakerではService Quotaを直接表示する方法をサポートしていません。（Unfortunately, AWS Sagemaker is not supported for direct visibility into the service quotas.）
> (Nirmal_Karia, answered 4 months ago)

いまだにないようです。エラーメッセージを見ろ。

# 調べてみる

一応、実際に調べてみた結果は以下の通り。いずれの場合でも、調べたいQuotaの項目だけでなく、SageMakerというサービス名が出てきませんでした。re:Postの投稿から更に4か月たっていますが、変わっていないようです。

## マネジメントコンソールでの確認

ブラウザベースのGUIであるマネジメントコンソールの[AWS Service Quotas](https://ap-northeast-1.console.aws.amazon.com/servicequotas/home/services)で確認すると、次のようになります。SageMakerはService Quotas管理のQuota項目として見つかりませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55718/6ef7bb6a-78c8-0959-9b82-c313689b6977.png)

## AWS CLIでの確認

Quota値を確認できる「[list-service-quotas](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/service-quotas/list-service-quotas.html)」コマンドはサービスコードが必須の引数なので、まず「[list-services](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/service-quotas/list-services.html)」コマンドレットでサービス一覧を確認しました。 `sage` を含むものはありませんでした。

```
c:\> aws service-quotas list-services | find /I "sage"
c:\>
```

例えば `VPC` であれば見つかるので、絞込みの間違い等ではないはずです。

```
c:\> aws service-quotas list-services | find /I "vpc"
- ServiceCode: vpc
  ServiceName: Amazon Virtual Private Cloud (Amazon VPC)
```

## AWS Tools for PowerShellでの確認

Quota値を確認するための「[Get-SQServiceQuota](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SQServiceQuota.html)」コマンドレットはサービスコードが必須の引数なので、まず「[Get-SQServiceList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SQServiceList.html)」コマンドレットでサービス一覧を確認しました。ServiceCodeにもServiceNameにも `Sage` を含むものはありませんでした。

```PowerShell
PS C:\> Get-SQServiceList | ?{ ($_.ServiceName -like "*sage*") -OR ($_.ServiceCode -like "*sage*") }
PS C:\>
```

例えば `VPC` であれば見つかるので、絞込みの間違い等ではないはずです。

```
PS C:\> Get-SQServiceList | ?{ ($_.ServiceName -like "*vpc*") -OR ($_.ServiceCode -like "*vpc*") }

ServiceCode ServiceName
----------- -----------
vpc         Amazon Virtual Private Cloud (Amazon VPC)
```

# 終わりに

5月20日の「[人を笑わせるAIをつくってみる AWS Summit 直前Special 電笑戦のモデルをつくる](https://awsbasics.connpass.com/event/244592/)」ハンズオンをやっていて、まさしく「Amazon SageMakerでResourceLimitExceededエラー」になって調べて回ったという一幕でした。

いままでCLIやPowerShellでService Quotaを取得したりしてなかったので勉強になりましたが、ハンズオンは途中リタイアで残念でした。みなさんはそんな優先順位間違えたことしないで、マネジメントコンソールなどどれか一つで表示されないことを確認したら、もうサポートリクエスト出しちゃってください。あと、後で一人ハンズオンやろう。

あと今週水～木の[AWS Summit JAPAN](https://aws.amazon.com/jp/summits/japan/)、初日夜に「[ボケて電笑戦](https://aws.amazon.com/jp/summits/japan/sessions/?aws-summit-japan-2022-cards.sort-by=item.additionalFields.sortOrder&aws-summit-japan-2022-cards.sort-order=asc&awsf.level=*all&awsf.session-category=*all&awsf.company-category=*all&awsf.industry=*all&awsf.use-case=*all&aws-summit-japan-2022-cards.q=%E9%9B%BB%E7%AC%91%E6%88%A6&aws-summit-japan-2022-cards.q_operator=AND)」が予定されています。みんなで観戦してTwitterとかで盛り上がりましょう。

# 参考

* [Amazon SageMaker で ResourceLimitExceeded エラーを解決する](https://aws.amazon.com/jp/premiumsupport/knowledge-center/resourcelimitexceeded-sagemaker/)
* [How do I check my current SageMaker service quotas? | AWS re:Post](https://repost.aws/questions/QUweO83CSlTu-3Zn2RxdESWg/how-do-i-check-my-current-sage-maker-service-quotas) (via [Tetsuya Shibao, Tweet on 2022年5月21日 16:10](https://twitter.com/midnight480/status/1527909594416447494))
* [Amazon SageMaker エンドポイントとクォータ - AWS 全般のリファレンス](https://docs.aws.amazon.com/ja_jp/general/latest/gr/sagemaker.html#limits_sagemaker) … デフォルト値であればこちら。
* AWS CLI。
    * [aws service-quotas list-service-quotas](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/service-quotas/list-service-quotas.html)
    * [aws service-quotas list-services](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/service-quotas/list-services.html)
* AWS Tools for PowerShell。
    * [Get-SQServiceQuota](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SQServiceQuota.html)
    * [Get-SQServiceList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-SQServiceList.html)