使用Lambda从S3读取数据

9 浏览
0 Comments

使用Lambda从S3读取数据

我在AWS的S3存储桶中有一系列的json文件。

我希望使用AWS Lambda Python服务解析这些json,并将解析结果发送到AWS RDS MySQL数据库中。

我有一个稳定的Python脚本用于解析和写入数据库。我需要Lambda脚本来循环遍历json文件(当它们被添加时)。

每个json文件包含一个列表,只包含results = [content]

以下是我想要的伪代码:

  1. 连接到S3存储桶(jsondata
  2. 读取JSON文件的内容(results
  3. 执行我的脚本以处理这些数据(results

我可以列出我拥有的存储桶:

import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
    print(bucket.name)

输出:

jsondata

但是我无法访问这个存储桶来读取它的结果。

似乎没有readload函数。

我希望像这样:

for bucket in s3.buckets.all():
   print(bucket.contents)

编辑

我误解了一些东西。Lambda不是读取S3中的文件,而是自己下载文件。

这里看起来,你必须给Lambda提供一个下载路径,Lambda可以从中访问文件

import libraries
s3_client = boto3.client('s3')
def 要执行的函数:
   blah blah
def handler(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key'] 
        download_path = '/tmp/{}{}'.format(uuid.uuid4(), key)
        s3_client.download_file(bucket, key, download_path)

0