問題

AWS lambdaをvpc内に設置して外部通信しようとしたらタイムアウトした

public subnet (Internet GW付き)

原因

http://docs.aws.amazon.com/lambda/latest/dg/vpc.html#vpc-configuring

vpc lambdaにはpublic ipが割り当てられない
(public subnetがauto-assignなpublic IPでも!)

えー。

AWS Lambda は、指定された VPC 情報を使用して、Lambda 関数から VPC リソースにアクセスするための ENI をセットアップします。各 ENI には、指定されたサブネットの IP アドレス範囲からプライベート IP アドレスが割り当てられますが、パブリック IP アドレスは割り当てられません。

対策

private subnetに設置し、nat-gw経由で出て行くようにする

Lambda 関数でインターネットアクセスが必要な場合は、パブリックサブネットまたはインターネットに接続していないプライベートサブネットに添付しないでください。代わりに、NAT インスタンスまたは Amazon VPC NAT ゲートウェイを介して、インターネットにアクセスしているプライベートサブネットにのみ添付してください。