やりたいこと
AWS S3に格納されているデータをlambdaで扱いたい。
具体的にはs3のファイルをダウンロードし、lambdaで編集を行なった後
s3に再度アップロードさせたい。
言語はPythonを用いて実装したい。
実現方法
boto3を用いて実装を行う。
downloadメソッドに対して、「バケット名」「s3のファイル名」「lambdaの保存先(tmp直下)」を指定する。
uploadメソッドに対して、「アップロードしたいファイル名(lambda)」「バケット名」「アップロード先(s3)のファイル名」を指定する。
実装例は下記となる。
S3ファイル取得処理
import json import boto3 def lambda_handler(event, context): # botoインスタンス生成 s3 = boto3.client('s3') bucket_name = 'S3のバケット名を選択' tmp_file = '/tmp/' + event['fileName'] try: # s3の対象バケットからlambda内のtmp直下にファイルをダウンロードする。 s3.download_file(bucket_name, event['fileName'], tmp_file) # ファイルに対する処理を記載する。 # s3の対象バケットに対して、lambda内のtmp直下にファイルをアップロードする。 s3.upload_file(tmp_file, bucket_name, event['fileName']) return return{ 'statusCode':200, 'body': 'success' } except Exception as e: return{ 'statusCode':500, 'body': f'{str(e)}' }
感想
今回は実装というより、AWSの権限周りで時間がかかった印象だったため、
IAMサービスの権限周りの使い方をまとめたいと思った。
今回は実装までということで...
今回の内容が参考になったら幸いです。