我正在使用 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 存储桶中创建一个文件,但它只创建一行。需要基于迭代的创建的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 函数帮助

如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

Python lambda不记得for循环中的参数[重复]

带有 lambda 的 Python 列表理解 [重复]

python lambda简单介绍

在 AWS Lambda 中导入 Paramiko 的问题