Amazon Virtual Private Cloud (Amazon VPC) に接続されている AWS Lambda 関数へのインターネットアクセスを許可したいと考えています。
デフォルトでは、Lambda 関数はインターネットにアクセスできる Lambda マネージド VPC で実行されます。AWS アカウント内の VPC のリソースにアクセスするには、関数に VPC 設定を追加します。この設定により、VPC がインターネットにアクセスできない限り、機能が VPC 内のリソースに制限されます。
Lambda 関数をパブリックサブネットに関連付けても、関数はインターネットに直接接続できません。VPC 内の関数にはプライベート IP アドレスがあり、VPC がインターネットにアクセスするには NAT ゲートウェイまたは NAT インスタンスが必要です。
注: VPC エンドポイントを使用することで、インターネットアクセスのない Amazon VPC 接続内から、サポートされている AWS サービスに接続することは可能です。
Lambda 関数用のプライベートサブネットと NAT ゲートウェイ用のパブリックサブネットを作成します。[名前タグ] フィールドに、パブリックかプライベートかを識別する各サブネットの名前を入力します。たとえば、Public subnet、Private Lambda 1、Private Lambda 2 と名付けます。
注: 異なるアベイラビリティーゾーンにわたり、複数のプライベートサブネットを作成するのがベストプラクティスです。このアクションにより冗長性を実現し、Lambda が関数の高可用性を維持できます。
インターネットゲートウェイを作成してから、VPC にアタッチします。
NAT ゲートウェイを作成します。[サブネット] で、パブリックにするサブネットを選択します。たとえば、Public subnet を選択します。
(オプション) NAT ゲートウェイの設定をテストします。
注: VPC の Lambda 関数がリクエストを行うと、関数は関連するサブネットをランダムに選択します。関数が誤って設定されたサブネットを使用すると、エラーが発生します。このような問題を防ぐために、関数が使用するすべてのサブネットに同じ設定を使用してください。
カスタムルートテーブルを設定するには、パブリックサブネットとプライベートサブネットの両方で次の手順を実行します。
注: NAT ゲートウェイへのルートが Active 状態になっているかどうかを確認します。NAT ゲートウェイが削除され、ルートが更新されていない場合、Blackhole 状態となります。詳細については、「NAT ゲートウェイを削除する」を参照してください。
VPC のデフォルトのネットワークアクセスコントロールリスト (ネットワーク ACL) では、インバウンドトラフィックとアウトバウンドトラフィックがすべて許可されています。ネットワーク ACL ルールを変更する場合は、Lambda 関数からのアウトバウンドリクエストを許可するようにしてください。また、ネットワーク ACL で次のインバウンドトラフィックが許可されていることを確認します。
詳細については、「Amazon VPC でのインターネットワークトラフィックプライバシーを確保する」を参照してください。
VPC 用の Lambda 実行ロールを作成します。次に、新しい Lambda 実行ロールを使用するように Lambda 関数を更新します。
関数を VPC にアタッチした後、次の設定を行います。
Amazon VPC 接続の Lambda 関数では、エグレス専用インターネットゲートウェイを使用してインターネットにアクセスできます。詳細については、「IPv6 サポート」を参照してください。
Lambda でのネットワークに関する問題のトラブルシューティング
Amazon VPC の Lambda 関数での、タイムアウトに関する問題をトラブルシューティングする方法を教えてください
Lambda 関数での ETIMEDOUT エラーをトラブルシューティングする方法を教えてください
Lambda 関数に Amazon VPC 内のリソースへのアクセスを許可する
Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください