Conexões do OpenSearch Service
O AWS Glue para Spark pode ser usado para ler e escrever em tabelas no OpenSearch Service no AWS Glue 4.0 e versões posteriores. Você pode definir o que deseja ler do OpenSearch Service com uma consulta do OpenSearch. Conecte-se ao OpenSearch Service usando credenciais de autenticação básica HTTP armazenadas no AWS Secrets Manager via conexão do AWS Glue. Esse recurso não é compatível com o OpenSearch Service com tecnologia sem servidor.
Para obter mais informações sobre o serviço Amazon OpenSearch Service, consulte a Documentação do Amazon OpenSearch Service.
Configurar conexões do OpenSearch Service
Para se conectar ao OpenSearch Service via AWS Glue, você precisará criar e armazenar suas credenciais do OpenSearch Service em um segredo do AWS Secrets Manager e, em seguida, associar esse segredo a uma conexão AWS Glue OpenSearch Service.
Pré-requisitos:
-
Identifique o endpoint do domínio,
aosEndpoint
e porta,aosPort
do qual gostaria de ler, ou crie o recurso seguindo as instruções na documentação do Amazon OpenSearch Service. Para obter mais informações sobre a criação de domínios, consulte Criar e gerenciar domínios do Amazon OpenSearch Service na documentação do Amazon OpenSearch Service.Um endpoint de domínio do Amazon OpenSearch Service terá o seguinte formato padrão, https://search-
domainName
-unstructuredIdContent
.region
.es.amazonaws.com. Para obter mais informações sobre a identificação do endpoint do domínio, consulte Criar e gerenciar domínios do Amazon OpenSearch Service na documentação do Amazon OpenSearch Service.Identifique ou gere credenciais de autenticação básica HTTP,
aosUser
eaosPassword
para seu domínio.
Para configurar uma conexão com o OpenSearch Service:
No AWS Secrets Manager, crie um segredo usando suas credenciais do OpenSearch Service. Para criar um segredo no Secrets Manager, siga o tutorial disponível em Criar uma AWS Secrets Manager segredo na documentação do AWS Secrets Manager. Depois de criar o segredo, guarde o nome secreto,
SecretName
, para a próxima etapa.-
Ao selecionar Pares chave/valor, crie um par para a chave
opensearch.net.http.auth.user
com o valoraosUser
. -
Ao selecionar Pares chave/valor, crie um par para a chave
opensearch.net.http.auth.pass
com o valoraosPassword
.
-
No console do AWS Glue, crie uma conexão seguindo as etapas em Adicionar uma conexão do AWS Glue. Depois de criar a conexão, guarde o nome da conexão,
connectionName
, para uso futuro no AWS Glue.Ao selecionar um Tipo de conexão, escolha OpenSearch Service.
Ao selecionar um endpoint de domínio, forneça
aosEndpoint
.Ao selecionar uma porta, forneça
aosPort
.Ao selecionar um Segredo da AWS, forneça o
secretName
.
Depois de criar uma conexão AWS Glue OpenSearch Service, siga estas etapas antes de executar seu trabalho do AWS Glue:
Conceda ao perfil do IAM associada ao seu trabalho do AWS Glue permissão para ler
secretName
.Na configuração do trabalho do AWS Glue, forneça
connectionName
como uma conexão de rede adicional.
Ler dos índices do OpenSearch Service
Pré-requisitos:
-
Um índice do OpenSearch Service do qual você gostaria de ler,
aosIndex
. -
Uma conexão do AWS Glue OpenSearch Service configurada para fornecer informações de autenticação e localização da rede. Para fazer isso, conclua as etapas do procedimento anterior, Para configurar uma conexão com o OpenSearch Service. Você precisará do nome da conexão AWS Glue,
ConnectionName
.
Este exemplo lê um índice do Amazon OpenSearch Service. Será necessário fornecer o parâmetro pushdown
.
Por exemplo:
opensearch_read = glueContext.create_dynamic_frame.from_options( connection_type="opensearch", connection_options={ "connectionName": "
connectionName
", "opensearch.resource": "aosIndex
", "pushdown": "true", } )
Você também pode fornecer uma srting de consulta para filtrar os resultados retornados em seu DynamicFrame. Você precisará configurar opensearch.query
.
O opensearch.query
pode usar uma string de parâmetros de consulta de URL queryString
ou um objeto queryObject
de consulta JSON DSL. Para obter mais informações sobre a consulta DSL, consulte Consulta DSL?q=
à sua consulta, como você faria em um URL totalmente qualificado. Para fornecer um objeto DSL de consulta, faça o escape de string do objeto JSON antes de fornecê-lo.
Por exemplo:
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", } )
Para obter mais informações sobre como criar uma consulta fora de sua sintaxe específica, consulte Sintaxe da string de consulta
Ao ler as coleções do OpenSearch que contêm dados do tipo de matriz, você deve especificar quais campos são do tipo de matriz em sua chamada de método usando o parâmetro opensearch.read.field.as.array.include
.
Por exemplo, ao ler o documento abaixo, você encontrará os campos genre
e actor
de matriz:
{ "_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" } }
Nesse caso, você incluiria esses nomes de campo na chamada do método. Por exemplo:
"opensearch.read.field.as.array.include": "genre,actor"
Se o campo de matriz estiver aninhado dentro da estrutura do documento, consulte-o usando a notação de pontos: "genre,actor,foo.bar.baz"
. Isso especificaria uma matriz baz
incluída em seu documento de origem por meio do documento incorporado foo
que contém o documento incorporado bar
.
Escrever em tabelas do OpenSearch Service
Este exemplo escreve informações de um DynamicFrame existente, dynamicFrame
, no OpenSearch Service. Se o índice já tiver informações, o AWS Glue anexará dados do seu DynamicFrame. Será necessário fornecer o parâmetro pushdown
.
Pré-requisitos:
-
Uma tabela do OpenSearch Service na qual você gostaria de escrever. Você precisará de informações de identificação para a tabela. Vamos chamar isso de
tableName
. -
Uma conexão do AWS Glue OpenSearch Service configurada para fornecer informações de autenticação e localização da rede. Para fazer isso, conclua as etapas do procedimento anterior, Para configurar uma conexão com o OpenSearch Service. Você precisará do nome da conexão AWS Glue,
ConnectionName
.
Por exemplo:
glueContext.write_dynamic_frame.from_options( frame=
dynamicFrame
, connection_type="opensearch", connection_options={ "connectionName": "connectionName
", "opensearch.resource": "aosIndex
", }, )
Referência de opções de conexão do OpenSearch Service
-
connectionName
— Obrigatório. Usado para leitura/gravação. O nome de uma conexão do AWS Glue OpenSearch Service configurada para fornecer informações de autenticação e localização da rede ao seu método de conexão. -
opensearch.resource
— Obrigatório. Usado para leitura/gravação. Valores válidos: nomes de índice do OpenSearch. O nome do índice com o qual seu método de conexão interagirá. -
opensearch.query
- Usado para leitura. Valores válidos: JSON com escape de string ou, quando essa string começa com?
, a parte de pesquisa de um URL. Uma consulta do OpenSearch que filtra o que deve ser recuperado durante a leitura. Para obter mais informações sobre como usar esse parâmetro, consulte a seção Ler dos índices do OpenSearch Service anterior. -
pushdown
: exigido se. Usado para leitura. Valores válidos: booleano. Instrui o Spark a passar consultas de leitura para o OpenSearch para que o banco de dados retorne apenas documentos relevantes. -
opensearch.read.field.as.array.include
: obrigatório ao ler dados do tipo matriz. Usado para leitura. Valores válidos: listas separadas por vírgulas de nomes de campo. Especifica os campos a serem lidos como matrizes de documentos do OpenSearch. Para obter mais informações sobre como usar esse parâmetro, consulte a seção Ler dos índices do OpenSearch Service anterior.