VPC環境でLambdaを100同時実行してプライベートIPアドレスを確認した
2019年9月発表のLambda 関数が VPC 環境で改善されます以降に、VPC環境でLambdaを実行したことなかったので、動作を確認しておきました。
結果、当たり前ですが、記事に書いている通りの動作となりました。
1つのENI、1つのプライベートIPアドレスを使用していました。
目次
テスト環境
Lambda関数を100同時実行して、同じVPC内のEC2 Apacheに curl コマンドを実行します。
Apacheのaccess_logに記録されるプライベートIPアドレスが全部同じか確認します。
VPCサブネットの設定
デフォルトVPCに追加でサブネットを作成しました。
使用できるIPアドレスを少なくして検証したかったので、/28で作成しました。
VPC環境のLambda
ランタイムはPython3.7です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import json import time import subprocess def lambda_handler(event, context): args = ['curl', 'http://172.31.56.6'] response = subprocess.check_output(args) print(response) time.sleep(60) return { 'statusCode': 200, 'body': '' } |
curl 実行後に 60秒待ってる間に他のLambdaが実行されるようにしました。
Lambdaのネットワーク設定で、VPCとサブネットを指定しました。
LambdaをVPC環境で起動するには、LambdaのIAMロールに次のIAMポリシーが必要でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*" } ] } |
ENI
VPC環境のLambdaを作成すると、ENIができていました。
IPアドレスは172.31.200.13 でした。
Lambdaを100個実行するLambda
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import json import boto3 def lambda_handler(event, context): for i in range(100): boto3.client('lambda').invoke( FunctionName='lambda_vpc_test', InvocationType='Event', ) print(i) |
VPC環境のLambdaを100回実行するLambdaを作って実行しました。
実行
全部 172.31.200.13 からのGETリクエストになりました。
古い環境がないので試しようがないのですが、アップデート前はプライベートIPアドレスが足りなくなってサブネットを追加したことがあったと思いました。
便利になってますね。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
RDSの証明書をrds-ca-2019に更新しました
クライアント接続で署名書使ってないので、必要ないのですが、古いままなのも気持ち悪 …
-
-
Amazon API Gatewayでモックを作る
超シンプルなAPI Gatewayのサンプルがほしかったので、ユーザーガイドの手 …
-
-
Amzon Linux のApacheでRedmineとWordPressをバーチャルホストで共存する
EC2とRDSを節約しようと思いまして、Redmineを動かしてるとこに検証用W …
-
-
東京リージョンでAWS Control Towerランディングゾーンをセットアップする
AWS Control Towerの最初の画面で[ランディングゾーンの設定]を押 …
-
-
Amazon RDS MySQLでCSVをload data するときに「Access denied」発生
超小ネタです。 AWSのデータベースサービスの Amazon RDSのMySQL …
-
-
EC2:RunInstances APIにリクエストしてEC2インスタンスを起動(署名バージョン4、Postman)
AWSのAPIリクエストってHTTPでもよかったですよね?って思って、確認のため …
-
-
5分でAlexaスキルを作る
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …
-
-
EKS「現在の IAM プリンシパルは、このクラスター上の Kubernetes オブジェクトにアクセスできません」
マネジメントコンソールでクラスターのオブジェクトを見ようと、リソースの名前空間や …
-
-
AWS Storage Gateway File Gateway on EC2インスタンスにmacOSからNFS接続
S3バケットの作成 S3バケットはあらかじめ作成しておきました。 マネジメントコ …
-
-
AWS Transit GatewayのVPCアタッチメント
構成 これぐらいの構成なら、VPCピアリングでいいのですが、Transit Ga …