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 um domínio usando o Amazon OpenSearch Ingestion
Este tutorial mostra como usar o Amazon OpenSearch Ingestion para configurar um pipeline simples e ingerir dados em um domínio do Amazon OpenSearch Service. Um pipeline é um recurso que o OpenSearch Ingestion provisiona e gerencia. Você pode usar um pipeline para filtrar, enriquecer, transformar, normalizar e agregar dados para análises e visualizações posteriores no Service. OpenSearch
Este tutorial orienta você pelas etapas básicas de como conseguir montar um pipeline rapidamente. Para obter mais informações detalhadas, consulte Como criar pipelines.
Você concluirá as seguintes etapas neste tutorial:
Neste tutorial, você vai criar os recursos a seguir:
-
Um pipeline chamado
ingestion-pipeline
-
Um domínio chamado
ingestion-domain
no qual o pipeline fará a gravação -
Uma IAM função chamada
PipelineRole
que o pipeline assumirá para gravar no domínio
Permissões obrigatórias
Para concluir este tutorial, você deve ter as IAM permissões corretas. 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 uma função de pipeline (iam:Create
), crie ou modifique um domínio (es:*
) 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 a função do pipeline para o OpenSearch Ingestion para que ele possa gravar dados no domínio.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:*", "iam:Create*", "es:*" ] }, { "Resource":[ "arn:aws:iam::
your-account-id
:role/PipelineRole" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }
Etapa 1: Criar a função de pipeline
Primeiro, crie uma função que o pipeline assumirá para acessar o coletor OpenSearch de domínio do serviço. Neste tutorial, você incluirá esse perfil posteriormente na configuração do pipeline.
Para criar a função de pipeline
-
Abra o AWS Identity and Access Management console em https://console.aws.amazon.com/iamv2/
. -
Escolha Políticas e, depois, Criar política.
-
Neste tutorial, você consumirá dados em um domínio chamado
ingestion-domain
, que você criará na próxima etapa. Selecione JSONe cole a política a seguir no editor. Substitua{your-account-id}
pelo ID da sua conta e modifique a região, se necessário.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:
us-east-1
:your-account-id
:domain/ingestion-domain" }, { "Effect": "Allow", "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-east-1
:your-account-id
:domain/ingestion-domain/*" } ] }Se quiser gravar dados em um domínio existente,
ingestion-domain
substitua pelo nome do seu domínio.nota
Para simplificar este tutorial, usaremos uma política de acesso bem ampla. Em ambientes de produção, no entanto, recomendamos que você aplique uma política de acesso mais restritiva à sua função de pipeline. Para obter um exemplo de política que fornece as permissões mínimas necessárias, consulte Concedendo acesso aos pipelines OpenSearch do Amazon Ingestion aos domínios.
-
Escolha Próximo, então Próximo, e nomeie sua política pipeline-policy.
-
Escolha Criar política.
-
Depois, crie um perfil e anexe a política à ele. Selecione Funções e, em seguida, Criar função.
-
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" } ] }
-
Escolha Próximo. Em seguida, pesquise e selecione pipeline-policy (que você acabou de criar).
-
Escolha Avançar e nomeie a função PipelineRole.
-
Selecione Criar função.
Lembre-se do nome de recurso da Amazon (ARN) da função (por exemplo,arn:aws:iam::
). Você precisará dele quando criar seu pipeline.your-account-id
:role/PipelineRole
Etapa 2: Criar um domínio
Em seguida, crie um domínio chamado ingestion-domain
para ingerir dados.
Navegue até o console do Amazon OpenSearch Service em https://console.aws.amazon.com/aos/casa
-
Está executando OpenSearch 1.0 ou posterior, ou Elasticsearch 7.4 ou posterior
-
Usa o acesso público
-
Não use controle de acesso detalhado.
nota
Esses requisitos têm como objetivo garantir a simplicidade deste tutorial. Em ambientes de produção, você pode configurar um domínio com VPC acesso e/ou usar controle de acesso refinado. Para usar um controle de acesso refinado, consulte Mapear a função do pipeline.
O domínio deve ter uma política de acesso que conceda a permissão PipelineRole
, que você criou na etapa anterior. O pipeline assumirá essa função (chamada sts_role_arn na configuração do pipeline) para enviar dados para o coletor do domínio Service. OpenSearch
Assegure-se de que o domínio tenha a seguinte política de acesso em nível de domínio, concedendo acesso de PipelineRole
ao domínio. Substitua a região e a ID da conta com seus dados:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
your-account-id
:role/PipelineRole" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1
:your-account-id
:domain/ingestion-domain/*" } ] }
Para obter mais informações sobre a criação de políticas de acesso em nível de domínio, consulte Políticas de acesso com base em recursos.
Se você já tiver um domínio criado, modifique sua política de acesso existente para fornecer as permissões acima para a PipelineRole
.
nota
Lembre-se do endpoint do domínio (por exemplo, https://search-
). Você o usará na próxima etapa para configurar o pipeline.ingestion-domain
.us-east-1.es.amazonaws.com
Etapa 3: Criar um pipeline
Agora que você tem um domínio e uma função com os direitos de acesso apropriados, você pode criar um pipeline.
Para criar um pipeline
-
No console do Amazon OpenSearch Service, escolha Pipelines no painel de navegação esquerdo.
-
Selecione Criar pipeline.
-
Selecione o pipeline em branco e escolha Selecionar blueprint.
-
Nomeie o pipeline ingestion-pipeline e mantenha as configurações de capacidade como padrão.
-
Neste tutorial, você criará um subpipeline simples chamada
log-pipeline
que usa o plug-in de origem HTTP. Este plugin aceita dados de log em um formato JSON de matriz. Você especificará um único domínio OpenSearch de serviço como coletor e ingerirá todos os dados no application_logs
índice.Em Configuração do Pipeline, cole a seguinte YAML configuração 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://search-
ingestion-domain
.us-east-1
.es.amazonaws.com" ] index: "application_logs" aws: sts_role_arn: "arn:aws:iam::your-account-id
:role/PipelineRole" region: "us-east-1
"nota
A
path
opção especifica o URI caminho para a ingestão. Essa opção é necessária para fontes baseadas em pull. Para obter mais informações, consulte Como especificar o caminho de ingestão. -
hosts
URLSubstitua o pelo endpoint do domínio que você criou (ou modificou) na seção anterior. Substitua osts_role_arn
parâmetro pelo ARN dePipelineRole
. -
Escolha Validar pipeline e assegure-se de que a validação seja bem-sucedida.
-
Para simplificar neste tutorial, configuraremos o acesso público do pipeline. Sob Rede, selecione Acesso público.
Para obter informações sobre como configurar o VPC acesso, consulteConfigurando o acesso à VPC para pipelines de ingestão da Amazon OpenSearch .
-
Mantenha a publicação de logs ativada caso encontre algum problema ao concluir este tutorial. Para obter mais informações, consulte Monitoramento dos logs de pipeline.
Especifique o seguinte nome do grupo de logs:
/aws/vendedlogs/OpenSearchIngestion/ingestion-pipeline/audit-logs
-
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 HTTP solicitações para o pipeline usando o Signature Version 4. Use uma HTTP ferramenta como Postman
nota
O diretor que assina a solicitação deve ter a osis:Ingest
IAM permissão.
Primeiro, obtenha a ingestão na página URL de configurações do Pipeline:
![Pipeline settings page showing ingestion URL for an active ingestion pipeline.](images/pipeline-endpoint.png)
Em seguida, faça a ingestão de alguns dados de exemplo. A solicitação a seguir usa awscurlapplication_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
. Se você receber um erro de autenticação, pode ser porque está ingerindo dados de uma conta diferente daquela em que o pipeline está. Consulte Corrigindo problemas de permissão.
Agora, consulte o índice application_logs
para garantir que sua entrada de log tenha sido ingerida com sucesso:
awscurl --service es --region
us-east-1
\ -X GET \ https://search-ingestion-domain
.us-east-1
.es.amazonaws.com/application_logs/_search | json_pp
Resposta de exemplo:
{ "took":984, "timed_out":false, "_shards":{ "total":1, "successful":5, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.0, "hits":[ { "_index":"application_logs", "_type":"_doc", "_id":"z6VY_IMBRpceX-DU6V4O", "_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":"2022-10-21T21:00:25.502Z" } } ] } }
Corrigindo problemas de permissão
Se você seguiu as etapas do tutorial e ainda vê erros de autenticação ao tentar ingerir dados, talvez seja porque a função que está gravando em um pipeline é Conta da AWS diferente do próprio pipeline. Nesse caso, você precisa criar e assumir uma função que permita especificamente a ingestão de dados. Para obter instruções, consulte Concessão de acesso de ingestão entre contas.
Recursos relacionados
Este tutorial apresentou um caso de uso simples de ingerir um único documento. HTTP Em cenários de produção, você configurará seus aplicativos cliente (como Fluent Bit, Kubernetes ou 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: