AWS lambda で作成したファイルをS3にuploadしようとがms単位で実行される
解決したいこと
AWS lambda にて bote3 を使ってS3にファイルをuploadしようとしています。
lambda内にて deploy -> テスト を実行すると ms単位で実行されてその都度S3にファイルがuploadされます。
cronやテストイベントの設定などで1回の実行で終わらせる方法はないでしょうか。
コード
lambda_function.py
import json
import urllib.parse
import boto3
import datetime
import random
import os
s3 = boto3.resource('s3')
def lambda_handler(event, context):
# Get the object from the event and show its content type
bucket_name = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
try:
bucket = s3.Bucket(bucket_name)
key = 'test_' + datetime.datetime.now().strftime('%Y-%m-%d') + '.txt'
file_contents = 'Lambda test'
with open('/tmp/sample.txt', 'w') as fout:
fout.write(file_contents)
fout.write(datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S'))
bucket.upload_file('/tmp/sample.txt', key)
os.remove('/tmp/sample.txt')
except Exception as e:
print(e)
raise e
return {}
0