Amazon Virtual Private Cloud (Amazon VPC) に接続されている AWS Lambda 関数へのインターネットアクセスを許可したいと考えています。
デフォルトでは、Lambda 関数はインターネットにアクセスできる Lambda マネージド VPC で実行されます。Lambda 関数をパブリックサブネットに関連付けても、関数にはプライベート IP アドレスが割り当てられているため、インターネットに接続できません。
Lambda 関数が AWS アカウントの VPC 内のリソースにインターネットアクセスできるようにするには、NAT ゲートウェイまたは NAT インスタンスを追加します。この設定では、VPC がインターネットにアクセスできない限り、関数は VPC 内のリソースに制限されます。
注: インターフェイス VPC エンドポイントを使用すると、インターネットアクセスのない Amazon VPC 接続内から、サポートされている AWS サービスに接続できます。
次のリソースを参照し、Lambda 関数へのアウトバウンドインターネットアクセスが許可されていることを確認します。
上記のリソースがいずれも、Lambda 関数へのインターネットアクセスを許可していない場合は、リソースを再構成して関数にインターネットアクセスを許可します。AWSSupport-TroubleshootLambdaInternetAccess を実行するか、手動でインターネットへのアクセスを許可することも可能です。
前提条件
ランブックを開始する前に、AWS Identity and Access Management (IAM) ユーザーまたはロールに必要なアクセス許可があることを確認してください。詳細については、AWSSupport-TroubleshootLambdaInternetAccess の「必要な IAM アクセス許可」セクションを参照してください。
次の手順を実行します。
ランブックの出力を参照し、Lambda 関数がインターネットにアクセスできなくなった原因と問題の解決方法を判断します。
Amazon VPC にパブリックサブネットとプライベートサブネットを作成する
Lambda 関数用のプライベートサブネットと NAT ゲートウェイ用のパブリックサブネットを作成します。[名前タグ] フィールドに、パブリックかプライベートかを識別する各サブネットの名前を入力します。たとえば、Public subnet、Private Lambda 1、Private Lambda 2 と名付けます。
注: 異なるアベイラビリティーゾーンにわたり、複数のプライベートサブネットを作成することをおすすめします。この方法では、冗長性を実現し、Lambda は関数の高可用性を維持できます。
インターネットゲートウェイを使用してサブネットにインターネットアクセスを追加する
インターネットゲートウェイを作成し、VPC にアタッチします。
NAT ゲートウェイを作成する
NAT ゲートウェイを作成します。[サブネット] で、パブリックにするサブネットを選択します。たとえば、Public subnet を選択します。
(オプション) NAT ゲートウェイの設定をテストします。
2 つのカスタムルートテーブルを作成する
注: VPC の Lambda 関数がリクエストを行うと、関数は関連するサブネットをランダムに選択します。関数が正しく構成されていないサブネットを使用した場合、エラーが発生します。この問題を防ぐために、関数が使用するすべてのサブネットに同じ設定を適用してください。
カスタムルートテーブルを設定するには、次の手順を実行します。
注: NAT ゲートウェイへのルートは、Active 状態である必要があります。NAT ゲートウェイを削除し、ルートを更新しなかった場合は、ルートは Blackhole ステータスになります。
ネットワーク ACL の設定を確認する
VPC のデフォルトネットワーク ACL は、すべてのインバウンドトラフィックとアウトバウンドトラフィックを許可します。ネットワーク ACL ルールを変更する場合は、Lambda 関数からのアウトバウンドリクエストを許可する必要があります。さらに、ネットワーク ACL は、次のインバウンドトラフィックを許可する必要があります。
詳細については、「Amazon VPC でのインターネットトラフィックのプライバシーを確保する」を参照してください。
Lambda 実行ロールを作成する
VPC に Lambda 実行ロールを作成します。次に、Lambda 関数を更新し、新しい実行ロールを使用する設定を行います。
Lambda 関数が VPC に接続するように設定を行う
関数を VPC にアタッチします。[サブネット] で使用するプライベートサブネットを選択します。[セキュリティグループ] で使用するセキュリティグループを選択します。
注: デフォルトのセキュリティグループでは、すべてのアウトバウンドインターネットトラフィックが許可されるため、ほとんどのユースケースに対応します。詳細については、「セキュリティグループを使用してリソースへのトラフィックを制御する」を参照してください。
Lambda 関数が Amazon VPC 接続を備えている場合は、エグレス専用インターネットゲートウェイを使用してインターネットにアクセスできます。詳細については、「IPv6 サポート」を参照してください。
Lambda でのネットワークに関する問題のトラブルシューティング
Amazon VPC の Lambda 関数での、タイムアウトに関する問題をトラブルシューティングする方法を教えてください
Lambda 関数での ETIMEDOUT エラーをトラブルシューティングする方法を教えてください
Lambda 関数に Amazon VPC 内のリソースへのアクセスを許可する
Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください
MS
質問済み 2年前
rePost-User-3360178
質問済み 3年前
NK39
panatian
aws_kun
Sumikawa_M
公開済み 2年前