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
関連記事
-
-
特定AWSアカウント特定リージョンのSNSトピックを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のSNSトピックを全部削除したいで …
-
-
AWS Transit Gateway Network ManagerにTransit Gatewayを登録してルートアナライザーで確認
グローバルネットワークの作成 VPC左ペインのメニュー Transit Gate …
-
-
LINE BOT AWARDS 2017に応募しました
LINEの友達追加QRです。 動作のご確認にどうぞ LINE BOT AWARD …
-
-
AWS WAFの個別ルールを設定する
Web ACLを選択して、[Add my own rules and rule …
-
-
Amazon Location Service入門ワークショップの前提環境準備
Amazon Location Service入門ワークショップの前提環境を構築 …
-
-
kintoneに登録されたアカウントの電話番号にGoogleカレンダーの予定をAmazon Pollyが読み上げてTwilioから電話でお知らせする(AWS Lambda Python)
Google Calendar Twilio Reminder Googleカレ …
-
-
JAWS FESTA 2017 Reverse X re:Birth
JAWS FESTA 2017 中四国 今年はブログタイトル「JAWS FEST …
-
-
AWS Systems Manager Run CommandでEC2 Linuxのユーザーとカレントディレクトリを確認
AWS Systems Manager Run CommandからEC2 Lin …
-
-
スポットインスタンスの削減額情報を見ました
なんだこれ?と思って、検索してみたら、2018年11月からあったのですね。 Am …
-
-
Route 53サブドメインホストゾーンを作成したら、元のホストゾーンにNSレコードを作成する自動化
ハンズオン環境でRoute 53のホストゾーンを触ってほしい際に、サブドメインを …