AWS RDS とAWS Secrets Managerの統合が発表があったため利用してみた

# はじめに
先日AWSで以下アナウンスが有りました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/12/amazon-rds-integration-aws-secrets-manager/

こちらによってRDS作成時にパスワードのローテーション管理含めてAWS Secrets Managerに設定できるようになりました。
以前はLambdaとSecretsManagerをつかってのパスワードのローテーションをする必要があったため、大分楽になった印象です。

# 前提
基本設定できるタイミングは Amazon RDS と Amazon Auroraでは大きく相違は無いのですが、
以下タイミングで設定できます。

*[Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html#rds-secrets-manager-overview)*
* DB インスタンスを作成する
* マルチ AZ DB クラスターを作成する
* DB インスタンスを変更する
* マルチ AZ DB クラスターを変更する
* Amazon S3 から DB インスタンスを復元する

*[Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html#rds-secrets-manager-overview)*
* DB クラスターを作成する
* DB クラスターを変更する
* Amazon S3 から DB クラスターを復元する (Aurora MySQL のみ)

# 実演
それでは実際に試してみます。
今回はAurora MySQLで実際に作ってみます。
![スクリーンショット 2023-01-31 21.55.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/da9627a2-38d9-1810-6229-65226fcee23a.png)

今回は基本デフォルトで作成することにします。
「Manage master credentials in AWS Secrets Manager」のチェックボックスを入れることで管理することが出来ます。
ただし、設定後KMSキーは変更することが出来ないため注意が必要です。
![スクリーンショット 2023-01-31 22.04.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/9b8b451e-9d92-b575-869d-4d928368e1f8.png)

しばらくしてクラスターの設定画面を見ると作成されていました。
![スクリーンショット 2023-01-31 22.18.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/49b2911a-54a8-139c-e40e-fe0396099533.png)
![スクリーンショット 2023-01-31 23.22.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/4e91d634-141e-3052-e005-ff0506a42f24.png)


Secrets Managerを確認したところ値が入っていました。
![スクリーンショット 2023-01-31 22.22.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/c3a41c1e-7fc1-b8af-8aff-72eda0b55605.png)

デフォルトでは７日でローテーション設定がされるみたいです。
![スクリーンショット 2023-01-31 22.30.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/f448027b-53f9-47d7-6d04-14072caefe8b.png)

こちらを用いてAuroraに接続してみます。
```
$ user=$(aws secretsmanager get-secret-value --secret-id rds\!cluster-******-********** | jq -r .SecretString | jq -r .username)                                                                                      
$ password=$(aws secretsmanager get-secret-value --secret-id rds\!cluster-******-********** | jq -r .SecretString | jq -r .password)  

$ mysql -u $user -p$password -h database-1.********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.7.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>  
```

こちらで接続確認が取れました！

Auroraクラスターを削除後、SecretsManagerも削除されていることを確認しました。
![スクリーンショット 2023-01-31 23.33.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/0bde64f9-1092-b157-ee31-7a45d61e27ac.png)
![スクリーンショット 2023-01-31 23.33.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191305/713f5944-c900-1a79-f172-3acc5fd52692.png)


# まとめ
これまでLambda＋SecretsManagerで設定していたものが、チェックボックスひとつで設定できるようになりました。
ぜひ設定をしてみてはいかがでしょうか？

この記事がお役に立てば嬉しいです。

# 宣伝
自分の所属チームでメンバーを募集しています。
興味があればぜひご応募お待ちしております！

[DMMの3,500万会員基盤システムをGo x AWSでリプレイスしませんか？](https://dmm-corp.com/recruit/engineer/1078/)

https://dmm-corp.com/recruit/engineer/1078/

# 参考文献
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-secrets-manager.html

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html