問題のEC2インスタンスがプライベートサブネットにあり、設計上、NAT経由でインターネットアクセスが有効になっていません。 現在、私のラムダは、同じVPCに接続されたパブリックサブネットにあります。プライベートVPC内のEC2インスタンスからラムダにアクセスできますか?
ラムダを呼び出そうとすると、私はConnection to lambda.us-east-1.amazonaws.com timed out
を受け取ります。
問題のEC2インスタンスがプライベートサブネットにあり、設計上、NAT経由でインターネットアクセスが有効になっていません。 現在、私のラムダは、同じVPCに接続されたパブリックサブネットにあります。プライベートVPC内のEC2インスタンスからラムダにアクセスできますか?
ラムダを呼び出そうとすると、私はConnection to lambda.us-east-1.amazonaws.com timed out
を受け取ります。
Amazon EC2インスタンスは、「ラムダ関数にアクセスする」ことはできませんが、彼らは確かににAWSラムダAPIがラムダ関数を呼び出す呼び出すことができます。
ただし、API endpoints for AWS servicesはすべてインターネット上に存在します。したがって、APIを呼び出すは、インターネットにアクセスする必要があります。 (これには2つの例外は、現在、APIエンドポイントにアクセスするためにVPCエンドポイントを使用することができますアマゾンS3とAmazon DynamoDBの、ある。)
したがって、プライベートサブネット内のAmazon EC2インスタンスからラムダ関数を呼び出すために、あなたはNATゲートウェイと、インターネット接続トラフィックをNATゲートウェイに送信するように設定されたプライベートルートテーブルが必要です。
ラムダ関数がパブリックサブネットに接続されているという事実は、ラムダ関数の呼び出しには関係ありません。ラムダ機能は、実行時にVPC内のリソースにアクセスできることを意味します。 (実際には、ラムダ機能は通常、パブリックサブネットではなくプライベートサブネットに接続されています。これは、トラフィックがNATゲートウェイ経由でルーティングされる場合にのみインターネットにアクセスできるためです)
ラムダ関数を呼び出そうとすると、ラムダ関数がどこにあるかは関係ありません。これは、ラムダ関数を呼び出すときにラムダ関数に直接接続していないためです。ラムダ関数を呼び出すためにAWS APIに接続しています。プライベートサブネット内のEC2インスタンスからこれを実行できる唯一の方法は、NATゲートウェイを使用することです。