インフラ女子のぼやき

AWSを使ってごにょごにょする日々を送っています。技術的なこと、セミナーレポートなどいろいろ書いていきます。

VPC内からLambdaを実行する際のハマりどころ

VPC内のLambdaからEC2 Run Commandを実行しようとしたら、下記のエラーが出ました

Request has been terminated Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.

また、ログを確認すると、時間めいいっぱい使っている様子

Task timed out after 300.00 seconds.

試しにマネジメントコンソールから実行すると、即「Success」が返ってきたので 権限周りやコードに問題はなさそう…

しばらくして気が付きました

Lambdaがプライベートサブネット内にいる!

つまり、LambdaがEC2 Run Commandを実行する際に インターネットに接続できる環境でないとダメ!!

ということで、この場合はパブリックサブネットに NATサーバ or NAT Gatewayを立てれば問題なしでした^^

というか、サブネットの選択を間違えたかな。。 この場合はパブリックサブネットにLambdaを置くのがベストプラクティスになるのでしょうかー