如何使用Lambda合并来自S3存储桶的两个CSV文件

0

【以下的问题经过翻译处理】 我一直在尝试创建一个Lambda函数,每当有新文件上传到一个S3存储桶时就会触发它。目前,这个存储桶中只会包含两个文件。该函数的目标是将这两个文件合并。我使用Python编写函数,并创建了一个层以便使用pandas库。我目前的尝试如下所示,但出现了一个关于存储桶名称不正确的错误消息。

def lambda_handler(event, context):
  bucket = 'arn:aws:s3:::name-of-the-bucket/subfolder/'
  filename_1 = 'first_file.csv'
  filename_2 = 'second_file.csv'

  s3 = boto3.client('s3')

  first_obj = s3.get_object(Bucket= bucket, Key= filename_1)
  second_obj = s3.get_object(Bucket= bucket, Key= filename_2)

  first_df = pd.read_csv(first_obj['Body'])
  second_df = pd.read_csv(second_obj['Body'])

  joined_df = first_df.merge(second_df, on=['ID'], how='left')

 return joined_df
profile picture
专家
已提问 6 个月前6 查看次数
1 回答
0

【以下的回答经过翻译处理】 存储桶名称应该是不包含子文件夹的存储桶名称。

将您的代码更改为:

bucket = 'name-of-the-bucket'
filename_1 = 'subfolder/first_file.csv'
filename_2 = 'subfolder/second_file.csv'
profile picture
专家
已回答 6 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则