CloudFormation, AWS CLIでRDS Proxyを作成する方法

プログラミング

こんにちは。いっちー(@tetestkake_blog)です!

AWSリソース構築の際、画面からリソースを作成する作業を効率化したいなと思うことはありませんか?

CloudFormation, AWS CLIを使用すると、画面から設定項目を入力せずともにAWSリソースの作成ができ便利です。

この記事ではRDS Proxyを例に取り、CloudFormation, AWS CLIでリソースを作成する方法をサンプル付きで紹介します!

いっちー
いっちー

RDS Proxyってなに?という方は以下の記事をまずご覧ください。

※CloudFormation, AWS CLIどちらのサンプルを実行しても同じようなRDS Proxyを作成できます。

スポンサーリンク

CloudFormationでRDS Proxyを作成

CloudFormationを使い、以下の手順でRDS Proxyを作成します。

  1. RDS Proxyを作成するためのテンプレートファイルを作成
  2. 作成したテンプレートファイルを使ってRDS Proxyを作成
いっちー
いっちー

CloudFormationってなに?という方は以下の記事をまずご覧ください。

RDS Proxyを作成するためのテンプレートファイルを作成

まずはCloudFormationにてリソースの構築に必要な、RDS Proxy用テンプレートを作成します。

テンプレートはyamlやjsonで記述します。以下はRDS Proxy用サンプルテンプレートです。

AWSTemplateFormatVersion: 2010-09-09

Parameters:
  ProxyName:
    Type: String
    Default: <Proxyの名前>
  ProxyTargetDBClusterIdentifiers:
    Type: CommaDelimitedList
  SecretReaderRoleArn:
    Type: String
    Default: <シークレットを参照できるIAM RoleのARN>
  ProxySecretArn:
    Type: String
    Default: <接続情報用シークレットのARN>
  SubnetIds:
    Type: String
    Default: <サブネットID1>,<サブネットID2>

Resources:
  TestDBProxy:
    Type: AWS::RDS::DBProxy
    Properties:
      DebugLogging: false
      DBProxyName: !Ref ProxyName
      EngineFamily: MYSQL
      IdleClientTimeout: 120
      RequireTLS: false
      RoleArn:
        !Ref SecretReaderRoleArn
      Auth:
        - {AuthScheme: SECRETS, SecretArn: !Ref ProxySecretArn, IAMAuth: DISABLED}
      VpcSubnetIds:
        Fn::Split: [",", !Ref SubnetIds]
  ProxyTargetGroup:
    Type: AWS::RDS::DBProxyTargetGroup
    Properties:
      DBProxyName: !Ref TestDBProxy
      # Proxyが接続するRDS Auroraクラスターの識別子
      DBClusterIdentifiers: !Ref ProxyTargetDBClusterIdentifiers
      TargetGroupName: default
      ConnectionPoolConfigurationInfo:
          MaxConnectionsPercent: 100
          MaxIdleConnectionsPercent: 50
          ConnectionBorrowTimeout: 120
いっちー
いっちー

上記サンプルはこちらにアップロードしてあるのでご自由にお使いください!

作成したテンプレートファイルを使ってRDS Proxyを作成

上記テンプレートを用いてスタックを作成します。

スタックは、

CloudFormation > スタック > スタックの作成 > 新しいリソースを利用(標準)

から作成します。

yamlで定義したDefaultの値から変更する場合は、「スタックの詳細を指定」セクションから変更します。

最後のレビュー画面で設定項目に問題がないことを確認して、「スタックの作成」ボタンをクリックし、

スタックのステータスが「CREATE_IN_PROGRESS」から「CREATE_COMPLETE」になったら作成完了です。

いっちー
いっちー

作成の完了までは10分程度かかります。

スタックを作成してあとは待つだけなので楽チンですね!

AWS CLIでRDS Proxyを作成

次はAWS CLIを使用したRDS Proxyの作成方法を解説します。

手順は以下です。

  1. Proxy作成コマンドを叩く
  2. Proxyターゲット作成コマンドを叩く

Proxy作成コマンドを叩く

まずはProxy本体を作成するコマンドを叩きます。サンプルは以下です。

$ aws rds create-db-proxy \
--db-proxy-name "<任意の名前>" \
--engine-family "MYSQL" \
--auth '[{"Description": "<説明>", "AuthScheme": "SECRETS", "SecretArn": "<SecretsのARN>", "IAMAuth": "DISABLED"}]' \
--role-arn "<RoleのARN>" \
--vpc-subnet-ids "<SubnetId1>" "<SubnetId2>" ......
いっちー
いっちー

コマンドが長くなってしまったので\(バックスラッシュ)で改行してあります。

–engine-familyではPOSTGRESQLも選択可能
–auth.IAMAuthではREQUIREDも選択可能

Proxyターゲット作成コマンドを叩く

次に以下のコマンドでProxyターゲットを作成します。

$ aws rds register-db-proxy-targets \
--db-proxy-name <Proxy名> \
--db-cluster-identifiers <DBクラスタの名前>

–db-instance-identifiersのオプションを指定することも可能

[補足] LambdaにRDS Proxyを紐づける場合

作成したRDS ProxyをLambdaにアタッチする場合は、

Lambda > 設定 > データベースプロキシ > データベースプロキシの追加

から、コマンド経由で作成したProxyをアタッチします。

なお、AWS CLIで作成したProxyにおいて、

コンソールではProxyがAvailableになっているが、作成後すぐはLambdaからの接続に失敗する事象を確認しました。

10分ほど待つと問題なく疎通できたので、裏で何かを構築していた途中だったのかもしれないです。

いっちー
いっちー

気長に待ちましょう…!

さいごに

この記事ではCloudFormation, AWS CLIでRDS Proxyを作成する方法に関して解説しました。

コンソールから項目を設定しなくてもリソースが構築できる便利な代物なので、

インフラ環境構築の際にはCloudFormation, AWS CLIを使ってみてはいかがでしょうか?

いっちー
いっちー

AWSの学習には「Amazon Web Services 基礎からのネットワーク&サーバー構築」がおすすめです!

お知らせ

にほんブログ村のランキングに参加しています。よろしければ下のボタンをポチッとしていただけると嬉しいです\(^^)/

にほんブログ村 IT技術ブログへ

参考資料

コメント

タイトルとURLをコピーしました