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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
Aurora Serverless Data APIを有効にしてQuery Editorを使ってみました
Aurora ServerlessのMySQLでData APIを有効にして作成 …
-
-
RDSのポイントインタイムリカバリをしました
WordPressで画像アップロードができなくなった(AWS WAFでブロックし …
-
-
AWS CodeCommitのリポジトリをiPhoneのWorkingCopyアプリから使う
iPhoneからも執筆できるようにしておこうと思いまして、iOSアプリのGitク …
-
-
AWS Lambdaで「Process exited before completing request」
AWS lambdaで「Process exited before comple …
-
-
AWSアカウント(Organizations)新規作成2026年5月版
2026年5月に新規組織を作成しましたので、その際の手順の記録です。 アカウント …
-
-
IAMセッションポリシーの利用(GetFederationToken)
GetFederationTokenでのセッションポリシーは、呼び出し元のIAM …
-
-
5分でAlexaスキルを作る
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …
-
-
AWS License ManagerでAMIからインスタンスの起動を制御
EC2 Image BuilderでRocket.ChatのAMIを作って起動テ …
-
-
Amazon Chimeのチャットを使ってみました
Amazon Chimeはビデオミーティングや配信したりというサービスですが、チ …
-
-
Lambda関数からAWS Systems Managerパラメータストアの値を取得して更新する
Lambda関数で自分自身の環境変数を更新する だと、Lambdaのエイリアスと …






