Lea*_*wly 31 python json amazon-s3 amazon-web-services aws-lambda
我在AWS上的S3存储桶中存储了一系列json文件.
我希望使用AWS lambda python服务来解析此json并将解析后的结果发送到AWS RDS MySQL数据库.
我有一个稳定的python脚本,用于解析和写入数据库.我需要lambda脚本来遍历json文件(当它们被添加时).
每个json文件都包含一个简单的列表 results = [content]
在伪代码中我想要的是:
jsondata)results)results)我可以列出我所拥有的桶:
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
Run Code Online (Sandbox Code Playgroud)
赠送:
jsondata
Run Code Online (Sandbox Code Playgroud)
但我无法访问此存储桶来读取其结果.
似乎没有read或load功能.
我希望有类似的东西
for bucket in s3.buckets.all():
print(bucket.contents)
Run Code Online (Sandbox Code Playgroud)
编辑
我误解了一些事情.lambda必须自己下载,而不是在S3中读取文件.
从这里看来,你必须给lambda一个下载路径,从中可以访问文件本身
import libraries
s3_client = boto3.client('s3')
def function to be executed:
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)
Run Code Online (Sandbox Code Playgroud)
小智 30
s3 = boto3.client('s3')
response = s3.get_object(Bucket=bucket, Key=key)
emailcontent = response['Body'].read().decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
Dys*_*mus 10
您可以使用bucket.objects.all()来获得在桶中的所有对象的列表(也有替代方法,比如filter,page_size以及limit根据您的需要)
这些方法返回一个带有S3.ObjectSummary 对象的迭代器,从那里你可以使用该方法object.get来检索文件.
| 归档时间: |
|
| 查看次数: |
52606 次 |
| 最近记录: |