DynamoDBがAuto Scalingに対応したと聞いて（試してみた

# はじめに
「対応した！」というのは知識として抑えていたのですが、なかなか自分で触る機会がなかったので、気になる所を触ってみてのメモ書きです。

https://aws.amazon.com/jp/blogs/aws/new-auto-scaling-for-amazon-dynamodb/

2017年の発表。　大分、ネタとしては寝かせてますね。。。

単純にGUIの画面で作ってみて終わり！という、やってみた系が多いのですが、、、スケジュール（cron式）でのスケーリング定義をやっていきたいと思います。

# テーブル作成
テーブル作成時に「Auto Scaling」を有効にして作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/e9676474-7ce1-71fd-1bb0-d2f9a9d148a8.png)

# アラートが生成（上記のテーブル作成時に自動で）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/d0b4c8ac-b1fd-cdcd-242e-eba99f32562f.png)

|キャパシティ  |観点  |監視観点  |
|---|---|---|
|Read  |AlarmHigh  |実績値の上限  |
|Read  |AlarmLow  |実績値の下限  |
|Read  |ProvisionedCapacityHigh  |設定閾値の上限  |
|Read  |ProvisionedCapacityLow  |設定閾値の下限  |
|Write  |AlarmHigh  |実績値の上限  |
|Write  |AlarmLow  |実績値の下限  |
|Write  |ProvisionedCapacityHigh  |設定閾値の上限  |
|Write  |ProvisionedCapacityLow  |設定閾値の下限  |

と、Read用×４つ、Write用×４つの、計８個がCloudWatchのアラートとして追加されます。

:::note warn
注意
今回は、あくまでもスケジュールによるキャパシティの変動予約をやりたいので全部無効にします。

:::

# テーブル削除の時にアラートも消えるの？（寄り道）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/d3b8b2af-fbf6-b93a-ce21-111a33ddcc1e.png)

削除の時に、一緒に「消す」／「消さない」の選択ができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/f906b92f-e251-5fb6-d37d-14d7f003195d.png)

無効にしてあるアラートも、一緒に削除される事が確認できました。

# AWS Auto ScalingのGUI管理画面は非対応（2024/07/30：現在）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/e056e6e6-91a5-5ed1-23e7-0d048574a8c9.png)

設定が施してあっても、一覧も定義は見えません。

# スケジュールされた実行に必要なコマンドたち

**概要**

https://docs.aws.amazon.com/autoscaling/application/userguide/scheduled-scaling-policy-overview.html

**リファレンスTop**

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/#cli-aws-application-autoscaling

# スケジュール実行の作成

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html

```common-lisp
aws application-autoscaling put-scheduled-action  \
--service-namespace dynamodb  \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--resource-id table/AutoScalingTest  \
--scheduled-action-name read-capacity-middle  \
--schedule "cron(50 12 ? * MON-FRI *)" \
--timezone "Asia/Tokyo"  \
--scalable-target-action MinCapacity=2,MaxCapacity=2
```

上記のCLIからCRON式を使ってスケジュール実行の登録が可能です。
「service-namespace」や「scalable-dimension」、「resource-id」は、リファレンスを確認すると記載されている。

# 登録したスケジュール実行の確認

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html

```common-lisp
aws application-autoscaling describe-scheduled-actions  \
--service-namespace dynamodb \
--resource-id table/AutoScalingTest
```

「service-namespace」や「resource-id」は、リファレンスを確認すると記載されている。

# 実行履歴の確認

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html

```common-lisp
aws application-autoscaling describe-scaling-activities \
--service-namespace dynamodb \
--resource-id table/AutoScalingTest
```

「service-namespace」や「resource-id」は、リファレンスを確認すると記載されている。

# 登録したスケジュール設定の削除

https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scheduled-action.html

```common-lisp
aws application-autoscaling delete-scheduled-action \
--service-namespace dynamodb  \
--scalable-dimension dynamodb:table:ReadCapacityUnits  \
--resource-id table/AutoScalingTest    \
--scheduled-action-name read-capacity-middle
```
「service-namespace」や「scalable-dimension」、「resource-id」は、リファレンスを確認すると記載されている。

# AWSの相談・お困りごとありましたら、、、

AWSの活用方法や、お困りごとの相談、随時、お仕事の受付しております。
AWSのLambda開発関連で、ライトな開発や、ちょっと、こんな事を自動化したい！等も、お気軽に問い合わせください。

https://www.cs-cloud-aid.com/