Ho un intervallo di file JSON memorizzati in un bucket S3 su AWS.Lettura dati da S3 utilizzando Lambda
Desidero utilizzare il servizio lambda python di AWS per analizzare questo json e inviare i risultati analizzati a un database MySQL AWS RDS.
Ho uno script python stabile per eseguire l'analisi e la scrittura nel database. Ho bisogno di script lambda per scorrere i file JSON (quando vengono aggiunti).
Ogni file JSON contiene un elenco, semplice che consiste di results = [content]
In pseudo-codice quello che voglio è:
- Collegare al secchio S3 (
jsondata
) - Leggere il contenuto della di file JSON (
results
) - Esegui il mio script per questi dati (
results
)
posso elencare i secchi che ho da:
import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
Dare:
jsondata
Ma non posso accedere a questo secchio di leggere i suoi risultati.
Non sembra essere una funzione read
o load
.
auguro per qualcosa come
for bucket in s3.buckets.all():
print(bucket.contents)
EDIT
sto malinteso qualcosa. Invece di leggere il file in S3, lambda deve scaricarlo da sé.
Da here sembra che si deve dare lambda un percorso di download, da cui si può accedere ai file si
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)
Occorre inoltre notare che è necessario creare un oggetto s3 da utilizzare nella risposta. per esempio 's3 = boto3.client ('s3')' – ScottMcC