如何将 csv 文件从 Lambda 上传到 S3 存储桶?"[错误] KeyError: '记录' 和我的 lambda 函数也没有被 s3 触发



我从 S3 中提取了一个包含多个工作表的 Excel 文件,我将每个工作表转换为 csv 格式并在将其上传到另一个 S3 存储桶之前进行简单的清理。

到目前为止,这是我的 Lambda 函数的代码,但我不知道如何将每个工作表的 csv 文件上传到 S3。

我也想用Nan更改 excel 文件中的空单元格,但我不知道怎么做。

更新:我尝试了以下答案中的解决方案。我收到"错误消息": "'记录'", "错误类型": "KeyError"。我的 lambda 函数也没有被 s3 触发。

您可以将文件存储在 Lambda 的本地文件系统中的/tmp/目录中。限制为 500MB,因此请在完成这些文件后将其删除。

因此,当您创建文件时,请将其放在该目录中:

with open("/tmp/data%s.csv" %(sheet6.name.replace(" ","")), "w", encoding='utf-8') as file:

然后,您可以使用upload_file(file, bucket, key)将其上传到 Amazon S3

s3.upload_file('/tmp/data1.csv', 'mybucket', 'data1.csv')

以下是我用于提取触发 Lambda 函数的存储桶和密钥的一些代码:

import urllib
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
...

最新更新