RDS インスタンスに接続するように Lambda 関数を設定するにはどうすればよいですか?

所要時間4分
0

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 を使用します。

解決方法

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

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

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

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

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

同じセキュリティグループにアタッチされているインスタンスの場合は、セキュリティグループをインバウンドルールのソースにします。セキュリティグループをアウトバウンドルールの送信先にします。

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

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

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

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

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

-または-

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

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

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

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

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

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

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

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

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

RDS インスタンスと Lambda 関数に関連付けられているサブネットごとに、他のインスタンスのサブネットの CIDR へのアウトバウンド TCP 接続を許可するように NACL を設定します。

注: 次の例では、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 に対するアウトバウンドルールの例

タイププロトコルポート範囲宛先許可/拒否
カスタム TCPTCP3306172.31.10.0/24許可
カスタム TCPTCP3306172.31.64.0/20許可

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

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

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

タイププロトコルポート範囲送信元許可/拒否
カスタム TCPTCP1024-65535172.31.10.0/24許可
カスタム TCPTCP1024-65535172.31.64.0/20許可

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

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

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

重要: VPC ピアリング接続のためにドメインネームシステム (DNS) を必ずオンにしてください。

1.    [Route Table] (ルートテーブル) で、VPC ピアリング接続が成功していることを確認します。
[Destination] (宛先) で、ピアリング接続された VPC の CIDR を探します。
[Target] (ターゲット) で、ピアリング接続を探します。

注: 次の例には、2 つの VPC の例が含まれています。

ソース VPC の CIDR (Lambda 関数): 10.0.0.0/16

ピアリングされた VPC の CIDR (RDS インスタンス): 172.31.0.0/16

ピアリング接続: pcx-01234abcd

Lambda 関数に関連付けられているソース VPC のルートテーブルの例

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

RDS インスタンスを持つピアリングされた VPC のルートテーブルの例

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

詳細については、「VPC ピアリング接続のルートテーブルを更新する」を参照してください。

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

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

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

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

タイププロトコルポート範囲宛先
カスタム TCPTCP3306172.31.0.0/16

RDS インスタンスのセキュリティグループでは、Lambda 関数のセキュリティグループの CIDR へのトラフィックの出入りを許可します。

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

タイププロトコルポート範囲ソース
カスタム TCPTCP330610.0.0.0/16

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

注: VPC ピアリングの代わりに、AWS PrivateLink を使用して VPC をまたいで Amazon RDS にアクセスすることもできます。このソリューションは、同じ AWS リージョン内の AWS アカウントと VPC 間で機能します。


AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ