Python AWS クラウド プログラミング

【Lambda】EFSをマウントする方法【容量制限回避】

こんにちは、yassanです。
今回は、LambdaにEFSマウントする方法を紹介します。

Lambdaには、ディスク容量が512MBしかなく、それ以上のサイズのファイルを取り扱うことができません。
実行用のライブラリは、LambdaLayerに外付けすることもできますが、こちらも250MBまでの制限があります。

これでは、画像などのメディアファイルや機械学習ライブラリが取り扱えません。

そこで、こうした容量制限を回避する手段として、EFSをマウントする方法があります。
(ほかにも、ECRからコンテナイメージをデプロイする方法もありますが、それはまた別の機会に紹介します)

LambdaをEFSにマウントすることで、大量のデータを取り扱うことができますし、
環境変数でパスさえ整えれば、容量の大きいライブラリも取り扱うことができます。

今回の方法では、VPCとサブネットとLambda向けのセキュリティグループが既にある前提での手順となります。

LmabdaにEFSをマウントする場合は、LambdaをVPCに配置する必要があります。
そのため、リソースを配置するためのVPCとサブネットが必要になります。

では、早速やってみましょう!

Lambdaを作成する

通常のLambdaを作成するのと同様に、Lambdaを作成します。
作成する際に、下部にある [詳細設定] の [ネットワークを有効化] にチェックを入れ、
配置するVPC・サブネットとアタッチするセキュリティグループを選択します。

アベイラビリティゾーンを分けた2つ以上のサブネットを選択することで、LambdaFunctionに可用性を持たせることができます。
EFSもマルチAZに対応しているため、高可用なシステムを作ることも可能です。

EFSをマウントするためのIAMポリシーを、LambdaにアタッチされたIAMロールに追加します。
[設定] > [アクセス権限] から、LambdaにアタッチされているIAMロールを確認できます。

追加するポリシーは ”AmazonElasticFileSystemClientReadWriteAccess” です。

これで一旦、Lambdaの作成が完了しました。次に、EFSを作成します。

EFSを作成する

EFSを作成します。
Lambdaと同じVPCにEFSも配置するように、ご注意ください。

Lambda側からEFSが読み取れるように、セキュリティグループを作成・変更します。

EFSをカスタマイズせず作成すると、アタッチされるセキュリティグループはVPCのデフォルトセキュリティグループです。

セキュリティグループを作成します。
タイプには [NFS] を、ソースにはLmabdaにアタッチしたセキュリティグループを選択します。
アウトバウンドは特に編集不要です。

作成したセキュリティグループをEFSにアタッチします。
EFSの [ネットワーク] > [管理] から変更できます。

最後に、アクセスポイントを作成します。
EFSの [アクセスポイント] > [アクセスポイントの作成] から作成できます。

今回は”data”という名前でマウントします。

公式ドキュメントを参考に、ユーザーIDとグループIDを設定します。

これで、EFSとそのアクセスポイントの作成が完了しました。

LambdaにEFSをマウントする

ファイルシステムとしてEFSをマウントします。
[設定] > [ファイルシステム] > [ファイルシステムの追加] を押します。

先ほど作成したEFSとそのアクセスポイントを選択します。
マウントパスは、”/mnt/data”とします。

ファイルシステムの状態が”Available”になり、正しくマウントできました。

というわけで、LambdaにEFSをマウントする方法を紹介しました。

AWS学習におすすめの書籍

AWSについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの書籍を紹介します。
これらの書籍は、実際にAWSエンジニアとして働く僕が参考にしている書籍です。

AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ

AWSを使いこなすための前提となるITインフラの知識が足りない初学者にとって、どこからどのように学べばよいのかがわかりづらくなっています。そこで本書では、AWS学習サイト運営YouTuberである監修者自身が実サービスの導入で習得しながら体系化した「学習ロードマップ」に沿って、AWSのサービスとIT技術をやさしく解説していきます。

著者が作成した学習ロードマップに沿って、AWSやインフラストラクチャを体系的に学ぶことができます。
付属のロードマップの完成度が高く、学習に迷ったときや復習にも使えます。
これからAWSエンジニアを目指す方や、インフラストラクチャを基礎から学びたい方におすすめです。

Amazon Web Services 業務システム設計・移行ガイド

オンプレミス上に構築された業務システムをAWS上に移行するための「サービスの選定」「ネットワーク設計・構築」「サーバとデータの移し方」「運用・監視体制の構築」など。これまで多くの企業にAWSを導入し、コンサルティングフェーズから実際の設計・開発、運用フェーズまでの全行程に携わってきた著者陣のノウハウを凝縮して、一般的な企業にAWSを導入する際のベストプラクティスをお届けします。

実務を想定した様々なユースケースとそれに対するベストプラクティスを、設計構築から運用まで幅広くカバーして紹介しています。
タイトルからは移行に焦点を当てたように見えますが、僕としては移行に限らずエンタープライズとしてAWSを利用する上で知っておくべきことが記されていると思います。
より実践的な知識やノウハウを身に着けたい方、初学者から一皮むけたい方におすすめです。

-Python, AWS, クラウド, プログラミング
-, , ,