Tutorial: incorporar datos en una colección mediante Amazon OpenSearch Ingestion - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: incorporar datos en una colección mediante Amazon OpenSearch Ingestion

En este tutorial se muestra cómo utilizar Amazon OpenSearch Ingestion para configurar una canalización sencilla e incorporar datos en una colección de Amazon OpenSearch sin servidor. Una canalización es un recurso que OpenSearch Ingestion aprovisiona y administra. Puede usar una canalización para filtrar, enriquecer, transformar, normalizar y agregar datos para el análisis y la visualización posteriores en OpenSearch Service.

Para ver un tutorial que muestra cómo incorporar datos en un dominio de OpenSearch Service aprovisionado, consulte Tutorial: incorporar datos a un dominio mediante Amazon OpenSearch Ingestion.

En este tutorial, deberá completar los siguientes pasos:

En este tutorial creará los recursos siguientes:

  • Una canalización llamada ingestion-pipeline-serverless

  • Una colección llamada ingestion-collection donde escribirá la canalización

  • Un rol de IAM llamado PipelineRole que asumirá la canalización para escribir en la colección

Permisos necesarios

Para completar este tutorial, debe tener los permisos de IAM correctos. Su usuario o rol debe tener adjunta una política basada en la identidad con los siguientes permisos mínimos. Estos permisos le permiten crear un rol de canalización (iam:Create*), crear o modificar una colección (aoss:*) y trabajar con canalizaciones (osis:*).

Además, el permiso iam:PassRole es obligatorio para el recurso del rol de canalización. Este permiso le permite transferir la función de canalización a OpenSearch Ingestion para que pueda escribir datos en la colección.

{ "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" ] } ] }

Paso 1: crear el rol de canalización

En primer lugar, cree un rol que asuma la canalización para acceder al receptor de recopilación de OpenSearch sin servidor. Incluirá esta función en la configuración de la canalización más adelante en este tutorial.

Cómo crear el rol de canalización
  1. Abra la consola AWS Identity and Access Management en https://console.aws.amazon.com/iamv2/.

  2. Seleccione Políticas y, a continuación, seleccione Crear política.

  3. Seleccione JSON y pegue la siguiente política en el editor. Modifique el ARN y el nombre de la colección en consecuencia.

    { "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. seleccione Siguiente, seleccione Siguiente y asigne a su política el nombre collection-pipeline-policy.

  5. Seleccione Crear política.

  6. A continuación, cree un rol y añádale la política. Seleccione Roles y, a continuación, Crear rol.

  7. Seleccione Política de confianza personalizada y pegue la siguiente política en el editor:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. Seleccione Siguiente. Luego busque y seleccione collection-pipeline-policy (que acaba de crear).

  9. Seleccione Siguiente y asigne al rol el nombre PipelineRole.

  10. Seleccione Crear rol.

Recuerde el nombre de recurso de Amazon (ARN) del rol (por ejemplo, arn:aws:iam::your-account-id:role/PipelineRole). Lo necesitará cuando cree la canalización.

Paso 2: crear una colección

A continuación, cree una colección para incorporar datos. El nombre que le pondremos a la colección será ingestion-collection.

  1. Vaya a la consola de Amazon OpenSearch Service en https://console.aws.amazon.com/aos/home.

  2. Seleccione Colecciones del panel de navegación de la izquierda y elija Crear colección.

  3. Nombre la colección ingestion-collection.

  4. En Seguridad, elija Creación estándar.

  5. En Configuración de acceso a la red, cambie el tipo de acceso a Público.

  6. Mantenga todas las demás configuraciones en sus valores predeterminados y elija Siguiente.

  7. Ahora, configure una política de acceso a los datos para la colección. Seleccione JSON para el Método de definición y pegue la siguiente política en el editor. Esta política realiza dos tareas:

    • Permite que el rol de canalización escriba en la colección.

    • Le permite leer de la colección. Más adelante, después de incorporar algunos datos de muestra a la canalización, consultará la colección para garantizar que los datos se hayan incorporado y escrito correctamente en el í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. Sustituya los elementos Principal. La primera entidad principal debe especificar el rol de canalización que ha creado. El segundo debe especificar un usuario o rol que pueda usar para consultar la colección más adelante.

  9. Seleccione Siguiente. Asigne a la política de acceso el nombre pipeline-domain-access y vuelva a seleccionar Siguiente.

  10. Revise la configuración de la colección y seleccione Enviar.

Cuando la colección esté activa, anote el punto de conexión de OpenSearch en Punto de conexión(por ejemplo, https://{collection-id}.us-east-1.aoss.amazonaws.com). Lo necesitará cuando cree la canalización.

Paso 3: crear una canalización

Ahora que tiene una colección y un rol con los derechos de acceso adecuados, puede crear una canalización.

Para crear una canalización
  1. En la consola de Amazon OpenSearch Service, seleccione Canalizaciones en el panel de navegación izquierdo.

  2. Seleccione Create pipeline.

  3. Seleccione la canalización en blanco y, a continuación, elija Seleccionar proyecto.

  4. Asigne el nombre serverless-ingestion a la canalización y mantenga la configuración de capacidad como predeterminada.

  5. En este tutorial, crearemos una subcanalización sencilla llamada log-pipeline que utilice el complemento fuente HTTP. El complemento acepta datos de registro en un formato de matriz JSON. Especificaremos una única colección de OpenSearch sin servidor como el receptor e incorporaremos todos los datos al índice my_logs.

    En Configuración de canalización, pegue la siguiente configuración de YAML en el 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. Reemplace la URL hosts por el punto de conexión de la colección que creó en la sección anterior. Sustituya el parámetro sts_role_arn por el ARN de PipelineRole. Si lo desea, modifique el region.

  7. Seleccione Validar canalización y asegúrese de que la validación se realice correctamente.

  8. Para simplificar este tutorial, configuraremos el acceso público para la canalización. En Red, seleccione Acceso público.

    Para obtener información acerca de la configuración del acceso a VPC, consulte Configuración del acceso a la VPC para canalizaciones de Amazon OpenSearch Ingestion.

  9. Mantenga habilitada la publicación de registros en caso de que surja algún problema al completar este tutorial. Para obtener más información, consulte Monitoreo de registros de canalización.

    Especifique el siguiente nombre de grupo de registro: /aws/vendedlogs/OpenSearchIngestion/serverless-ingestion/audit-logs

  10. Seleccione Siguiente. Revise la configuración de la canalización y elija Crear canalización. La canalización tarda entre 5 y 10 minutos en activarse.

Paso 4: incorporar algunos datos de muestra

Cuando el estado de la canalización sea Active, puede empezar a incorporarle datos. Debe firmar todas las solicitudes HTTP que se envíen a la canalización mediante la versión 4 de Signature. Use una herramienta HTTP como Postman o awscurl para enviar algunos datos a la canalización. Al igual que ocurre con la indexación de datos directamente en una colección, la incorporación de datos a una canalización siempre requiere un rol de IAM o una clave de acceso y una clave secreta de IAM.

nota

La entidad principal que firma la solicitud debe tener el permiso de IAM osis:Ingest.

Primero, obtenga la URL de incorporación en la página de Configuración de canalización:

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

A continuación, incorpore algunos datos de muestra. La siguiente solicitud de ejemplo usa awscurl para enviar un único archivo de registro al í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

Debería ver una respuesta 200 OK.

Ahora, consulte el índice my_logs para asegurarse de que la entrada del registro se haya incorporado correctamente:

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

Respuesta de ejemplo:

{ "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 presenta un caso práctico sencillo de incorporación de un único documento a través de HTTP. En escenarios de producción, configurará las aplicaciones de cliente (como Fluent Bit, Kubernetes u OpenTelemetry Collector) para enviar datos a una o más canalizaciones. Es probable que sus canalizaciones sean más complejas que en el ejemplo sencillo de este tutorial.

Para empezar a configurar sus clientes e incorporar datos, consulte los siguientes recursos: