Creación de una integración de origen de datos de Amazon S3 en OpenSearch Service - Amazon OpenSearch Service

Creación de una integración de origen de datos de Amazon S3 en OpenSearch Service

Puede crear un nuevo origen de datos de consulta directa de Amazon S3 para OpenSearch Service a través de la Consola de administración de AWS o la API. Cada nuevo origen de datos utiliza el AWS Glue Data Catalog para administrar las tablas que representan los buckets de Amazon S3.

Requisitos previos

Antes de comenzar, asegúrese de que ha revisado la siguiente documentación:

Antes de poder crear un origen de datos, debe tener los siguientes recursos en su Cuenta de AWS:

  • Un dominio de OpenSearch con versión 2.13 o una posterior. Esta es la base para configurar la integración de consultas directas. Para obtener instrucciones acerca de cómo configurarlo, consulte Creación de dominios de OpenSearch Service.

  • Uno o varios buckets de S3. Deberá especificar los buckets que contienen los datos que desea consultar y un bucket en el cual almacenar los puntos de control de las consultas. Para obtener instrucciones acerca de cómo crear un bucket de S3, consulte Crear un bucket en la Guía del usuario de Amazon S3.

  • (Opcional) Una o más tablas de AWS Glue. La consulta de datos en Amazon S3 requiere que tenga tablas configuradas en AWS Glue Data Catalog para que apunten a los datos de S3. Debe crear las tablas con OpenSearch Query Workbench. Las tablas de Hive existentes no son compatibles.

    Si es la primera vez que configura un origen de datos de Amazon S3, debe crear un origen de datos de administrador para configurar todas las tablas de AWS Glue Data Catalog. Para ello, instale las integraciones predefinidas de OpenSearch o utilice OpenSearch Query Workbench a fin de crear tablas SQL personalizadas para casos de uso avanzados. Si desea ver ejemplos acerca de cómo crear tablas para registros de VPC, CloudTrail y AWS WAF, consulte la documentación en GitHub para VPC, CloudTrail y AWS WAF. Tras crear las tablas, puede crear nuevos orígenes de datos de Amazon S3 y restringir el acceso a tablas limitadas.

  • (Opcional) Un rol de IAM creado manualmente. Puede usar este rol para administrar el acceso al origen de datos. Como alternativa, puede hacer que OpenSearch Service le cree un rol automáticamente con los permisos necesarios. Si decide utilizar un rol de IAM creado manualmente, siga las instrucciones que se indican en Permisos necesarios para los roles de IAM creados manualmente.

Procedimiento

Puede configurar un origen de datos de consulta directa en un dominio con la Consola de administración de AWS o la API de OpenSearch Service.

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

  2. En el panel de navegación izquierdo, seleccione Dominios.

  3. Seleccione el dominio para el que desea configurar un nuevo origen de datos. Se abrirá la página de detalles del dominio.

  4. Seleccione la pestaña Conexiones que aparece debajo de los detalles generales del dominio y busque la sección Consulta directa.

  5. Seleccione Configurar origen de datos.

  6. Escriba un nombre y una descripción opcional para el nuevo origen de datos.

  7. Seleccione Amazon S3 con AWS Glue Data Catalog.

  8. En Configuración del permiso de acceso de IAM, elija cómo administrar el acceso.

    1. Si desea crear automáticamente un rol para este origen de datos, siga estos pasos:

      1. Seleccione Crear un nuevo rol.

      2. Ingrese un nombre para el rol de IAM.

      3. Seleccione uno o más buckets de S3 que contengan datos que desee consultar.

      4. Seleccione un bucket de S3 de puntos de control en el cual almacenar los puntos de control de las consultas.

      5. Seleccione una o más bases de datos o tablas de AWS Glue para definir qué datos se pueden consultar. Si aún no se han creado las tablas, proporcione acceso a la base de datos predeterminada.

    2. Si desea utilizar un rol existente que usted administra, siga estos pasos:

      1. Seleccione Usar un rol existente.

      2. Seleccione un rol existente en el menú desplegable.

    nota

    Cuando utilice su propio rol, debe asegurarse de que tiene todos los permisos requeridos. Para ello, adjunte las políticas necesarias desde la consola de IAM. Para obtener más información, consulte el ejemplo de política en Permisos necesarios para los roles de IAM creados manualmente.

  9. Elija Configurar. Esto abre la pantalla de detalles del origen de datos con una URL de OpenSearch Dashboards. Puede navegar hasta esta URL para completar los siguientes pasos.

Utilice la operación de la API AddDataSource para crear un nuevo origen de datos en su dominio.

POST https://es.region.amazonaws.com/2021-01-01/opensearch/domain/domain-name/dataSource { "DataSourceType": { "S3GlueDataCatalog": { "RoleArn": "arn:aws:iam::account-id:role/role-name" } } "Description": "data-source-description", "Name": "my-data-source" }

Pasos a seguir a continuación

Visitar OpenSearch Dashboards

Después de crear un origen de datos, OpenSearch Service le proporciona un enlace a OpenSearch Dashboards. Puede utilizar esto para configurar el control de acceso, definir tablas, instalar integraciones listas para usar y consultar sus datos.

Para obtener más información, consulte Configuración y consulta de un origen de datos de S3 en OpenSearch Dashboards.

Asignar el rol de AWS Glue Data Catalog

Si ha habilitado el control de acceso detallado después de crear un origen de datos, debe asignar los usuarios que no sean administradores a un rol de IAM con acceso a AWS Glue Data Catalog para poder ejecutar consultas directas. Para crear manualmente un rol glue_access de backend que pueda asignar al rol de IAM, siga estos pasos:

nota

Los índices se utilizan para cualquier consulta realizada en el origen de datos. Un usuario con acceso de lectura al índice de solicitudes de un origen de datos determinado puede leer todas las consultas realizadas en ese origen de datos. Un usuario con acceso de lectura al índice de resultados puede leer los resultados de todas las consultas realizadas en ese origen de datos.

  1. Permanezca en el menú principal de OpenSearch Dashboards y elija Seguridad, Roles, Crear roles.

  2. Asigne el rol glue_access.

  3. En Permisos de clúster, seleccione indices:data/write/bulk*, indices:data/read/scroll, indices:data/read/scroll/clear.

  4. En Índice, introduzca los siguientes índices a los que quiere conceder acceso al usuario con el rol:

    • .query_execution_request_<name of data source>

    • query_execution_result_<name of data source>

    • .async-query-scheduler

    • flint_*

  5. En Permisos de índice, seleccione indices_all.

  6. Elija Crear.

  7. Seleccione Usuarios asignados, Administrar mapeo.

  8. En Roles de backend, agregue el ARN del rol de AWS Glue que necesita permiso para llamar a su dominio.

    arn:aws:iam::account-id:role/role-name
  9. Seleccione Asignar y confirme que el rol aparece en Usuarios asignados.

Para obtener más información sobre la asignación de roles, consulte Mapear roles a usuarios.

Recursos adicionales

Permisos necesarios para los roles de IAM creados manualmente

Al crear un origen de datos para su dominio, elige un rol de IAM para administrar el acceso a sus datos. Dispone de dos opciones para hacerlo:

  1. Crear un nuevo rol de IAM automáticamente

  2. Utilizar un rol de IAM creado manualmente

Si utiliza un rol creado manualmente, debe asociar los permisos correctos al rol. Los permisos del rol deben permitir el acceso al origen de datos específico y permitir que OpenSearch Service asuma el rol. Esto es necesario para que OpenSearch Service pueda acceder de forma segura a los datos e interactuar con ellos.

El siguiente ejemplo de política muestra los permisos con privilegios mínimos necesarios para crear y administrar un origen de datos. Si tiene permisos más generales, como s3:* o la política de AdminstratorAccess, estos engloban los permisos con privilegios mínimos de la política de ejemplo.

En la siguiente política de ejemplo, reemplace el texto de marcador con su información, según corresponda.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"HttpActionsForOpenSearchDomain", "Effect":"Allow", "Action":"es:ESHttp*", "Resource":"arn:aws:es:us-east-1:111122223333:domain/example.com/*" }, { "Sid":"AmazonOpenSearchS3GlueDirectQueryReadAllS3Buckets", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:ListBucket" ], "Condition":{ "StringEquals":{ "aws:ResourceAccount":"111122223333" } }, "Resource":"*" }, { "Sid":"AmazonOpenSearchDirectQueryGlueCreateAccess", "Effect":"Allow", "Action":[ "glue:CreateDatabase", "glue:CreatePartition", "glue:CreateTable", "glue:BatchCreatePartition" ], "Resource":"*" }, { "Sid":"AmazonOpenSearchS3GlueDirectQueryModifyAllGlueResources", "Effect":"Allow", "Action":[ "glue:DeleteDatabase", "glue:DeletePartition", "glue:DeleteTable", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartition", "glue:GetPartitions", "glue:GetTable", "glue:GetTableVersions", "glue:GetTables", "glue:UpdateDatabase", "glue:UpdatePartition", "glue:UpdateTable", "glue:BatchGetPartition", "glue:BatchDeletePartition", "glue:BatchDeleteTable" ], "Resource":[ "arn:aws:glue:us-east-1:111122223333:table/*", "arn:aws:glue:us-east-1:111122223333:database/*", "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:es:us-east-1:111122223333:domain/domain_name" ], "Condition":{ "StringEquals":{ "aws:ResourceAccount":"111122223333" } } }, { "Sid":"ReadAndWriteActionsForS3CheckpointBucket", "Effect":"Allow", "Action":[ "s3:ListMultipartUploadParts", "s3:DeleteObject", "s3:GetObject", "s3:PutObject", "s3:GetBucketLocation", "s3:ListBucket" ], "Condition":{ "StringEquals":{ "aws:ResourceAccount":"111122223333" } }, "Resource":[ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Para admitir buckets de Amazon S3 en diferentes cuentas, tendrá que incluir una condición en la política de Amazon S3 y agregar la cuenta adecuada.

En la siguiente condición de ejemplo, reemplace el texto de marcador con su información, según corresponda.

"Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" }

El rol debe tener la siguiente política de confianza, que especifica el ID de destino.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service": "directquery.opensearchservice.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

Para obtener instrucciones sobre cómo crear los roles, consulte Creación de un rol mediante políticas de confianza personalizadas.

Si tiene habilitado el control de acceso detallado en OpenSearch Service, se creará automáticamente un nuevo rol de control de acceso detallado de OpenSearch para su origen de datos. El nombre del nuevo rol de control de acceso detallado será AWSOpenSearchDirectQuery <name of data source>.

De forma predeterminada, el rol solo tiene acceso a los índices de orígenes de datos de consulta directa. Si bien puede configurar el rol para limitar o conceder el acceso a su origen de datos, se recomienda no ajustar el acceso de este rol. Si elimina el origen de datos, se eliminará este rol. Esto eliminará el acceso de los demás usuarios si están asignados al rol.