こんにちは、フルスタックエンジニアのryuです。
今回の記事では、FargateからRDSへ接続できない場合の対処方法について解説します。FargateのコンテナからRDSで接続できないエラーがいくつか出たので、それぞれに対しての対処方法を詳しく解説します。
FargateからRDSへ接続できない場合の対処方法
今回の記事では、以下の3つの接続できないパターンについて解説します。FargateからRDSへ接続できない方は是非参考にしてください。
- FargateとRDSの接続先の設定
- RDSのセキュリティグループの設定
- 初期データベースが作成されていない
では、それぞれにのエラーの原因の対処方法について解説します。
FargateとRDSの接続先の設定
まず、FargateとRDSの接続先の設定です。
RDSの接続先は、RDSのコンソール上の[接続とセキュリティ]の[エンドポイント]に記載されています。
このエンドポイントをアプリのDBの接続先として設定します。例えば”.env”ファイルやFargateの[タスク定義]の環境変数へ設定します。
RDSのセキュリティグループの設定
次は、RDSのセキュリティグループの設定です。RDSを作成時に自動でセキュリティグループを作成すると、Fargateからの接続が拒否されます。なぜなら、FargateのIPからのアクセスが許可されていないからです。
Fargateは起動しているタスクによってIPアドレスが変わるので、インバウンドを”0.0.0.0/0″の”3306″を許可するようにしましょう。
先ほど説明した、RDSの接続先とセキュリティグループの設定が正しければ、RDSにアクセスできるはずです。ただ、RDSに接続できても、まだエラーが出ていたので、ほかの原因の対処方法についても引き続き解説します。
初期データベースが作成されていない
最後に私が躓いた部分は、初期のデータベースが作成されていないことでした。DB インスタンス識別子がDBとして作成されると思いきや全然違いました。
初期のデータベースを作成するためには、RDSのデータベース作成時に[追加設定]より最初のデータベース名を指定する必要があります。
画面に書いてあるように、データベース名を指定しないと、RDSはデータベースを作成しないので、Fargateからデータベースに接続しようしてもデータベースが無いをエラーが出てしまいました。
データベースを作成するには、RDSの作成時にデータベース名を指定するか、RDSを作成後にEC2などで接続してコマンドで作成するかする必要があります。
まとめ
今回の記事では、FargateからRDSへ接続できない場合の対処方法について解説しました。Fargateはサーバーレスでコンテナを制御できる便利なサービスなのでぜひ使って見ましょう!