gpt4 book ai didi

python - 使用 Lambda 函数在 S3 中创建和上传文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:58 25 4
gpt4 key购买 nike

我正在编写一个 Lambda 函数来创建一个文本文件并上传到特定的 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 对象时做错了什么。

最佳答案

看来您已经在 Amazon S3 存储桶上配置了一个事件,以便在创建对象时触发 Lambda 函数。

创建对象时,会触发 Lambda 函数。 Lambda 函数创建一个 S3 对象。此触发器和事件会触发 Lambda 函数,该函数会创建一个对象...等等。是的,这是一个无限循环,直到达到某个限制。

我不确定您对这些对象做了什么,但最安全的方法是将事件配置为仅触发给定路径(子文件夹)。然后,配置 Lambda 函数以在不同路径中创建新文件,这样它就不会再次触发事件。

关于python - 使用 Lambda 函数在 S3 中创建和上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com