この記事は セゾン情報システムズ Advent Calendar 2020 19日目の記事です。
#2021/8/16追記
本件の事象ですが、
2021年8月6日のアップデートにより解消されました!
この記事は忘備として残させていただきます。
#はじめに
RDS ProxyをsharedVPCより、サブネット共有されたAWSアカウントから作成しようとした際につまったお話です。
以後、
sharedVPCより、サブネット共有されているAWSアカウントを子アカウント。
sharedVPCより、サブネット共有しているAWSアカウントを親アカウントと呼びます。
RDSproxy公式ドキュメント
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/rds-proxy.html#rds-proxy.howitworks
#つまったところ
結論からお話すると、
子アカウントからRDSproxyを作成することはできません。
子アカウントからの作成を試みても、画像のエラーが表示されます。
DBプロキシ 作成のリクエストが失敗しました。
DBProxy cannot be created in shared VPC
IAMポリシーを中心にいろいろと見てみましたが原因がわからず、AWSサポートへ確認しました。
AWSサポートからの回答は、
所有者アクセス権限を持った親アカウントからのみ作成できる内部制約が存在するとのこと。
謎が解けました。
ちなみに、
2020/12/18現在、AWS公式ドキュメントにsharedVPC上の制約を記述されてはおりません。
ご注意くださいませ。
#対応したこと
親アカウントにリソースを立て、子アカウントから利用可とする方針にしました。
###1.RDSproxy関連リソースを親アカウント上に作成する。
RDSproxyから接続させたいDB・シークレット・CMKを親アカウント上に作成しました。
IAMロールやセキュリティグループも必要であれば事前に用意しましょう。
※RDSproxy作成時のパラメータとして選択可能とするため。
###2.RDSproxyを親アカウント上から作成する。
通常通り、AWSコンソールからRDSproxyを作成してみました。
###3.子アカウントからシークレットを使用できるようにする。
このままでは子アカウントからシークレットを利用できないため、追加設定が必要です。
下記リンクより、シークレットとCMKのポリシーを改修しました。
AWS アカウント間で AWS Secrets Manager のシークレットを共有するにはどうすればよいですか?
##まとめ
上記3ステップにて、RDSproxyを利用できるようになりました。
最後に、
2020/12/18現在、RDSproxy自体にタグをつけることができません。
コスト配分タグ等、管理を別途考慮する必要がありそうです。
##その他参考
RDS ProxyがGAされました!!
https://dev.classmethod.jp/articles/rds-proxy-ga/
祝GA‼︎【Go】Lambda + RDS 接続にRDS Proxyを使ってみた
https://qiita.com/maika_kamada/items/6eb6a40c17b4b8995acb