Lambdaでコードをよく書いています。Lambdaの基本コード」シリーズとして公開します。Lambda構築の手助けとなれば幸いです。LambdaでS3上のファイルを取得しローカルに保存するコードを紹介します。今回の構成S3へのファイル格納をトリガーにLambdaが起動、S3に格納されたファイルを取得し、ローカルに保存します。Lambdaではローカル保存先として/tmpディレクトリに対してファイルを読み書きできます。LambdaでS3から取得したファイルに、何かの処理、例えばファイルの圧縮、画像ファイルに対するリサイズなどを行う場合に、ローカルへの保存が一時的に必要になります。いったケースで/tmpへの保存はよく使うパターンです。コードコードは以下のようになります。e:print(e)コードの説明コードの内容は以下の通りです。1ライブラリのimport...今回の処理に必要なライブラリを指定してインポートする。2Functionのロードをログに出力...Lambdaのコードがロードされたことが分かるようにログにメッセージを出力する。3S3オブジェクトを取得...boto3ライブラリからS3にアクセスできるようにするおまじない。4Lambdaのメイン関数...S3にファイルが格納されると、この関数が実行される。5バケット名を取得...eventオブジェクトにトリガーとなったS3の情報が格納されるので取得する。6オブジェクトのキー情報を取得...バケット以下のディレクトリとファイル名を取得する。unquote_plusでエスケープされた文字(%xx)を単一文字に、「+」を空白に置き換えている。7ローカルのファイル保存先を設定.../tmp/オブジェクトキー_日時(YYYY-mm-dd-HH-MM-SS)-ランダムな数字(0~999999)を保存先に指定している。日付とランダムな数字をつけているのは、Lambdaの/tmpディレクトリは複数のLamnda実行で共有される場合があり、ファイル名の重複を避けるため。8バケットにアクセス...バケットを取得する。9バケットからファイルをダウンロード...バケット上のkeyで指定したオブジェクトをfile_pathで指定した場所にダウンロードする。10ファイルがダウンロードされているかlsコマンドで確認...subprocess.runでOSコマンドを実行できる。/tmpを実行して/tmp以下のファイルリストを取得して、ファイルがダウンロードされていることを確認している。実行結果トリガーとなるS3にファイルをアップロードしてみます。Logsからログを確認すると、lsコマンドの結果から、ファイルがローカルに保存されていることが確認できました。2回目の実行時には/tmpに2個目のファイルが作成されていることが確認でき、/tmpディレクトリが複数のLamnda実行で共有されていることが分かります。まとめS3へのファイル格納をトリガーとしてLambdaを起動、ファイルを一時保存するパターンはよく使うので、今回のコードがすべての基本になるかと思います。次回はローカルに保存したファイルを圧縮して、S3にアップロードするコードを紹介します。Preferences。