AWS Lambda から Amazon EFS へのアクセス
AWS Lambda から Amazon EFS へアクセスできるようになったとのことでやってみた。
これによりLambda の仕様上、512 MB という仕様制限がありましたが、これを超えるファイルの操作が可能になります。
また、S3は結果整合性ですが、EFS を利用することによりデータの一貫性が保てることができます。
新機能 – Lambda関数の共有ファイルシステム – Amazon Elastic File System for AWS Lambda
1.セキュリティグループの作成
AWS Lambda 用セキュリティグループの作成
セキュリティグループ | |
---|---|
インバウンドルール | なし |
アウトバウンドルール | すべてのトラフィック |
Amazon EFS 用セキュリティグループの作成
セキュリティグループ | |
---|---|
インバウンドルール | NFS,TCP,2049,AWS Lambda のセキュリティグループID |
アウトバウンドルール | すべてのトラフィック |
2.Amazon EFS の作成
ステップ 1: ネットワークアクセスを設定する
AWS Lambda を作成する対象の VPC を選び、マウントターゲットでサブネットを選択。
セキュリティグループには、「Amazon EFS 用セキュリティグループの作成」で作成したsgを選択します。
ステップ 2: ファイルシステムの設定を行う
今回は、AWS Lambda から Amazon EFS のアクセスを確認することが目的なので、タグだけを追加し、他の設定はデフォルトでいきます。
ステップ 3: クライアントアクセスを設定
AWS Lambda からアクセスするための アクセスポイントの作成 を行います。
ステップ 4: 確認と作成
「ファイルシステムの作成」をクリック。
3.AWS Lambda の作成
IAM ロールの作成
AWS Lambda 関数に付与する IAM ロールを作成する。
AWSLambdaVPCAccessExecutionRole
AmazonElasticFileSystemClientReadWriteAccess
CloudWatchLogsFullAccess
AWS Lambda 関数の作成
ランタイムはPython3.8、既存のロールは「IAM ロールの作成」で作成したものを指定します。
VPCとセキュリティグループは、「AWS Lambda 用セキュリティグループの作成」で作成していたものを指定します。
さて、今回のメインはここで、ファイルシステムの追加をします。「Amazon EFS の作成」で作成したAmazon EFS 及びアクセスポイント、ローカルマウントポイントを指定します。
次の通りLambda関数を作成します。
AWS Lambda から Amazon EFS 上にファイル efslambda.txt を作成、書き込、保存。
file_path = '/mnt/data/'
def lambda_handler(event, context):
file_name = 'efslambda.txt'
write_string = event['text']
with open(file_path + file_name, mode='w') as f:
f.write(write_string)
with open(file_path + file_name) as f:
print(f.read())
4.テスト
lambdaよりテストイベントを実行する。
{
"text": "This in lambda"
}
Author And Source
この問題について(AWS Lambda から Amazon EFS へのアクセス), 我々は、より多くの情報をここで見つけました https://qiita.com/leomaro7/items/cfebe8a566b4aa8ee8e3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .