簡體   English   中英

如何將 csv 文件從 Lambda 上傳到 S3 存儲桶? “[ERROR] KeyError: 'Records' 並且我的 lambda 函數也沒有被 s3 觸發

[英]How can I upload the csv files from Lambda to an S3 bucket? "[ERROR] KeyError: 'Records' and my lambda function is also not getting triggered by s3

我從 S3 中提取了一個包含多張工作表的 Excel 文件,並將每張工作表轉換為 csv 格式並在將其上傳到另一個 S3 存儲桶之前進行簡單的清理。

到目前為止,這是我的 Lambda 函數代碼,但我不知道如何將每個工作表的 csv 文件上傳到 S3。

另外我想用Nan更改 excel 文件中的空單元格,但我不知道如何。

更新:我從下面的答案中嘗試了解決方案。 我收到“errorMessage”:“'Records'”,“errorType”:“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 函數的 Bucket 和 Key 的一些代碼:

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'])
  ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM