tmp ディレクトリ説明

各実行環境は、/tmp ディレクトリ内の 512 MB~ 10240 MB のディスク領域を提供します。ディレクトリのコンテンツは、実行環境が停止された際に維持され、複数の呼び出しに使用できる一時的なキャッシュを提供します。キャッシュに保存したデータが存在するかどうかを確認するための追加コードを追加できます。デプロイのサイズ制限の詳細については、「Lambda クォータ」を参照してください。

image.png

ファイルを tmp ディレクトリに保存方法

AWS Lambda 関数内で S3 からファイルをダウンロードして/tmp ディレクトリに保存するには、以下の手順に従います。

  1. boto3 モジュールを使用して S3 クライアントを作成します。Lambda 関数の外部でクライアントを作成し、再利用することをお勧めします。
import boto3

s3 = boto3.resource('s3')
  1. ダウンロードするファイルを指定し、download_file メソッドを使用してファイルを/tmp ディレクトリにダウンロードします。
import boto3
from datetime import datetime

s3 = boto3.resource('s3')
BUCKET_NAME= 'bucket_name'

def lambda_handler(event, context):
    file_key = 'your-file-key'
    local_file_path = '/tmp/my-file.txt'  # ダウンロード後のローカルファイルパス
    bucket = s3.Bucket(BUCKET_NAME)
    bucket.download_file(file_key, local_file_path)

上記の例では、your-bucket-name は S3 バケットの名前で、your-file-key はダウンロードするファイルのキーです。local_file_path はローカルで保存するファイルのパスを指定します。この例では/tmp/my-file.txt に保存しています。

S3 ファイルの内容を読取方法

import boto3
from datetime import datetime

s3 = boto3.resource('s3')
BUCKET_NAME= 'bucket_name'

def lambda_handler(event, context):
    file_key = 'your-file-key'
    local_file_path = '/tmp/my-file.txt'  # ダウンロード後のローカルファイルパス
    bucket = s3.Bucket(BUCKET_NAME)
    bucket.download_file(file_key, local_file_path)

    with open(local_file_path, 'r') as file:
        file_contents = file.read()
        # ファイルの内容に対する処理
        print(file_contents)

    # 他の処理...

上記の例では、open 関数を使用してダウンロードしたファイルを読み込み、内容を表示しています。必要に応じて、他の処理を追加してください。

纏め

Lambda 関数は/tmp ディレクトリ内のファイルにのみアクセスできます。そのため、一時的な保存先として/tmp ディレクトリを使用しています。
Lambda 関数の実行が終了すると、/tmp ディレクトリ内のファイルは削除されるため、必要な場合は適切に処理してください。