我正在使用 Python 创建一个 lambda 以在 s3 存储桶中创建一个文件,但它只创建一行。需要基于迭代的创建
Posted
技术标签:
【中文标题】我正在使用 Python 创建一个 lambda 以在 s3 存储桶中创建一个文件,但它只创建一行。需要基于迭代的创建【英文标题】:I am creating a lambda using Python to create a file in s3 bucket but its only creating one row. Need iteration based creation 【发布时间】:2022-01-18 12:06:03 【问题描述】:我正在使用 Python 创建一个 AWS Lambda 函数以在 S3 存储桶中创建一个文件,但它只创建一行。需要基于迭代的创建。
下面是我的代码:
import json
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket ='xyz'
eventToUpload =
eventToUpload['ITEM_ID'] = 1234
eventToUpload['Name'] = John
eventToUpload['Office'] = NY
fileName = 'testevent' + '.json'
uploadByteStream = bytes(json.dumps(eventToUpload).encode('UTF-8'))
s3.put_object(Bucket=bucket, Key=fileName, Body=uploadByteStream)
print('Put Complete')
上面的代码是在 S3 存储桶中创建一个 json 文件,但我想迭代说 5,以便该文件有 5 条记录。
【问题讨论】:
您希望其他 4 个记录的 excat 值是多少? 您的代码似乎只创建了一个eventToUpload
。您从哪里获取信息以输出多条记录?
条件 1 ) 多条记录的值相同 2) 从 s3 获取 ghz 文件并附加记录
【参考方案1】:
AWS S3 默认不支持,也不支持将内容附加到现有文件。
您可以:
循环遍历 Python 脚本上的events
,以创建具有唯一标识的 fileName
前缀/后缀的多个文件,例如 ITEM_ID
;
事先读取并解析现有文件(如果有),然后将 events
附加到它并写入/替换文件。
This question 似乎对您的情况也有有用的答案。
【讨论】:
以上是关于我正在使用 Python 创建一个 lambda 以在 s3 存储桶中创建一个文件,但它只创建一行。需要基于迭代的创建的主要内容,如果未能解决你的问题,请参考以下文章