\

この記事では、PythonとAWS Lambdaを使用してS3にファイルをアップロードする方法について説明します。このプロセスは、サーバーレスアーキテクチャでのファイル管理に非常に役立ちます。

AWS Lambda関数の作成

まず、AWS Lambda関数を作成します。LambdaのコンソールでLambdaを選択し、関数の作成から新しいLambda関数を作成します。ランタイムにはPython 3.8を選択します。

import json
import boto3
import base64
import io
from datetime import datetime
import cgi

BUCKET_NAME = 'your-bucket-name'
DIRECTORY = 'uploaded_files/'

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    bucket = s3.Bucket(BUCKET_NAME)
    body = base64.b64decode(event['body-json'])
    fp = io.BytesIO(body)
    environ = {'REQUEST_METHOD': 'POST'}
    headers = {
        'content-type': event['params']['header']['content-type'],
        'content-length': len(body)
    }
    fs = cgi.FieldStorage(fp=fp, environ=environ, headers=headers)
    for f in fs.list:
        print("filename=" + f.filename)
        bucket.put_object(Body=f.value, Key=DIRECTORY+f.filename)
    return {
        'statusCode': 200,
        'body': json.dumps('アップロード完了')
    }

このコードは、multipart/form-dataで複数のファイルをアップロードできるようにしています。ただし、Lambdaのペイロードサイズ上限は6MBであるため、事前に要件の確認が必要です。

API Gatewayでインタフェースを作成

次に、API Gatewayでインタフェースを作成します。トリガーの追加から、API Gatewayを選択します。API Gatewayのコンソール画面でリソースを設定します。今回はmultipart/form-dataでファイルを送信するために、アクション→メソッドの作成→POSTを選択してPOSTメソッドを受け付けるようにします。

ファイルをアップロードする

最後に、ファイルをアップロードします。Chrome拡張のTalend API Testerを使用してファイルをアップロードします。

以上が、PythonとAWS Lambdaを使用してS3にファイルをアップロードする方法です。この方法は、サーバーレスアーキテクチャでのファイル管理に非常に役立ちます。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です