Amazon web services 如何使用lambda函数和boto3从s3 bucket读取csv文件?

Amazon web services 如何使用lambda函数和boto3从s3 bucket读取csv文件?,amazon-web-services,aws-lambda,boto3,Amazon Web Services,Aws Lambda,Boto3,我有s3 bucket,我设置了lambda函数,当csv文件上传到s3 bucket时,该函数将显示csv文件的内容。s3 bucket已设置为lambda函数的触发器。您能提出建议吗?AWS Lambda函数是您编写的代码。你可以让它做任何你想做的事 对于在CloudWatch日志中显示CSV文件的第一个场景,Lambda函数应该: 从传递给Lambda函数的事件中检索bucket和对象的名称 将文件从Amazon S3下载到/tmp/目录 使用普通Python代码和print()希望显示

我有s3 bucket,我设置了lambda函数,当csv文件上传到s3 bucket时,该函数将显示csv文件的内容。s3 bucket已设置为lambda函数的触发器。您能提出建议吗?

AWS Lambda函数是您编写的代码。你可以让它做任何你想做的事

对于在CloudWatch日志中显示CSV文件的第一个场景,Lambda函数应该:

  • 从传递给Lambda函数的
    事件中检索bucket和对象的名称
  • 将文件从Amazon S3下载到
    /tmp/
    目录
  • 使用普通Python代码和
    print()
    希望显示在CloudWatch日志中的信息读取CSV
  • 删除临时文件,以免占用太多磁盘空间(临时磁盘空间限制为500MB,Lambda容器可以多次重复使用)
对于“添加额外列”的第二个问题,Lambda函数应该:

  • 从传递给Lambda函数的
    事件中检索bucket和对象的名称
  • 将文件从Amazon S3下载到
    /tmp/
    目录
  • 使用Python代码,按照您的意愿操作文件的内容
  • 将文件上载到Amazon S3
  • 删除临时文件,以免占用太多磁盘空间(临时磁盘空间限制为500MB,Lambda容器可以多次重复使用)
代码将类似于:

导入urllib
进口boto3
#连接到S3和DynamoDB
s3\u client=boto3.client('s3'))
def lambda_处理程序(事件、上下文):
#从事件中获取bucket和object键
bucket=event['Records'][0]['s3']['bucket']['name']
key=urllib.parse.unquote_plus(事件['Records'][0]['s3']['object']['key']))
localFilename='/tmp/file.txt'
#将文件从S3下载到本地文件系统
s3_客户端。下载_文件(bucket、key、localFilename)
#在这里使用本地文件(您的代码在这里!)
通过
#上传修改过的文件
s3_客户端。上传_文件(localFilename、bucket、key)

Lambda函数到底应该在哪里“显示csv文件的内容”?cloudwatch日志您到底在问什么?您已经问过如何读取JSON,这不是同样的方法吗?不,这不是相同的方式我知道这些步骤,但我想在下面的代码中包括add列:import json import boto3 import csv def lambda_handler(事件,上下文):s3=boto3.client('s3')if event:file_obj=event['Records'][0]filename=str((file_obj)['s3']['object']['key'])print(filename)fileobj=s3.get_object(Bucket=“danvan”,Key=filename)file_content=fileobj['Body'].read().decode('utf-8')打印(file_content)打印(type(file_content))当使用lambda函数将csv或任何文件上载到s3 bucket并显示其内容时,上述代码将读取csv或任何文件,但我的问题是我想使用相同的lambda函数向csv文件添加一个额外列,然后将其保存回s3?我的建议是下载文件,然后修改,然后上载文件。对于中间部分,您可以编写自己的Python来修改该文件,但您希望如何修改。该部分与Lambda、boto3或AWS无关。谢谢John,它成功了。您能帮助我如何从Lambda本地存储中删除该文件吗