lambdaからS3にファイルを書き込みするPythonコードは以下の通り。
import boto3
# S3に接続するためのクライアントを作成
s3 = boto3.client('s3')
# バケット名
# 作成するファイル名と内容
file_name = 'test.txt'
def lambda_handler(event, context):
# S3バケットにファイルをアップロード
s3.put_object(
Key=file_name,
Body=file_content
)
return {
'statusCode': 200,
'body': 'File uploaded successfully!'
}
●悩んだところとかのメモ
・lambdaから実行する場合はS3にアクセスするためのアクセスキーIDや
シークレットアクセスキーは設定不要でよい
・関数名はlambda_handlerから変更してはいけない
・lambda関数にはS3にアクセスする権限をつけなければならない。
デフォルトでロールを作成するよりかあらかじめロールを作成しておき、
既存のロールを使用したほうがよい。
※既存のロールには以下のポリシーをつけて実行した。
本来はもう少しポリシーを細かく設定すべきかもしれない。
AWSLambdaBasicExecutionRole
AmazonS3FullAccess
AmazonS3FullAccess