使用Lambda从S3读取数据
使用Lambda从S3读取数据
我在AWS的S3存储桶中有一系列的json文件。
我希望使用AWS Lambda Python服务解析这些json,并将解析结果发送到AWS RDS MySQL数据库中。
我有一个稳定的Python脚本用于解析和写入数据库。我需要Lambda脚本来循环遍历json文件(当它们被添加时)。
每个json文件包含一个列表,只包含results = [content]
。
以下是我想要的伪代码:
- 连接到S3存储桶(
jsondata
) - 读取JSON文件的内容(
results
) - 执行我的脚本以处理这些数据(
results
)
我可以列出我拥有的存储桶:
import boto3 s3 = boto3.resource('s3') for bucket in s3.buckets.all(): print(bucket.name)
输出:
jsondata
但是我无法访问这个存储桶来读取它的结果。
似乎没有read
或load
函数。
我希望像这样:
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)