可能是写入操作并没有执行完成,就已经结束了AWS Lambda函数,需要使用aws-sdk等待写入操作完成后再结束函数。
以下是一个等待写入操作完成的代码示例:
import boto3
def lambda_handler(event, context):
s3 = boto3.client('s3')
file_name = 'example.txt'
bucket_name = 'example-bucket'
# 读取文件内容
response = s3.get_object(Bucket=bucket_name, Key=file_name)
contents = response['Body'].read().decode().split('\n')
# 修改文件内容
contents = [i + ' - modified' for i in contents]
# 将内容写回S3桶
s3.put_object(Bucket=bucket_name, Key=file_name, Body='\n'.join(contents).encode())
# 确认写入操作已经完成
waiter = s3.get_waiter('object_exists')
waiter.wait(Bucket=bucket_name, Key=file_name)
return 'Success'
以上代码先读取文件内容,然后修改内容,并将内容写回S3桶。在写入操作完成之后,使用waiter等待实现确认。