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アドレスが足りなくなってサブネットを追加したことがあったと思いました。
便利になってますね。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Redmineの添付ファイルをS3に同期する
RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …
-
-
AWS EC2 でインスタンスにIPアドレスを紐付ける
AWS EC2で作ったサーバは何もしなければ起動するたびにIPアドレスが変わって …
-
-
AWS CloudWatch LogsエージェントでAmazon EC2上のNginxのaccess.log , error.log , php-fpm error.log , Linuxのmessages , secureログを収集する
参考ページ クイックスタート: 実行中の EC2 インスタンスに CloudWa …
-
-
ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
Amazon LinuxにRedmine をインストールする(手順整理版)
Amazon LinuxにRedmineをインストールしました手順を記載します。 …
-
-
S3 VPCエンドポイント設定前と設定後を確認
S3のVPCエンドポイントを設定した際に、S3バケットのAPIエンドポイントへの …
-
-
CloudFrontからのバーチャルホストなサイトのテストってどうしてます?
このブログの構成です。 AWSで構築しています。 4つのサイトを1つのEC2で配 …
-
-
T2.microからT3.nanoに変更(メモリエラーも対応)
このブログのEC2インスタンスをT2.micro 1インスタンスからT3.nan …
-
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
-
JAWS FESTA 2017 Reverse X re:Birth
JAWS FESTA 2017 中四国 今年はブログタイトル「JAWS FEST …