Я пишу лямбда-функцию для создания текстового файла и загрузки в определенный каталог S3.
import boto3
import os
def lambda_handler(event, context):
src_bucket = event['Records'][0]['s3']['bucket']['name']
filepath = event['Records'][0]['s3']['object']['key']
head, tail = os.path.split(filepath)
new_head = head.replace("/", "").upper()
new_filename = "_".join((new_head, tail))
s3_client = boto3.client('s3')
s3 = boto3.resource('s3')
string = "dfghj"
encoded_string = string.encode("utf-8")
file_name = "_".join(('ErrorLog', os.path.splitext(new_filename)[0]+'.txt'))
print(file_name)
s3_path = (head + '/errorlog/') + file_name
print(s3_path)
s3.Bucket(src_bucket).put_object(Key=s3_path, Body=encoded_string)
Выполняется без ошибок. Однако он входит в бесконечный цикл и продолжает создавать подпапки с ошибкой / именем файла.
Например, если file_name = "ErrorLog_test1.txt" и s3_path = "folder1 / errorlog / ErrorLog_test1.txt", он продолжает создавать подпапки как "errorlog" внутри себя с именем файла. Например, "folder1 / errorlog / errorlog / errorlog / ErrorLog_test1.txt"
Как мне остановить создание рекурсивных папок? Я полагаю, что я что-то не так делаю при настройке объекта s3_path.