Amazon VPC に接続されている Lambda 関数にインターネットアクセスを許可する方法を教えてください。

所要時間2分
0

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 サービスに接続することは可能です。

解決策

Amazon VPC にパブリックサブネットとプライベートサブネットを作成する

Lambda 関数用のプライベートサブネットと NAT ゲートウェイ用のパブリックサブネットを作成します。[名前タグ] フィールドに、パブリックかプライベートかを識別する各サブネットの名前を入力します。たとえば、Public subnetPrivate Lambda 1Private Lambda 2 と名付けます。

注: 異なるアベイラビリティーゾーンにわたり、複数のプライベートサブネットを作成するのがベストプラクティスです。このアクションにより冗長性を実現し、Lambda が関数の高可用性を維持できます。

インターネットゲートウェイを使用してサブネットにインターネットアクセスを追加する

インターネットゲートウェイを作成してから、VPC にアタッチします

NAT ゲートウェイを作成する

NAT ゲートウェイを作成します[サブネット] で、パブリックにするサブネットを選択します。たとえば、Public subnet を選択します。

(オプション) NAT ゲートウェイの設定をテストします

2 つのカスタムルートテーブルを作成する

注: VPC の Lambda 関数がリクエストを行うと、関数は関連するサブネットをランダムに選択します。関数が誤って設定されたサブネットを使用すると、エラーが発生します。このような問題を防ぐために、関数が使用するすべてのサブネットに同じ設定を使用してください。

カスタムルートテーブルを設定するには、パブリックサブネットとプライベートサブネットの両方で次の手順を実行します。

  1. カスタムルートテーブルを作成します[名前タグ] フィールドに、関連付けられているサブネットを識別しやすくするために、各ルートテーブルの名前を入力します。たとえば、Public subnetPrivate Lambda と名付けます。
  2. プライベートまたはパブリックサブネットにサブネットのルートテーブルを関連付けます。
  3. 新しいルートをルートテーブルに追加し、次の設定を含めます。
    [宛先]0.0.0.0/0 と入力します。
    [ターゲット][インターネットゲートウェイ] または [NAT ゲートウェイ] を選択します。パブリックサブネットには、インターネットゲートウェイの ID を選択します。プライベートサブネットには、NAT ゲートウェイの ID を選択します。
    重要: NAT ゲートウェイではなく NAT インスタンスを使用する場合は、[NAT ゲートウェイ] ではなく [ネットワークインターフェイス] を選択します。
  4. [ルートを保存] を選択します。

注: NAT ゲートウェイへのルートが Active 状態になっているかどうかを確認します。NAT ゲートウェイが削除され、ルートが更新されていない場合、Blackhole 状態となります。詳細については、「NAT ゲートウェイを削除する」を参照してください。

ネットワーク ACL の設定を確認する

VPC のデフォルトのネットワークアクセスコントロールリスト (ネットワーク ACL) では、インバウンドトラフィックとアウトバウンドトラフィックがすべて許可されています。ネットワーク ACL ルールを変更する場合は、Lambda 関数からのアウトバウンドリクエストを許可するようにしてください。また、ネットワーク ACL で次のインバウンドトラフィックが許可されていることを確認します。

  • NAT ゲートウェイを使用するプライベートサブネットの場合、エエフェメラルポート 1024-65535 でインバウンドトラフィックを許可します。
  • NAT インスタンスを使用するプライベートサブネットの場合、NAT インスタンスのオペレーティングシステム (OS) が使用するエフェメラルポートでインバウンドトラフィックを許可します。

詳細については、「Amazon VPC でのインターネットワークトラフィックプライバシーを確保する」を参照してください。

Lambda 実行ロールを作成する

VPC 用の Lambda 実行ロールを作成します。次に、新しい Lambda 実行ロールを使用するように Lambda 関数を更新します。

VPC に接続するように Lambda 関数を設定する

関数を VPC にアタッチした後、次の設定を行います。

Amazon VPC 接続の Lambda 関数では、エグレス専用インターネットゲートウェイを使用してインターネットにアクセスできます。詳細については、「IPv6 サポート」を参照してください。

関連情報

Lambda でのネットワークに関する問題のトラブルシューティング

Amazon VPC の Lambda 関数での、タイムアウトに関する問題をトラブルシューティングする方法を教えてください

Lambda 関数での ETIMEDOUT エラーをトラブルシューティングする方法を教えてください

Lambda 関数に Amazon VPC 内のリソースへのアクセスを許可する

Lambda 関数が失敗する場合のトラブルシューティング方法を教えてください

AWS公式
AWS公式更新しました 3ヶ月前
コメントはありません

関連するコンテンツ