【AWS】Auroraオートスケール：③Cron式スケジュール設定

#はじめに
Auroraのオートスケールを記事にしたいと思います、長いのでシリーズ記事とします

1. [【AWS】Auroraオートスケール：①オートスケール概要](https://qiita.com/y-okuhira/items/1277ba6012b72280d75d)
2. [【AWS】Auroraオートスケール：②オートスケール設定](https://qiita.com/y-okuhira/items/a1b2b41e105f36daa3be)
3. 【AWS】Auroraオートスケール：③Cron式スケジュール設定 　<b>※現在の記事</b>
4. 【AWS】Auroraオートスケール：④Cron式スケジュール変更
5. 【AWS】Auroraオートスケール：⑤カスタムメトリクスでリードレプリカ数経過観察
6. 【AWS】Auroraオートスケール：⑥チューニング・ブラッシュアップ等


#Aurora Auto ScalingのCron式スケジュール設定内容
Auroraの構築は済んでいて　下記図のような簡単な環境が出来ている前提で進めていきます。

今回はAWS CLIコマンドを使用して、Auroraオートスケール内に時間指定で最小キャパシティを増やす方法を行います。
※2020年12月時点ではAWSマネジメントコンソール画面で設定は出来ません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682071/009426e9-b01e-61eb-891d-6b84b28684b8.png)

対象のEC2サーバへログインし、Auroraへアクセスします

まずは状態確認を行います
下記のようにコマンドを実行し、スケジュールが何も設定されていないことを確認します

```
[root@xxxx-server ~]# aws --region ap-northeast-1 application-autoscaling describe-scheduled-actions \
> --service-namespace rds  \
> --resource-id cluster:test-aurora-cluster
{
    "ScheduledActions": []
}
[root@xxxx-server ~]#
```

下記のようなコマンドを実行します
内容：1時から最小キャパシティ3台、最大キャパシティ5台へ設定

>aws --region ap-northeast-1 application-autoscaling put-scheduled-action \
>--service-namespace rds \
>--schedule "cron(0 8 * * ? *)" \
>--scheduled-action-name 'test-aurora-cluster-schedule' \
>--resource-id cluster:test-aurora-cluster \
>--scalable-dimension rds:cluster:ReadReplicaCount \
>--scalable-target-action 'MinCapacity=3,MaxCapacity=5'


```
[root@xxxx-server ~]# aws --region ap-northeast-1 application-autoscaling put-scheduled-action \
> --service-namespace rds \
> --schedule "cron(0 8 * * ? *)" \
> --scheduled-action-name 'test-aurora-cluster-schedule' \
> --resource-id cluster:test-aurora-cluster \
> --scalable-dimension rds:cluster:ReadReplicaCount \
> --scalable-target-action 'MinCapacity=3,MaxCapacity=5'
[root@xxxx-server ~]#
```

|項目  |設定値  |説明  |
|---|---|---|
|service-namespace  |rds  |サービスは「rds」を設定  |
|schedule  |cron(0 8 * * ? *)  |Cron式スケジュールを設定　<br>※日本時間で17時  |
|scheduled-action-name  |test-aurora-cluster-schedule  |任意のCron式スケジュールの名前  |
|resource-id  |cluster:test-aurora-cluster  |対象Auroraクラスタ名  |
|scalable-dimension  |rds:cluster:ReadReplicaCount  |この値は rds:cluster:ReadReplicaCount に設定  |
|scalable-target-action  |MinCapacity=3,MaxCapacity=5  |最小、最大キャパシティを設定  |


Cron式スケジュールについてはAWSユーザガイトをご確認ください
[スケジュールに基づくスケーリングApplication Auto Scaling](https://docs.aws.amazon.com/ja_jp/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html)


再度、内容確認のコマンドを実行し、Cron式スケジュールが設定されていることを確認します

```
[root@xxxx-server ~]# aws --region ap-northeast-1 application-autoscaling describe-scheduled-actions \
> --service-namespace rds  \
> --resource-id cluster:test-aurora-cluster
{
    "ScheduledActions": [
        {
            "ScheduledActionName": "test-aurora-cluster-schedule",
            "ScheduledActionARN": "arn:aws:autoscaling:ap-northeast-1:xxxxxxxxxxxx:scheduledAction:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:resource/rds/cluster:test-aurora-cluster:scheduledActionName/test-aurora-cluster-schedule",
            "ServiceNamespace": "rds",
            "Schedule": "cron(0 8 * * ? *)",
            "ResourceId": "cluster:test-aurora-cluster",
            "ScalableDimension": "rds:cluster:ReadReplicaCount",
            "ScalableTargetAction": {
                "MinCapacity": 3,
                "MaxCapacity": 5
            },
            "CreationTime": "2020-11-xxTxx:xx:xx.840000+00:00"
        }
    ]
}
[root@xxxx-server ~]#
```

17時になり正常に3台目が作成されました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682071/f590136d-3621-7e0a-ac80-e45724cff628.png)


オートスケールのCron式スケジュールが正常に動作していると、下記のようなログが出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682071/67cb99d2-39d0-8206-cc4e-59747b539620.png)

これでAuroraオートスケールにCron式スケジュールを組み込む対応が完了しました
負荷が高まる処理やイベント時には事前に台数を増やしておく事で安心を得る事が出来ます。


#次回
４.【AWS】Auroraオートスケール：④Cron式スケジュール変更


#参考
[Aurora レプリカでの Amazon Aurora Auto Scaling の使用](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.Integrating.AutoScaling.html)