我正在尝试从我的系统获取一个文件并将其上传到具有 lambda 函数的 S3 存储桶。我希望 lambda 函数每小时获取该文件,并在接下来的一小时内获取生成的下一个文件(我生成 1 个文件/小时)
我在每小时获取文件而不是上传同一文件两次时遇到了一些麻烦。将文件上传到 S3 并不是什么大事
要实现每小时从系统获取一个文件并使用 AWS Lambda 将其上传到 S3 存储桶的目标,您可以按照以下常规步骤操作:
在您的 Lambda 函数中,实现从系统中获取文件的逻辑。您需要确保每小时获取正确的文件,而不是将同一文件上传两次。
获取文件后,使用适用于您所选编程语言的 AWS 开发工具包将其上传到所需的 S3 存储桶。
以下是如何实现此逻辑的 Python 示例:
import boto3
import os
import datetime
# Initialize S3 client
s3 = boto3.client('s3')
def lambda_handler(event, context):
# Get the current hour
current_hour = datetime.datetime.now().strftime('%Y-%m-%d-%H')
# Construct the filename based on the current hour
file_name = f"file_{current_hour}.txt" # Adjust the filename pattern as needed
# Check if the file exists locally
if os.path.exists(file_name):
# Upload the file to S3 bucket
s3.upload_file(file_name, 'your-s3-bucket-name', file_name)
print(f"Uploaded {file_name} to S3 bucket.")
else:
print(f"File {file_name} not found.")
return {
'statusCode': 200,
'body': 'File upload complete.'
}