У меня есть набор json файлов, хранящихся в ведре S3 на AWS.
Я хочу использовать службу AWS lambda python для анализа этого json и отправки проанализированных результатов в базу данных AWS RDS MySQL.
У меня есть стабильный python script для выполнения разбора и записи в базу данных. Мне нужно lambda script для итерации через json файлы (когда они добавлены).
Каждый json файл содержит список, простой, состоящий из results = [content]
В псевдокоде я хочу:
- Подключиться к ведерке S3 (
jsondata
) - Прочитайте содержимое файла JSON (
results
) - Выполните мой script для этих данных (
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)
ИЗМЕНИТЬ
Я что-то недопонимаю. Вместо того, чтобы читать файл на 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)