白”雪姫”の雑なエンジニアブログ

ダイアリーがなくなってしまったため、エンジニアブログとして再出発

APIGatewayとLambdaを使って決済システムのAPIを作る話・・・その2

前回

予告の記事

前回の記事

全体構成

今回はピンク枠のお話し。

注意事項等

前回の記事とをお読みください。

今回のお話で利用するサービス

  • Lambda Function
  • VPC Peering
  • RDS Proxy
  • Security Group

構築に当たっての条件

  • Lambda Functionは、
    • TCP:3306(MySQL/Auroraポート)だけアウトバウント
    • HTTPSは無制限にアウトバウンド
  • RDSは、 RDSのあるVPCのサブネットLambda Functionのおいてあるサブネット のインバウンドを許可

実際にやったこと

元々の設計では。。。

  • VPC間でピアリングを行う
  • VPC間で相互ルーティング
  • RDSのおいてあるVPCにRDS Proxyを設置
  • セキュリティグループ設定、調整
    • 具体的に
      • RDSが所属するサブネットからRDS Proxyからの接続を許可
      • RDS Proxyが所属するサブネットから Lambda Functionが所属するサブネットを許可
      • Lambda FunctionからRDS Proxyへ接続するアウトバウンドを許可
  • Lambda FunctionからRDS Proxyを経由してRDSに接続できることを確認

・・・のはずでした。 追加でやったこと

  • Lambda Functionに所属するVPCにRDSProxyを作成
  • セキュリティグループを再調整
    • 具体的に
      • Lambda Functionが所属するセキュリティグループから Red& RDS Proxyのサブネット接続できるようにアウトバウンドを許可
      • Lambda FuncrtionがあるVPCのRDS Proxyから接続できるようにRDSがあるVPCのRDS Proxyのセキュリティグループでインバウンドを許可
      • RDSがあるVPCのRDS ProxyからLambdaのサブネット許可を取り消し
    • 再度、Lambda FunctionからRDSProxyを経由してRDSに接続できることを確認

なんでこんなことになったのか(ハマりポイント)

実は、元々の設計ではこういった形になってました。

初期設計では、RDS ProxyはRDSの所属している側にしか存在してませんでした。 また、RDSは別のAPIサーバとも接続されている関係から、 Lambdaに無制限に接続させない ということからLambda はRDS Proxyでの接続は必須になっていました。

ですが、、またもAWS公式 VPC Lambda(VPCに所属させるLambda)は、 同じVPC内のみ という制限がありました。

そこを調べるのにリリースされてしばらく経っているということもあり、資料を探すのに結構かかりました・・・。

所感

やってみてわかったことですが、色々制限がある というのはやはり頭を使うということ それと、構成がややこしくなる でした。

なので、予告編・その1・その2と書いてきたので全体的な構成は説明は完了となります。

最後のまとめ編のその3を書こうかとおもいます。