У меня есть набор json-файлов, хранящихся в ведро S3 на AWS.Чтение данных с S3 с использованием Lambda
Я хочу использовать службу AWS lambda python для анализа этого json и отправки проанализированных результатов в базу данных AWS RDS MySQL.
У меня есть стабильный скрипт python для выполнения разбора и записи в базу данных. Мне нужно, чтобы скрипт лямбды перебирался через 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)
EDIT
я недоразумение что-то. Вместо того, чтобы читать файл на S3, lambda должен загрузить его сам.
От here, кажется, что вы должны дать Лямбде на пути загрузки, из которого он может получить доступ к файлам самого
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)
Следует также иметь в виду, что вам нужно создать объект s3, который будет использоваться в вашем ответе. т. е. 's3 = boto3.client ('s3')' – ScottMcC