Conexões do OpenSearch Service - AWS Glue

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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 e aosPassword para seu domínio.

Para configurar uma conexão com o OpenSearch Service:
  1. 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 valor aosUser.

    • Ao selecionar Pares chave/valor, crie um par para a chave opensearch.net.http.auth.pass com o valor aosPassword.

  2. 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 na documentação do OpenSearch. Para fornecer uma string de parâmetros de consulta de URL, adicione o prefixo ?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 na documentação do OpenSearch.

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.