

# Lambda でのネットワークに関する問題のトラブルシューティング
<a name="troubleshooting-networking"></a>

デフォルトでは、Lambda は AWS のサービスとインターネットに接続された内部の Virtual Private Cloud (VPC) で関数を実行します。ローカルネットワークのリソースにアクセスするには、[アカウントで VPC に接続するように関数を設定](configuration-vpc.md)できます。この機能を使用するときは、ユーザーが関数のインターネットアクセスと Amazon Virtual Private Cloud (Amazon VPC) リソースとのネットワーク接続を管理します。

ネットワーク接続エラーは、VPC のルーティング設定、セキュリティグループルール、AWS Identity and Access Management (IAM) ロールの許可、NAT、または IP アドレスやネットワークインターフェイスなどのリソースの可用性に関する問題が原因で発生する場合があります。問題によっては、リクエストが送信先に到達できない場合に、特定のエラーやタイムアウトが表示されることがあります。

**Topics**
+ [VPC: 関数がインターネットアクセスを失う、またはタイムアウトする](#troubleshooting-networking-cfn)
+ [VPC: TCP または UDP 接続が断続的に失敗する](#troubleshooting-networking-tcp-udp)
+ [VPC: 関数がインターネットを使用せずに AWS のサービスにアクセスする必要がある](#troubleshooting-networking-access)
+ [VPC: Elastic Network Interface の制限に到達した](#troubleshooting-networking-limit)
+ [EC2:「lambda」タイプの Elastic Network Interface](#troubleshooting-networking-eni)
+ [DNS: UNKNOWNHOSTEXCEPTION エラーのためホストに接続できません](#troubleshooting-networking-dns-tcp)

## VPC: 関数がインターネットアクセスを失う、またはタイムアウトする
<a name="troubleshooting-networking-cfn"></a>

**問題:** *Lambda 関数が VPC に接続した後でインターネットにアクセスできなくなります。*

**エラー:** *エラー: 接続 ETIMEDOUT 176.32.98.189:443*

**エラー:** *エラー: タスクが 10.00 秒後にタイムアウトしました*

**エラー:***ReadTimeoutError: Read timed out. (read timeout=15)* (ReadTimeoutError: 読み取りがタイムアウトしました。(読み取りタイムアウト=15))

関数を VPC に接続すると、すべてのアウトバウンドリクエストが VPC を通過します。インターネットに接続するには、関数のサブネットからパブリックサブネットの NAT ゲートウェイにアウトバウンドトラフィックを送信するように VPC を設定します。VPC 設定の詳細と例については、「[VPC に接続された Lambda 関数にインターネットアクセスを有効にする](configuration-vpc-internet.md)」を参照してください。

一部の TCP 接続がタイムアウトする場合は、[VPC: TCP または UDP 接続が断続的に失敗する](#troubleshooting-networking-tcp-udp) をチェックして、サブネットがネットワークアクセスコントロールリスト (NACL) を使用しているかを確認してください。それ以外の場合は、パケットの断片化が原因として考えられます。Lambda は TCP または ICMP の IP フラグメンテーションをサポートしないため、Lambda 関数は受信するフラグメント化された TCP リクエストを処理できません。

## VPC: TCP または UDP 接続が断続的に失敗する
<a name="troubleshooting-networking-tcp-udp"></a>

**注記**  
この問題は、サブネットが[ネットワークアクセスコントロールリスト (ACL)](https://docs.aws.amazon.com//vpc/latest/userguide/vpc-network-acls.html#nacl-basics) を使用している場合にのみ該当します。Lambda からサブネットへの接続にネットワーク ACL は必要ありません。

**問題:** *ネットワークアクセスコントロールリスト (ACL) を設定している VPC サブネットへの Lambda の接続が断続的に失われます。*

VPC 対応の Lambda 関数の場合、AWS は顧客アカウント内に[ハイパープレーン ENI](configuration-vpc.md#configuration-vpc-enis) を作成し、`1024` から `65535` までのエフェメラルポートを使用して Lambda を顧客の VPC に接続します。ターゲットサブネットでネットワーク ACL を使用する場合、TCP および UDP の両方に `1024` から `65535` までのポート範囲を許可する必要があります。このポート範囲全体を許可しないと、断続的な接続障害が発生する可能性があります。

## VPC: 関数がインターネットを使用せずに AWS のサービスにアクセスする必要がある
<a name="troubleshooting-networking-access"></a>

**問題:** *Lambda 関数がインターネットを使用せずに AWS のサービスにアクセスする必要があります。*

インターネットアクセスがないプライベートサブネットを介して関数が AWS のサービスに接続するには、VPC エンドポイントを使用します。

## VPC: Elastic Network Interface の制限に到達した
<a name="troubleshooting-networking-limit"></a>

**エラー:** *ENILimitReachedException: 関数の VPC で Elastic Network Interface の上限数に達しました。*

Lambda 関数を VPC に接続すると、Lambda が、その関数にアタッチされたサブネットとセキュリティグループの組み合わせごとに Elastic Network Interface を作成します。デフォルトのサービスクォータは、VPC あたり 250 個のネットワークインターフェイスです。クォータの引き上げをリクエストするには、[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/home/services/lambda/quotas/L-9FEE3D26)を使用してください。

## EC2:「lambda」タイプの Elastic Network Interface
<a name="troubleshooting-networking-eni"></a>

 **エラーコード:** *Client.OperationNotPermitted*

 **エラーメッセージ:** *このタイプのインターフェイスではセキュリティグループを変更できません*

Lambda によって管理されている Elastic network interface (ENI) を変更しようとすると、このエラーが表示されます。`ModifyNetworkInterfaceAttribute` は、Lambda が作成した Elastic network interface で更新オペレーションを行うための Lambda API には含まれていません。

## DNS: UNKNOWNHOSTEXCEPTION エラーのためホストに接続できません
<a name="troubleshooting-networking-dns-tcp"></a>

 **エラーメッセージ:** *UNKNOWNHOSTEXCEPTION*

Lambda 関数は、DNS 解決のために最大 20 の同時 TCP 接続をサポートします。この制限に達すると、エラーが発生する可能性があります。最も一般的な DNS リクエストは UDP 経由で行われます。関数が UDP DNS 接続のみを行う場合、問題になる可能性は高くありません。このエラーは、一般に設定の誤りやインフラストラクチャの劣化が原因で発生します。DNS トラフィックを詳細に調べる前に、DNS インフラストラクチャが正しく設定されており正常であること、および Lambda 関数が DNS で指定されたホストを参照していることを確認してください。

問題が TCP 接続数の制限に関連するものとして診断された場合、この制限の引き上げはリクエストできないことに注意してください。DNS ペイロードが大きいために Lambda 関数が TCP DNS にフォールバックする場合は、ソリューションが EDNS をサポートするライブラリを使用していることを確認してください。EDNS の詳細については、[RFC 6891 標準](https://datatracker.ietf.org/doc/html/rfc6891)を参照してください。DNS ペイロードが常に EDNS 最大サイズを超える場合でも、ソリューションは引き続き TCP DNS 制限に達する可能性があります。