Tutorial: ingestão de dados em uma coleção usando a Ingestão do Amazon OpenSearch - OpenSearch Serviço Amazon

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

Tutorial: ingestão de dados em uma coleção usando a Ingestão do Amazon OpenSearch

Este tutorial mostra como usar a Ingestão do Amazon OpenSearch para configurar um pipeline simples e ingerir dados em uma coleção das coleções do Amazon OpenSearch de tecnologia sem servidor. Um pipeline é um recurso que a Ingestão do OpenSearch provisiona e gerencia. Você pode usar um pipeline para filtrar, enriquecer, transformar, normalizar e agregar dados para análises e visualizações posteriores no OpenSearch Service.

Para ver um tutorial que demonstra como ingerir dados em um domínio provisionado do OpenSearch Service, consulte Tutorial: ingestão de dados em um domínio usando a Ingestão do Amazon OpenSearch.

Você concluirá as seguintes etapas neste tutorial:

Neste tutorial, você vai criar os recursos a seguir:

  • Um pipeline chamado ingestion-pipeline-serverless

  • Um coleção chamada ingestion-collection no qual o pipeline fará a gravação

  • Um perfil do IAM chamado PipelineRole e que o pipeline assumirá para gravar na coleção

Permissões obrigatórias

Para concluir este tutorial, você deve ter as permissões corretas do IAM. Seu usuário ou função deve ter uma política baseada em identidade anexada com as seguintes permissões mínimas: Essas permissões permitem que você crie um perfil de pipeline (iam:Create*), crie ou modifique uma coleção (aoss:*) e trabalhe com pipelines (osis:*).

Além disso, a permissão iam:PassRole é necessária no recurso de perfil do pipeline. Essa permissão permite que você passe o perfil do pipeline para a Ingestão do OpenSearch para que ela possa gravar dados na coleção.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:*", "iam:Create*", "aoss:*" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/PipelineRole" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

Etapa 1: Criar a função de pipeline

Primeiro, crie um perfil que o pipeline assumirá para acessar o coletor de coleta da tecnologia sem servidor do OpenSearch. Neste tutorial, você incluirá esse perfil posteriormente na configuração do pipeline.

Para criar a função de pipeline
  1. Abra o console AWS Identity and Access Management em https://console.aws.amazon.com/iamv2/.

  2. Escolha Políticas e, depois, Criar política.

  3. Selecione JSON e cole a política a seguir no editor. Modifique o ARN da coleção e o nome de acordo.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:BatchGetCollection", "aoss:APIAccessAll" ], "Effect": "Allow", "Resource": "arn:aws:aoss:us-east-1:your-account-id:collection/collection-id" }, { "Action": [ "aoss:CreateSecurityPolicy", "aoss:GetSecurityPolicy", "aoss:UpdateSecurityPolicy" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": "collection-name" } } } ] }
  4. Escolha Próximo, então Próximo, e nomeie sua política collection-pipeline-policy.

  5. Escolha Criar política.

  6. Depois, crie um perfil e anexe a política à ele. Selecione Funções e, em seguida, Criar função.

  7. Escolha Política de confiança personalizada e cole a política a seguir no editor:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. Escolha Próximo. Em seguida, pesquise e selecione collection-pipeline-policy (que você acabou de criar).

  9. Escolha Próximo e nomeie a função PipelineRole.

  10. Selecione Criar função.

Lembre-se do nome do recurso da Amazon (ARN) do perfil (por exemplo, arn:aws:iam::your-account-id:role/PipelineRole). Você precisará dele quando criar seu pipeline.

Etapa 2: criar uma coleção

Em seguida, crie uma coleção para ingerir dados. Daremos o nome da coleção de ingestion-collection.

  1. Navegue até o console do Amazon OpenSearch Service em https://console.aws.amazon.com/aos/home.

  2. Escolha Coleções no painel de navegação à esquerda e escolha Criar coleção.

  3. Nomeie a coleção ingestion-collection.

  4. Em Segurança, escolha Criação padrão.

  5. Em Configurações de acesso à rede, altere o tipo de acesso para Público .

  6. Mantenha todas as outras configurações em seus valores padrão e escolha Próximo.

  7. Agora, configure uma política de acesso aos dados para a coleção. Para Método de definição, escolha JSON e cole a seguinte política no editor. Essa política faz duas coisas:

    • Permite que o perfil de pipeline faça gravações na coleção.

    • Permite que você leia a coleção. Posteriormente, depois de ingerir alguns dados de amostra no pipeline, você consultará a coleção para garantir que os dados foram ingeridos e gravados com sucesso no índice.

      [ { "Rules": [ { "Resource": [ "index/ingestion-collection/*" ], "Permission": [ "aoss:CreateIndex", "aoss:UpdateIndex", "aoss:DescribeIndex", "aoss:ReadDocument", "aoss:WriteDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::your-account-id:role/PipelineRole", "arn:aws:iam::your-account-id:role/Admin" ], "Description": "Rule 1" } ]
  8. Substitua os elementos Principal. A entidade principal deve especificar o perfil do pipeline que você criou. A entidade secundária deve especificar um usuário ou perfil que você possa usar para consultar a coleção posteriormente.

  9. Escolha Próximo. Nomeie a política de acesso pipeline-domain-access e escolha Próximo novamente.

  10. Reveja sua configuração da coleção e escolha Enviar.

Quando a coleção estiver ativa, observe o endpoint do OpenSearch em Endpoint (por exemplo, https://{collection-id}.us-east-1.aoss.amazonaws.com). Você precisará dele quando criar seu pipeline.

Etapa 3: Criar um pipeline

Agora que você tem uma coleção e um perfil com os direitos de acesso apropriados, pode criar um pipeline.

Para criar um pipeline
  1. No console do Amazon OpenSearch Service, escolha Pipelines no painel de navegação à esquerda.

  2. Selecione Criar pipeline.

  3. Selecione o pipeline em branco e escolha Selecionar esquema.

  4. Nomeie o pipeline como serverless-ingestion e mantenha as configurações de capacidade como padrão.

  5. Neste tutorial, criaremos um subpipeline simples chamado log-pipeline, que usa o plug-in de fonte do HTTP. O plug-in aceita dados de log em formato de matriz JSON. Vamos especificar uma única coleção tecnologia sem servidor do OpenSearch como coletor e ingerir todos os dados no índice my_logs.

    Em Configuração do pipeline, cole a seguinte configuração de YAML no editor:

    version: "2" log-pipeline: source: http: path: "/${pipelineName}/test_ingestion_path" processor: - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://collection-id.us-east-1.aoss.amazonaws.com" ] index: "my_logs" aws: sts_role_arn: "arn:aws:iam::your-account-id:role/PipelineRole" region: "us-east-1" serverless: true
  6. Substitua o URL hosts pelo endpoint da coleção criada na seção anterior. Substitua o parâmetro sts_role_arn pelo ARN de PipelineRole. Opcionalmente, modifique o region.

  7. Escolha Validar pipeline e assegure-se de que a validação seja bem-sucedida.

  8. Para simplificar neste tutorial, configuraremos o acesso público do pipeline. Sob Rede, selecione Acesso público.

    Para obter mais informações sobre como configurar VPC, consulte Como configurar o acesso da VPC aos pipelines do Amazon OpenSearch Ingestion.

  9. Mantenha a publicação de logs ativada caso encontre algum problema ao concluir este tutorial. Para ter mais informações, consulte Monitoramento dos logs de pipeline.

    Especifique o seguinte nome do grupo de logs: /aws/vendedlogs/OpenSearchIngestion/serverless-ingestion/audit-logs

  10. Escolha Próximo. Revise sua configuração do pipeline e escolha Criar pipeline. O pipeline leva de 5 a 10 minutos para se tornar ativo.

Etapa 4: ingestão de dados de exemplo

Quando o status do pipeline é Active, você pode começar a ingerir dados nele. Você deve assinar todas as solicitações HTTP no pipeline usando o Signature Version 4. Use uma ferramenta HTTP, como o Postman ou awscurl, para enviar alguns dados para o pipeline. Assim como acontece com a indexação de dados diretamente em uma coleção, a ingestão de dados em um pipeline sempre requer um perfil do IAM, uma chave de acesso do IAM e uma chave secreta.

nota

A entidade principal responsável pela assinatura da solicitação deve ter a permissão osis:Ingest do IAM.

Primeiro, obtenha o URL de ingestão na página Configurações do Pipeline:

Pipeline settings page showing ingestion URL for an active ingestion pipeline.

Em seguida, faça a ingestão de alguns dados de exemplo. O exemplo de solicitação a seguir usa awscurl para enviar um único arquivo de log para o índice my_logs:

awscurl --service osis --region us-east-1 \ -X POST \ -H "Content-Type: application/json" \ -d '[{"time":"2014-08-11T11:40:13+00:00","remote_addr":"122.226.223.69","status":"404","request":"GET http://www.k2proxy.com//hello.html HTTP/1.1","http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)"}]' \ https://pipeline-endpoint.us-east-1.osis.amazonaws.com/log-pipeline/test_ingestion_path

Você obterá uma resposta 200 OK.

Agora, consulte o índice my_logs para garantir que a entrada do log tenha sido ingerida com sucesso:

awscurl --service aoss --region us-east-1 \ -X GET \ https://collection-id.us-east-1.aoss.amazonaws.com/my_logs/_search | json_pp

Resposta de exemplo:

{ "took":348, "timed_out":false, "_shards":{ "total":0, "successful":0, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.0, "hits":[ { "_index":"my_logs", "_id":"1%3A0%3ARJgDvIcBTy5m12xrKE-y", "_score":1.0, "_source":{ "time":"2014-08-11T11:40:13+00:00", "remote_addr":"122.226.223.69", "status":"404", "request":"GET http://www.k2proxy.com//hello.html HTTP/1.1", "http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)", "@timestamp":"2023-04-26T05:22:16.204Z" } } ] } }

Recursos relacionados

Este tutorial apresentou um caso de uso simples de ingestão de um único documento via HTTP. Em cenários de produção, você configurará seus aplicativos cliente (como Fluent Bit, Kubernetes ou o OpenTelemetry Collector) para enviar dados para um ou mais pipelines. Seus pipelines provavelmente serão mais complexos do que o exemplo simples deste tutorial.

Para começar a configurar seus clientes e ingerir dados, consulte os seguintes recursos: