スキップしてコンテンツを表示

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

所要時間1分
0

AWS Lambda 関数がダウンストリームの AWS サービスまたは外部エンドポイントへの到達を試行すると、ETIMEDOUT エラーが発生します。

解決策

一定期間ホストが応答しなかったために接続が失敗すると、ETIMEDOUT エラーが発生します。ネットワーク設定の問題により、Lambda 関数とホスト間のネットワークパスが無効になることがあります。この無効なパスが原因で、接続タイムアウトエラーが発生します。ETIMEDOUT エラーをトラブルシューティングするには、ホスト設定に基づいてネットワーク設定を確認してください。

パブリックインターネット経由でアクセスできるホストの場合

Amazon Virtual Private Cloud (Amazon VPC) を使用して関数を設定した場合は、その関数がパブリックインターネットにアクセスできることを確認してください。タイムアウトエラーが断続的に発生する場合は、その関数に設定されているすべてのサブネットがプライベートであり、NAT ゲートウェイへのデフォルトルートがあることを確認してください。AWS Transit Gateway トランジットゲートウェイへのデフォルトルートの場合、そのトランジットゲートウェイが関数にパブリックインターネットへのアクセスを許可していることを確認します。

注: デフォルトでは、VPC 設定が行われていない関数はパブリックインターネットにアクセスできます。

VPC 内でのみアクセスできるホストの場合

ホストに VPC 内でのみアクセスできる場合は、まず VPC で Lambda 関数を設定してから、次の設定を確認します。

  • ルートテーブルにホストへの有効なルートパスがある。ホストエンドポイントが Lambda 関数と同じ VPC にある場合は、ローカルルートがあることを確認します。ホストエンドポイントが別の VPC にある場合は、ルートテーブルに VPC ピアリング接続用のルートがあることを確認します。
  • Lambda 関数とホストの両方において、サブネットのネットワークアクセスコントロールリスト (ネットワーク ACL) がインバウンドおよびアウトバウンドルールを許可している。
  • Lambda 関数のセキュリティグループルールが、必要なポートの宛先ホストへのアウトバウンドトラフィックを許可している。
  • ホストのセキュリティグループルールが、必要なポートで Lambda 関数からのインバウンドトラフィックを許可している。
  • ホストが、接続リクエストで指定された HTTP または HTTPS プロトコルとポートでのリクエストをサポートしている。

ネットワークパス設定の問題を分析するには、VPC Reachability Analyzer を使用します。

NAT ゲートウェイのタイムアウトである 350 秒以内にタイムアウトエラーが発生する場合は、アイドルタイムアウト時間をリセットします。

カスタム DHCP オプションセットの VPC を使用するホストの場合

VPC にカスタム Dynamic Host Configuration Protocol (DHCP) オプションセットがある場合は、Amazon Route 53 Resolver クエリログを使用して DNS クエリの応答を確認します。ホストの IP アドレスがポートに接続できる必要があります。また、ホストは、関数と同じサブネットおよびセキュリティグループにあるプライベート Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用する必要があります。

ホストの IP アドレスを特定するには、EC2 インスタンスを使用して次のコマンドを実行します。

nslookup amazon.com

注: amazon.com は、お使いのホスト名に置き換えてください。

IP アドレスが要求されたポートに接続できることを確認するには、次のコマンドを実行します。

telnet host-name-IP-address 443

注: host-name-IP-address はお使いのホスト名か IP アドレスに、443 は実際のポートに置き換えます。

トラブルシューティング情報については、「AWS Lambda で継続して発生する、断続的な DNS 関連のエラーをトラブルシューティングする方法を教えてください」を参照してください。

ホスト構成を確認する

ダウンストリームサービスまたは外部エンドポイントがリクエストを受信しているかどうかを確認します。ホストの利用可能なメトリクス、ログ、またはネットワークトレースを使用します。VPC を使用している場合は、VPC フローログを参照し、アウトバウンドトラフィックが Lambda 関数から送信されていることを確認します。エラスティックネットワークインターフェイスを使用している場合は、GitHub のウェブサイトにある Lambda ENI Finder を使用すると、その IP アドレスを特定できます。Lambda ENI ファインダー bash スクリプトの使用方法について詳しくは、「Lambda が作成したエラスティックネットワークインターフェイスをデタッチまたは削除できない理由を知りたいです」を参照してください。

受信トラフィックが多いためにホストがブロックされ、設定されたソケットタイムアウト期間内に応答できない場合は、バックオフパターンで再試行してください。

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

関連するコンテンツ