RDS インスタンスに接続するように Lambda 関数を設定する方法を教えてください。

最終更新日: 2022 年 8 月 11 日

AWS Lambda 関数を Amazon Relational Database Service (Amazon RDS) インスタンスに接続したいと考えています。そうするためにネットワーク設定を行うにはどうしたらよいですか?

簡単な説明

注: 以下の情報とステップは、Amazon RDS インスタンスを参照しています。ただし、この解決方法は、仮想プライベートクラウド (VPC) にあるすべてのエンドポイントまたはデータベースにも適用されます。

Lambda 関数を RDS インスタンスに接続するには、接続を許可するようにそれぞれのネットワーク設定を行う必要があります。

設定は次の接続の種類ごとに異なります。

  • 同じ VPC 内の Lambda 関数と RDS インスタンス
  • 異なる VPC 内の Lambda 関数と RDS インスタンス

セキュリティ上の理由から、RDS インスタンスを VPC 内に保持することがベストプラクティスです。パブリックデータベースの場合は、Amazon DynamoDB などの NoSQL データベースサービスを使用します。

VPC の外部にある Lambda 関数は、VPC 内にある RDS インスタンスにアクセスできません。

    Lambda 関数のネットワーク設定を行う方法については、「VPC 内のリソースにアクセスするように Lambda 関数を設定する」を参照してください。ネットワーク設定が正しくない場合、Lambda 関数はタイムアウトし、Task timed out エラーメッセージが表示されます。

    Lambda 関数を Amazon Aurora DB クラスターに接続するには、Aurora Serverless の Data API を使用します。

    解決方法

    重要: 次の例に示されている各ポート範囲ソース、および宛先の設定を、独自のネットワーク設定に合わせて変更してください。Transmission Control Protocol (TCP) は、ネットワーク設定の種類ごとに必要なプロトコルです。

    同じ VPC 内の Lambda 関数と RDS インスタンス

    同じ VPC 内の RDS インスタンスに Lambda 関数を接続する場合は、次のネットワーク設定を使用します。

    注: VPC 内のすべてのサブネットには、デフォルトでローカルルートが含まれています。宛先は VPC の Classless Inter-Domain Routing (CIDR) で、ターゲットはローカルです。詳細については、「ルートテーブルの概念」を参照してください。

    1.    セキュリティグループでは、次のいずれかのネットワーク設定を使用します。

    同じセキュリティグループに接続されているインスタンスについては、セキュリティグループをインバウンドルールのソースにし、アウトバウンドルールの宛先にします。

    例えば、Lambda 関数と RDS インスタンスが両方ともセキュリティグループ sg-abcd1234 にある場合、各インスタンスには次のインバウンドルールとアウトバウンドルールが含まれます。

    同じセキュリティグループにアタッチされたインスタンスのインバウンドルールの例

    タイプ プロトコル ポート範囲 ソース
    カスタム TCP TCP 3306 sg-abcd1234

    同じセキュリティグループにアタッチされたインスタンスのアウトバウンドルールの例

    タイプ プロトコル ポート範囲 宛先
    カスタム TCP TCP 3306 sg-abcd1234

    - または -

    異なるセキュリティグループにあるインスタンスについては、セキュリティグループが相互にアクセスできるようにしてください。

    例えば、Lambda 関数がセキュリティグループ sg-1234 にあり、RDS インスタンスが sg-abcda にある場合、各グループには次のルールが適用されます。

    接続先の RDS インスタンスとは異なるセキュリティグループにある Lambda 関数のアウトバウンドルールの例

    タイプ プロトコル ポート範囲 宛先
    カスタム TCP TCP 3306 sg-abcd

    接続先の Lambda 関数とは異なるセキュリティグループにある RDS インスタンスのインバウンドルールの例

    タイプ プロトコル ポート範囲 ソース
    カスタム TCP TCP 3306 sg-1234

    重要: ルールがデータベースのポートを介した TCP 接続を許可していることを確認してください。

    2.    ネットワークアクセスコントロールリスト (NACL) については、インバウンドルールおよびアウトバウンドルールで Lambda 関数と RDS インスタンス間の通信が許可されていることを確認します。    

    注: デフォルトでは、NACL はすべてのインバウンドおよびアウトバウンドトラフィックを許可します。ただし、これらのデフォルト設定は変更できます。

    NACL を設定する場合は、次の手順を実行します。

    RDS インスタンスおよび Lambda 関数に関連付けられた各サブネットの NACL で、他のインスタンスのサブネットの CIDR へのアウトバウンド TCP 接続を許可していることを確認します。

    注: 次の例では、CIDR によってラベル付けされた 4 つのサブネットの例を使用しています。
    Lambda 関数のサブネットの場合、172.31.1.0/24 および 172.31.0.0/28。
    RDS インスタンスのサブネットの場合、172.31.10.0/24 および 172.31.64.0/20

    Lambda 関数のサブネットの NACL に対するアウトバウンドルールの例

    タイプ プロトコル ポート範囲 宛先 許可/拒否
    カスタム TCP TCP 3306 172.31.10.0/24 許可
    カスタム TCP TCP 3306 172.31.64.0/20 許可

    重要: RDS インスタンスのサブネットの NACL にも同じアウトバウンドルールを適用する必要がありますが、宛先を Lambda のサブネットの CIDR として設定する必要があります。

    各サブネットの NACL には、他のインスタンスのサブネットの CIDR 範囲にわたる一時ポートに対するインバウンドルールも設定されていることを確認します。

    Lambda 関数のサブネットの NACL に対するインバウンドルールの例

    タイプ プロトコル ポート範囲 送信元 許可/拒否
    カスタム TCP TCP 1024-65535 172.31.10.0/24 許可
    カスタム TCP TCP 1024-65535 172.31.64.0/20 許可

    重要: 同じインバウンドルールを RDS インスタンスのサブネットの NACL に適用する必要がありますが、ソースは Lambda のサブネットの CIDR として設定されます。

    異なる VPC 内の Lambda 関数と RDS インスタンス

    まず、VPC ピアリングを使用して 2 つの VPC を接続します。次に、以下のネットワーク設定を使用して、一方の VPC の Lambda 関数を他方の RDS インスタンスに接続します。

    重要: VPC ピアリングで、ドメインネームサーバー (DNS) の解決が有効になっていることを確認してください。

    1.    [ルートテーブル] で、次の項目を検索して、VPC ピアリング接続が成功したことを確認します。
    [宛先] で、ピア接続された VPC の CIDR を探します。
    [ターゲット] で、ピア接続を探します。

    注: 以下の例には、CIDR によってラベル付けされた 2 つのサブネットの例が含まれています。

    ピア接続された VPC の場合は、172.31.0.0/16。ピア接続の場合は、pcx-01234abcd。

    異なる VPC 内の Lambda 関数と RDS インスタンスのルートテーブルの例

    宛先 ターゲット
    172.31.0.0/16 pcx-01234abcd
    10.0.0.0/16 ローカル

    2.    セキュリティグループでは、次のネットワーク設定を使用します。

    Lambda 関数のセキュリティグループでは、RDS インスタンスの VPC の CIDR へのトラフィックの出入りが許可されていることを確認します。

    注: 以下の例には、CIDR によってラベル付けされた 2 つのサブネットの例が含まれています。
    RDS インスタンスの場合、172.31.0.0/16
    Lambda 関数の場合、10.0.0.0/16

    RDS インスタンスとは異なる VPC にある Lambda 関数のアウトバウンドルールの例

    タイプ プロトコル ポート範囲 宛先
    カスタム TCP TCP 3306 172.31.0.0/16

    RDS インスタンスのセキュリティグループでは、トラフィックが Lambda 関数のセキュリティグループの CIDR に出入りすることが許可されていることを確認します。

    Lambda 関数とは異なる VPC 内の RDS インスタンスのインバウンドルールの例

    タイプ プロトコル ポート範囲 ソース
    カスタム TCP TCP 3306 10.0.0.0/16

    3.    NACL の場合、上記の「同じ VPC 内の Lambda 関数と RDS インスタンス」セクションのステップ 3 の手順に従います。Lambda 関数のサブネット CIDR のオリジンは、別の VPC にあります。


    この記事はお役に立ちましたか?


    請求に関するサポートまたは技術サポートが必要ですか?