LoginSignup
1
0

More than 1 year has passed since last update.

LambdaでAWSAPIがときどきタイムアウトになる原因

Posted at

結論

サブネットのACLが原因でした。
ACLのポート制御を1024-65535に設定後、解消されました。

遭遇した事例

・LambdaからS3へのファイルアップロードが10回に1回くらいエラーになる
・LambdaからCloudwatch metricsへのputが3回に1回くらいエラーになる

この事象が発生するLambdaの条件

VPCサブネット内に構築しているLambda

なぜ起こったか

ACLのポート制御の設定範囲がAWSのリソースが使用する一時ポートを許可していなかった。

AWSのリソースは一時ポートを使用しているものがあり、その一時ポートの疎通を許可してあげないといけませんでした。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-network-acls.html#nacl-ephemeral-ports

一時ポート
前のセクションでは、ネットワーク ACL の例に 32768~65535 という一時ポートの範囲を使用しています。ただし、使用または通信しているクライアントの種類によっては、ネットワーク ACL に別の範囲を使用してもかまいません。
リクエストを開始するクライアントは、一時ポートの範囲を選択します。範囲は、クライアントのオペレーティングシステムによって変わります。
多くの Linux カーネル (Amazon Linux カーネルを含む) は、ポート 32768~61000 を使用します。
Elastic Load Balancing からのリクエストは、ポート 1024-65535 を使用します。
Windows Server 2003 を介する Windows オペレーティングシステムは、ポート 1025~5000 を使用します。
Windows Server 2008 以降のバージョンでは、ポート 49152~65535 を使用します。
NAT ゲートウェイはポート 1024~65535 を使用します。
AWS Lambda 関数は、ポート 1024-65535 を使用します。

最後に

エラーを検索しても出てこなかったので、同様のエラーに困っているかたの参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0