Connessioni per il servizio OpenSearch - AWS Glue

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à.

Connessioni per il servizio OpenSearch

È possibile utilizzare AWS Glue per Spark per leggere e scrivere su tabelle nel servizio OpenSearch in AWS Glue 4.0 e versioni successive. È possibile definire cosa leggere dal servizio OpenSearch con una query OpenSearch. Connettiti al servizio OpenSearch utilizzando le credenziali di autenticazione di base HTTP memorizzate in Gestione dei segreti AWS tramite una connessione AWS Glue. Questa funzionalità non è compatibile con il servizio OpenSearch serverless.

Per ulteriori informazioni sul servizio OpenSearch, consulta la documentazione per gli sviluppatori del servizio OpenSearch di Amazon.

Configurazione del servizio OpenSearch

Per connetterti al servizio OpenSearch da AWS Glue, dovrai creare e archiviare le tue credenziali relative in un segreto Gestione dei segreti AWS, quindi associare tale segreto a una connessione del servizio OpenSearch AWS Glue.

Prerequisiti:

  • Identifica l'endpoint del dominio aosEndpoint e la porta aosPort da cui desideri leggere oppure crea la risorsa seguendo le istruzioni nella documentazione del servizio OpenSearch di Amazon. Per ulteriori informazioni sulla creazione di un dominio, consulta Creazione e gestione di domini OpenSearch di Amazon Service nella documentazione del servizio OpenSearch di Amazon.

    Un endpoint di dominio del servizio OpenSearch di Amazon avrà il seguente formato predefinito: https://search-domainName-unstructuredIdContent.region.es.amazonaws.com. Per ulteriori informazioni sull'identificazione dell'endpoint del dominio, consulta Creazione e gestione di domini OpenSearch di Amazon Service nella documentazione del servizio OpenSearch di Amazon.

    Identifica o genera credenziali di autenticazione di base HTTP, aosUser e aosPassword per il tuo dominio.

Per configurare una connessione al servizio OpenSearch:
  1. In Gestione dei segreti AWS, crea un segreto utilizzando le tue credenziali OpenSearch Service. Per creare un segreto in Secrets Manager, segui il tutorial disponibile in Create an Gestione dei segreti AWS secret nella documentazione di Gestione dei segreti AWS. Dopo aver creato il segreto, prendi nota del nome, secretName, per il passaggio successivo.

    • Quando selezioni le coppie chiave/valore, crea una coppia per la chiave USERNAME con il valore aosUser.

    • Quando selezioni le coppie chiave/valore, crea una coppia per la chiave PASSWORD con il valore aosPassword.

  2. Nella console AWS Glue, crea una connessione seguendo i passaggi riportati in Aggiunta di una connessione AWS Glue. Dopo aver creato la connessione, prendi nota del nome, connectionName, per l'uso futuro in AWS Glue.

    • Quando selezioni un tipo di connessione, seleziona servizio OpenSearch.

    • Quando selezioni un endpoint di dominio, fornisci aosEndpoint.

    • Quando selezioni una porta, fornisci aosPort.

    • Quando selezioni il Segreto AWS, fornisci secretName.

Dopo aver creato una connessione del servizio OpenSearch AWS Glue, è necessario eseguire le seguenti operazioni prima di eseguire il processo AWS Glue:

  • Concedi al ruolo IAM associato al tuo processo AWS Glue il permesso di leggere secretName.

  • Nella configurazione del processo AWS Glue, fornisci connectionName come Connessione di rete aggiuntiva.

Lettura dagli indici del servizio OpenSearch

Prerequisiti:

  • Un indice del servizio OpenSearch da cui desideri leggere, aosIndex.

  • Una connessione al servizio OpenSearch AWS Glue configurata per fornire informazioni di autenticazione e posizione della rete. Per l'acquisizione, completa i passaggi della procedura precedente, Per configurare una connessione al servizio OpenSearch. Sarà necessario il nome della connessione AWS Glue, connectionName.

Questo esempio legge un indice del servizio OpenSearch di Amazon. Dovrai fornire il parametro pushdown.

Per esempio:

opensearch_read = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "connectionName", "opensearch.resource": "aosIndex", "pushdown": "true", } )

È possibile anche fornire una stringa di query per filtrare i risultati restituiti nel DynamicFrame. Sarà necessario configurare opensearch.query.

opensearch.query può accettare una stringa di parametri di query URL queryString o un oggetto di query DSL JSON queryObject Per ulteriori informazioni sulla query DSL, consulta Query DSL nella documentazione di OpenSearch. Per fornire una stringa di parametri di query URL, anteponi ?q= alla query, come faresti con un URL completo. Per fornire un oggetto di query DSL, la stringa evita l'oggetto JSON prima di fornirlo.

Per esempio:

queryObject = "{ "query": { "multi_match": { "query": "Sample", "fields": [ "sample" ] } } }" queryString = "?q=queryString" opensearch_read_query = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "connectionName", "opensearch.resource": "aosIndex", "opensearch.query": queryString, "pushdown": "true", } )

Per ulteriori informazioni su come creare una query al di fuori della sua sintassi specifica, consulta Sintassi della stringa di query nella documentazione di OpenSearch.

Durante la lettura di raccolte OpenSearch che contengono dati di tipo array, è necessario specificare i campi che sono di tipo array nella chiamata al metodo utilizzando il parametro opensearch.read.field.as.array.include.

Ad esempio, durante la lettura del documento seguente incontrerai i campi di array genre e actor:

{ "_index": "movies", "_id": "2", "_version": 1, "_seq_no": 0, "_primary_term": 1, "found": true, "_source": { "director": "Frankenheimer, John", "genre": [ "Drama", "Mystery", "Thriller", "Crime" ], "year": 1962, "actor": [ "Lansbury, Angela", "Sinatra, Frank", "Leigh, Janet", "Harvey, Laurence", "Silva, Henry", "Frees, Paul", "Gregory, James", "Bissell, Whit", "McGiver, John", "Parrish, Leslie", "Edwards, James", "Flowers, Bess", "Dhiegh, Khigh", "Payne, Julie", "Kleeb, Helen", "Gray, Joe", "Nalder, Reggie", "Stevens, Bert", "Masters, Michael", "Lowell, Tom" ], "title": "The Manchurian Candidate" } }

In questo caso, dovrai includere i nomi dei campi in questione nella chiamata al metodo. Per esempio:

"opensearch.read.field.as.array.include": "genre,actor"

Se il campo dell'array è annidato all'interno della struttura del documento, fai riferimento a esso utilizzando la notazione a punti: "genre,actor,foo.bar.baz". Ciò specificherebbe un array baz incluso nel documento di origine tramite il documento incorporato foo contenente il documento incorporato bar.

Scrittura alle tabelle del servizio OpenSearch

Questo esempio scrive informazioni a partire da un DynamicFrame esistente, dynamicFrame al servizio OpenSearch Se l'indice contiene già informazioni, AWS Glue aggiungerà i dati da DynamicFrame. Dovrai fornire il parametro pushdown.

Prerequisiti:

  • Una tabella del servizio OpenSearch su cui scrivere. Avrai bisogno delle informazioni di identificazione per la tabella. Lo chiameremo tableName.

  • Una connessione al servizio OpenSearch AWS Glue configurata per fornire informazioni di autenticazione e posizione della rete. Per l'acquisizione, completa i passaggi della procedura precedente, Per configurare una connessione al servizio OpenSearch. Sarà necessario il nome della connessione AWS Glue, connectionName.

Per esempio:

glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="opensearch", connection_options={ "connectionName": "connectionName", "opensearch.resource": "aosIndex", }, )

Indicazioni di riferimento alle opzioni di connessione al servizio OpenSearch

  • connectionName: obbligatorio. Utilizzato per la lettura/scrittura. Il nome di una connessione al servizio OpenSearch AWS Glue configurata per fornire informazioni di autenticazione e posizione della rete al metodo di connessione.

  • opensearch.resource: obbligatorio. Utilizzato per la lettura/scrittura. Valori validi: nomi degli indici OpenSearch. Il nome dell'indice con cui interagirà il metodo di connessione.

  • opensearch.query: utilizzato per la lettura. Valori validi: stringa con escape JSON o, quando inizia con ?, la parte di ricerca di un URL. Una query di OpenSearch che filtra ciò che deve essere recuperato durante la lettura. Per ulteriori informazioni sull'utilizzo di questo parametro, consulta la sezione precedente Lettura dagli indici del servizio OpenSearch.

  • pushdown — Richiesto se. Utilizzato per la lettura. Valori validi: booleani. Indica a Spark di passare le query di lettura a OpenSearch in modo che il database restituisca solo i documenti pertinenti.

  • opensearch.read.field.as.array.include: richiesto se si leggono dati di tipo array. Utilizzato per la lettura. Valori validi: elenchi di nomi di campi separati da virgole. Specifica i campi da leggere come array dai documenti di OpenSearch. Per ulteriori informazioni sull'utilizzo di questo parametro, consulta la sezione precedente Lettura dagli indici del servizio OpenSearch.