Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Estrai e interroga gli attributi SiteWise dei metadati AWS IoT in un data lake
Creato da Ambarish Dongaonkar () AWS
Ambiente: produzione | Tecnologie: IoT; Analisi; Big data | AWSservizi: AWS IoT SiteWise; AWS Lambda; Glue AWS |
Riepilogo
AWSL'IoT SiteWise utilizza modelli e gerarchie di asset per rappresentare apparecchiature, processi e strutture industriali. Ogni modello o asset può avere più attributi specifici dell'ambiente. Gli attributi dei metadati di esempio includono il sito o l'ubicazione fisica dell'asset, i dettagli dell'impianto e gli identificatori delle apparecchiature. Questi valori di attributo integrano i dati di misurazione degli asset per massimizzare il valore aziendale. L'apprendimento automatico (ML) può fornire ulteriori informazioni su questi metadati e semplificare le attività di progettazione.
Tuttavia, gli attributi dei metadati non possono essere richiesti direttamente dal servizio IoTAWS. SiteWise Per rendere gli attributi interrogabili, è necessario estrarli e inserirli in un data lake. Questo modello utilizza uno script Python per estrarre gli attributi per tutti gli SiteWise asset AWS IoT e inserirli in un data lake in un bucket Amazon Simple Storage Service (Amazon S3). Una volta completato questo processo, puoi utilizzare SQL le query in Amazon Athena per accedere agli attributi dei metadati AWS SiteWise IoT e ad altri set di dati, come i set di dati di misurazione. Le informazioni sugli attributi dei metadati sono utili anche quando si lavora con SiteWise monitor o dashboard AWS IoT. Puoi anche creare una AWS QuickSight dashboard utilizzando gli attributi estratti nel bucket S3.
Il pattern ha un codice di riferimento e puoi implementarlo utilizzando i migliori servizi di calcolo per il tuo caso d'uso, come AWS Lambda o AWS Glue.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo.
Autorizzazioni per configurare le funzioni AWS Lambda o i lavori AWS Glue.
Un bucket Amazon S3.
I modelli e le gerarchie degli asset sono configurati in IoTAWS. SiteWise Per ulteriori informazioni, consulta Creazione di modelli di asset ( SiteWise documentazione AWS IoT).
Architettura
È possibile utilizzare una funzione Lambda o un lavoro AWS Glue per completare questo processo. Ti consigliamo di utilizzare Lambda se hai meno di 100 modelli e ogni modello ha una media di 15 o meno attributi. Per tutti gli altri casi d'uso, consigliamo di utilizzare AWS Glue.
L'architettura della soluzione e il flusso di lavoro sono illustrati nel diagramma seguente.
Viene eseguito il lavoro AWS Glue o la funzione Lambda pianificata. Estrae gli attributi dei metadati degli asset dall'AWSIoT SiteWise e li inserisce in un bucket S3.
Un crawler AWS Glue esegue la scansione dei dati estratti nel bucket S3 e crea tabelle in un Glue Data Catalog. AWS
Utilizzando lo standardSQL, Amazon Athena esegue query sulle tabelle del AWS Glue Data Catalog.
Automazione e scalabilità
È possibile pianificare l'esecuzione giornaliera o settimanale della funzione Lambda o del job AWS Glue, in base alla frequenza di aggiornamento delle configurazioni degli SiteWise asset AWS IoT.
Non c'è limite al numero di SiteWise asset AWS IoT che il codice di esempio può elaborare, ma un numero elevato di asset può aumentare il tempo necessario per completare il processo.
Strumenti
Amazon Athena è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon Simple Storage Service (Amazon S3) utilizzando standard. SQL
AWSGlue è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.
AWSIdentity and Access Management (IAM) consente di gestire in modo sicuro l'accesso alle AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWSL'IoT ti SiteWise aiuta a raccogliere, modellare, analizzare e visualizzare i dati delle apparecchiature industriali su larga scala.
AWSLambda è un servizio di elaborazione che ti aiuta a eseguire il codice senza dover effettuare il provisioning o gestire i server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
AWSSDKfor Python (Boto3)
è un kit di sviluppo software che consente di integrare l'applicazione, la libreria o lo script Python con i servizi. AWS
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura le autorizzazioni inIAM. | Nella IAM console, concedi le autorizzazioni al IAM ruolo assunto dalla funzione Lambda o dal job AWS Glue per eseguire le seguenti operazioni:
Per ulteriori informazioni, consulta Creazione di un ruolo per un AWS servizio (IAMdocumentazione). | Generale AWS |
Crea la funzione Lambda o il job AWS Glue. | Se utilizzi Lambda, crea una nuova funzione Lambda. Per Runtime, scegli Python. Per ulteriori informazioni, consulta Creazione di funzioni Lambda con Python (documentazione Lambda). Se stai usando AWS Glue, crea un nuovo job di shell Python nella console AWS Glue. Per ulteriori informazioni, consulta Aggiungere lavori di shell Python (documentazione AWS Glue). | Informazioni generali AWS |
Aggiorna la funzione Lambda o il job AWS Glue. | Modifica la nuova funzione Lambda o il lavoro AWS Glue e inserisci l'esempio di codice nella sezione Informazioni aggiuntive. Modifica il codice in base alle esigenze del tuo caso d'uso. Per ulteriori informazioni, consulta Modificare il codice utilizzando l'editor della console (documentazione Lambda) e Working with scripts (documentazione AWS Glue). | Informazioni generali AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui la funzione Lambda o il job AWS Glue. | Esegui la funzione Lambda o il job AWS Glue. Per ulteriori informazioni, vedete Invoke the Lambda function (documentazione Lambda) o Starting jobs using triggers (documentazione Glue). AWS Questo estrae gli attributi dei metadati per gli asset e i modelli nella SiteWise gerarchia AWS IoT e li archivia nel bucket S3 specificato. | Generale AWS |
Configura un AWS Glue crawler. | Configura un crawler AWS Glue con il classificatore di formato necessario per un CSV file in formato. Usa il bucket S3 e i dettagli del prefisso utilizzati nella funzione Lambda o nel job Glue. AWS Per ulteriori informazioni, vedete Defining crawler (documentazione AWS Glue). | Informazioni generali AWS |
Avvia il AWS Glue crawler. | Esegui il crawler per elaborare il file di dati creato dalla funzione Lambda o dal job Glue. AWS Il crawler crea una tabella nel AWS Glue Data Catalog specificato. Per ulteriori informazioni, consulta Avvio dei crawler utilizzando i trigger (documentazione di AWS Glue). | Informazioni generali AWS |
Interroga gli attributi dei metadati. | Utilizzando Amazon Athena, usa standard SQL per interrogare il AWS Glue Data Catalog in base alle esigenze del tuo caso d'uso. Puoi unire la tabella degli attributi dei metadati ad altri database e tabelle. Per ulteriori informazioni, consulta Getting Started (documentazione di Amazon Athena). | Informazioni generali AWS |
Risorse correlate
Informazioni aggiuntive
Codice
Il codice di esempio fornito è di riferimento ed è possibile personalizzare questo codice in base alle esigenze del caso d'uso.
# Following code can be used in an AWS Lambda function or in an AWS Glue Python shell job. # IAM roles used for this job need read access to the AWS IoT SiteWise service and write access to the S3 bucket. sw_client = boto3.client('iotsitewise') s3_client = boto3.client('s3') output = io.StringIO() attribute_list=[] bucket = '{3_bucket name}' prefix = '{s3_bucket prefix}' output.write("model_id,model_name,asset_id,asset_name,attribuet_id,attribute_name,attribute_value\n") m_resp = sw_client.list_asset_models() for m_rec in m_resp['assetModelSummaries']: model_id = m_rec['id'] model_name = m_rec['name'] attribute_list.clear() dam_response = sw_client.describe_asset_model(assetModelId=model_id) for rec in dam_response['assetModelProperties']: if 'attribute' in rec['type']: attribute_list.append(rec['name']) response = sw_client.list_assets(assetModelId=model_id, filter='ALL') for asset in response['assetSummaries']: asset_id = asset['id'] asset_name = asset['name'] resp = sw_client.describe_asset(assetId=asset_id) for rec in resp['assetProperties']: if rec['name'] in attribute_list: p_resp = sw_client.get_asset_property_value(assetId=asset_id, propertyId=rec['id']) if 'propertyValue' in p_resp: if p_resp['propertyValue']['value']: if 'stringValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['stringValue']) + "\n") if 'doubleValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['doubleValue']) + "\n") if 'integerValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['integerValue']) + "\n") if 'booleanValue' in p_resp['propertyValue']['value']: output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['booleanValue']) + "\n") output.seek(0) s3_client.put_object(Bucket=bucket, Key= prefix + '/data.csv', Body=output.getvalue()) output.close()