やっつけ不定記

好きなときに好きなことをちゃっちゃと書いてます

AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる LambdaとRDS Proxy

表記ハンズオンイベントに参加してみました。
https://awsbasics.connpass.com/event/221807/

今回の題材はLambdaからRDS Proxyにつないでみようというもの。
RDS Proxyが何かについては、公式ドキュメント
https://aws.amazon.com/jp/rds/proxy/
や「RDS Proxy」で検索したらいくらでも出てきます。
とりあえず、クラスター組んだDBへ接続するときの受け口みたいなものと思ったらよいでしょうか。

提供された資料
https://github.com/harunobukameda/RDS-Proxy-AWS-Lambda
に従って、ざっくりこんな感じのシナリオで進み、今回は特に困ることなく完走できました。

  1. RDS(Aurora MySQL)作成
  2. Cloud9作成(DB接続確認クライアントとして使用)
  3. RDSへの接続確認
  4. RDS Proxy作成
  5. Cloud9からRDS Proxy経由でのRDS接続確認
  6. LambdaからRDS単体への接続
  7. LambdaからRDS Proxy経由での接続
  8. お片付け

より技術的な詳細はほかにお任せするとして、以下、口頭説明やチャットの内容など
現地での補足内容で拾えた分をメモ。

  • RDS Proxyのメリット
    • LambdaからRDSへの接続にコネクションプーリングが使えるようになる(Lambdaはマイクロコンテナで常時起動しているわけではないので、コネクションプーリングが効かない)
    • リーダー/ライターのフェイルオーバーにおけるパフォーマンスが公称値で60%早くなる
  • RDS Proxy利用時の注意点
  • ハンズオン
    • Cloud9
      • Cloud9はDBクライアントとしても使える(EC2でやると、別途MariaDBを入れる必要があって煩雑になるが、Cloud9だと初めから導入されている)
      • Cloud9とRDSのVPCを揃えること
    • RDS,RDS Proxy
      • 運用環境で使う場合は、セキュリティグループの設定をよく考えること(ハンズオンの設定はガバガバ)
      • RDS作成時は「拡張されたログ記録を有効にする」のチェックを入れる方がよい(お金かかるけど、何かあったときの詳細調査にはこれが必要になる)
      • RDS ProxyがRDS本体に接続するにはシークレットマネージャの設定が必要
      • Cloud9からRDS Proxy経由で接続する手順において、下記が出る場合がある。RDS Proxyを設定してから反映までしばらく時間がかかるためとのこと。
        ERROR 2013 (HY000): Lost connection to MySQL server at 'handshake: reading initial communication packet', system error: 11
    • Lambda
      • LambdaからRDS Proxy経由でRDSに接続する場合は、運用環境ではシークレットマネージャを呼び出して接続するロジックを書くこと(ハンズオンでは接続情報をベタ書きしており、本来はNG)
    • お片付け
      • 手順記載分のほかに消した方がよいもの
        • Cloud9
        • シークレットマネージャで作成したシークレット
        • CloudWatchロググループ
  • その他