Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la publicación del blog
Consulta de tablas de Amazon S3 desde Amazon Redshift
Amazon Redshift se integra con los buckets de tablas de Amazon S3, lo que le permite acceder a los recursos de las tablas de S3 mediante Amazon Redshift. Tanto si acaba de empezar como si gestiona miles de tablas en su entorno Iceberg, los buckets de tablas simplifican la gestión del lago de datos a cualquier escala. Para obtener más información, consulte buckets de tabla.
En este tema se describe cómo empezar a utilizar tablas de Amazon S3 y Redshift, así como a acceder a los objetos de tablas de S3 mediante Amazon Redshift.
Requisitos previos
Antes de consultar las tablas de S3 desde Amazon Redshift, debe integrar las tablas de S3 con AWS Glue Data Catalog. Para obtener instrucciones, consulte Integración de tablas de Amazon S3 con AWS Glue Data Catalog.
Una vez que las tablas de S3 se haya integrado con AWS Glue Data Catalog, las entidades principales de IAM con las tablas de S3 y los permisos de IAM de AWS Glue necesarios pueden detectar tablas de S3 a través de AWS Glue Data Catalog.
nota
El método 3 (awsdatacatalog montado automáticamente) tiene requisitos previos adicionales. Para obtener más información, consulte Método 3: awsdatacatalog montado automáticamente.
Consulta de tablas de S3 desde Amazon Redshift
Para comenzar las consultas de tablas de S3, siga estos pasos:
Paso 1: Crear un rol de IAM para Amazon Redshift
Paso 2: Asociar el rol de IAM a su clúster de Amazon Redshift
Paso 3: Consulta de tablas de S3 desde Amazon Redshift
Paso 1: Crear un rol de IAM para Amazon Redshift
Su clúster necesita autorización para acceder al catálogo externo de tablas de S3 en AWS Glue. Para proporcionar dicha autorización, Amazon Redshift utiliza un rol de IAM asociado a su clúster. Cree un rol de IAM con los siguientes permisos de política.
nota
En la política y los ejemplos que figuran a continuación, sustituya us-west-2 con su región de AWS y 111122223333 con su ID de cuenta de AWS.
Para crear una política:
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. En el panel de navegación, seleccione Políticas.
Elija Crear política.
Seleccione la pestaña JSON.
Pegue el siguiente documento de política JSON:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataCatalogPermissions", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable" ], "Resource": [ "arn:aws:glue:us-west-2:111122223333:catalog", "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog", "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog/*", "arn:aws:glue:us-west-2:111122223333:database/s3tablescatalog/*/*", "arn:aws:glue:us-west-2:111122223333:table/s3tablescatalog/*/*/*", "arn:aws:glue:us-west-2:111122223333:database/*", "arn:aws:glue:us-west-2:111122223333:table/*/*" ] }, { "Sid": "S3TablesDataAccessPermissions", "Effect": "Allow", "Action": [ "s3tables:GetTableBucket", "s3tables:GetNamespace", "s3tables:GetTable", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData", "s3tables:ListTableBuckets", "s3tables:CreateTable", "s3tables:PutTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:ListNamespaces", "s3tables:ListTables", "s3tables:DeleteTable" ], "Resource": [ "arn:aws:s3tables:us-west-2:111122223333:bucket/*", "arn:aws:s3tables:us-west-2:111122223333:bucket/*/table/*" ] } ] }Elija Revisar política.
En la página Revisar política, introduzca
GlueCatalogS3Tables_Policyen Nombre. Si lo desea, introduzca una descripción. Revise el resumen de la política y, a continuación, elija Crear política.
Para crear un rol de IAM para Amazon Redshift:
Abra la consola de IAM
. Seleccione Roles en el panel de navegación.
Elija Creación de rol.
Elija Servicio de AWS como entidad de confianza y, a continuación, elija Redshift como caso de uso.
En Caso de uso para otros servicios de AWS, elija Redshift - Personalizable y, a continuación, elija Siguiente.
En la página Añadir permisos, asocie la política
GlueCatalogS3Tables_Policyque creó anteriormente. Elija Siguiente.En Role Name (Nombre de la función), escriba un nombre para la función; por ejemplo,
RedshiftS3TablesRole.Revise la información y seleccione Crear rol.
Seleccione Roles en el panel de navegación. Elija el nombre del nuevo rol para ver el resumen y, a continuación, copie el ARN del rol en el portapapeles. Utilizará este ARN al crear esquemas externos para los espacios de nombres de las tablas de S3.
nota
Limite la búsqueda a recursos específicos sustituyendo el comodín por nombres exactos de recursos de Amazon (ARN).
Paso 2: Asociar el rol de IAM a su clúster de Amazon Redshift
Asocie el rol de IAM que ha configurado en el paso 1 a su clúster de Amazon Redshift.
Uso de la consola de administración de AWS:
Inicie sesión en la consola de administración de AWS y abra la consola de Amazon Redshift en https://console.aws.amazon.com/redshiftv2/
. En el menú de navegación, elija Clusters (Clústeres) y elija el clúster que desee actualizar.
En Acciones, seleccione Administrar roles de IAM para mostrar la lista actual de roles de IAM asociados al clúster.
En la página Administrar roles de IAM, seleccione el rol de IAM disponible que desea agregar y, a continuación, seleccione Agregar el rol de IAM.
Seleccione Done (Aceptar) para guardar los cambios.
Uso de AWS CLI:
Ejecute el siguiente comando para asociar un rol de IAM a un clúster o espacio de nombres existente. Reemplace my-redshift-cluster o my-redshift-namespace por el espacio de nombres o el identificador del clúster y 111122223333 por su ID de cuenta de AWS.
aws redshift modify-cluster-iam-roles \ --cluster-identifier my-redshift-cluster \ --add-iam-roles arn:aws:iam::111122223333:role/RedshiftS3TablesRole -- for serverless aws redshift-serverless update-namespace \ --namespace-name my-redshift-namespace \ --iam-roles "arn:aws:iam::111122223333:role/RedshiftS3TablesRole"
Para obtener más información, consulte Asociación de roles de IAM a los clústeres en la Guía de administración de Amazon Redshift.
Paso 3: Consulta de tablas de S3 desde Amazon Redshift
Al integrar las tablas de S3 con AWS Glue Data Catalog, el servicio crea una estructura de catálogo federada que asigna los recursos de las tablas de S3 a los objetos del catálogo de AWS Glue:
Un bucket de tablas de S3 se convierte en un catálogo en AWS Glue Data Catalog.
Un espacio de nombres de S3 se convierte en una base de datos de AWS Glue.
Una tabla de S3 se convierte en un objeto de tabla de AWS Glue.
La integración crea la siguiente jerarquía:
Catálogo federado:
s3tablescatalog(creado automáticamente)Catálogos secundarios: cada bucket de tabla de S3 se convierte en un catálogo secundario en
s3tablescatalog.Bases de datos: cada espacio de nombres de S3 dentro de un bucket de tabla se convierte en una base de datos.
Tablas: cada tabla de S3 dentro de un espacio de nombres se convierte en una tabla.
Por ejemplo, si tiene un bucket de tabla de S3 denominado analytics-bucket con un espacio de nombres sales que contiene una tabla transactions, la ruta completa en AWS Glue Data Catalog sería: s3tablescatalog/analytics-bucket/sales/transactions.
Crear un recurso compartido
Antes de utilizar cualquiera de los tres métodos de consulta que se indican a continuación, debe crear un enlace de recurso en AWS Glue Data Catalog. Los enlaces a recursos permiten a Amazon Redshift consultar las bases de datos de tablas de S3 a través del catálogo estándar.
Uso de la consola de AWS Glue:
Abra la consola de AWS Glue en https://console.aws.amazon.com/glue/
. En el panel de navegación, elija Databases (Bases de datos).
Elija Crear y, a continuación, elija el Enlace del recurso.
En la página Crear enlace de recursos, proporcione la siguiente información:
Nombre del enlace del recurso: introduzca un nombre para el enlace del recurso (por ejemplo,
sales_resource_link).Base de datos compartida: introduzca la ruta de la base de datos de tablas de S3 (por ejemplo,
s3tablescatalog/analytics-bucket/sales).Propietario de la base de datos compartida: introduzca su ID de cuenta de AWS.
SID de catálogo de la base de datos compartida: introduzca el ID del catálogo en el formato
<account-id>:s3tablescatalog/<bucket-name>.
Seleccione Crear.
Uso de AWS CLI:
aws glue create-database \ --region us-west-2 \ --cli-input-json '{ "CatalogId": "111122223333", "DatabaseInput": { "Name": "sales_resource_link", "TargetDatabase": { "CatalogId": "111122223333:s3tablescatalog/analytics-bucket", "DatabaseName": "sales" } } }'
Este comando crea un enlace de recurso denominado sales_resource_link en su catálogo de datos de AWS Glue que apunta a la base de datos de sales en el bucket de la tabla de S3 del analytics-bucket.
Una vez creados los enlaces a los recursos, Amazon Redshift ofrece tres métodos para consultar las tablas de S3. Elija el método que mejor se adapte a su caso de uso.
nota
Para crear un enlace de recurso en el nivel de la base de datos, el administrador de Redshift debe tener el permiso de AWS Glue:CreateDatabase sobre el catálogo predeterminado y la base de datos que se va a crear.
Método 1: CREAR UN ESQUEMA EXTERNO
Utilice CREATE EXTERNAL SCHEMA para crear un esquema externo que haga referencia a la base de datos de la tabla de S3. Este método proporciona un control explícito sobre la denominación y la configuración del esquema.
Para obtener información completa sobre la sintaxis, consulte CREAR UN ESQUEMA EXTERNO en la Guía para desarrolladores de bases de datos Amazon Redshift.
Ejemplo
Utilice el nombre de la base de datos y el ID del catálogo del paso 3. Reemplace 111122223333 por su ID de cuenta de AWS.
CREATE EXTERNAL SCHEMA s3tables_schema FROM DATA CATALOG DATABASE 'sales_resource_link' IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole' REGION 'us-west-2' CATALOG_ID '111122223333'; SELECT * FROM s3tables_schema.transactions;
Método 2: CREAR BASE DE DATOS DESDE ARN
Utilice CREATE DATABASE con la cláusula FROM ARN para crear una base de datos federada que haga referencia directa a su enlace de recurso de AWS Glue. Este método asigna automáticamente la base de datos de AWS Glue a una base de datos Redshift.
Para obtener información completa sobre la sintaxis, consulte CREAR BASE DE DATOS en la Guía para desarrolladores de bases de datos de Amazon Redshift.
Ejemplo
Reemplace 111122223333 por su ID de cuenta de AWS.
CREATE DATABASE s3tables_db FROM ARN 'arn:aws:glue:us-west-2:111122223333:database/sales_resource_link' WITH DATA CATALOG SCHEMA analytics_schema IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole'; SELECT * FROM s3tables_db.analytics_schema.transactions;
Método 3: awsdatacatalog montado automáticamente
Amazon Redshift puede montar automáticamente bases de datos de AWS Glue Data Catalog, incluidos los enlaces a recursos de tablas de S3, a través de la base de datos de awsdatacatalog. Este método requiere que el acceso federado a Spectrum (FAS) esté habilitado en el clúster.
Requisitos previos
Para usar la base de datos de awsdatacatalog montada automáticamente, debe habilitar el acceso federado a Spectrum. Esto permite a Amazon Redshift utilizar credenciales de identidad federadas para acceder a AWS Glue Data Catalog y orígenes de datos externos.
Para habilitar el acceso federado a Spectrum:
Conéctese a su clúster de Redshift mediante una identidad de IAM con los siguientes permisos:
redshift:GetClusterCredentialsWithIAM(para clústeres aprovisionados) oredshift-serverless:GetCredentials(para versiones sin servidor)AmazonS3ReadOnlyAccessAWSGlueConsoleFullAccessPermisos de tablas S3 (según se define en el paso 1)
Cuando se conecta con una identidad de IAM, Amazon Redshift crea automáticamente un usuario de base de datos con el prefijo
IAM:(para usuarios) oIAMR:(para roles).Como administrador del clúster, conceda al usuario federado permisos para acceder al esquema externo. Sustituya
my_userpor el rol de IAM o el nombre de usuario.GRANT ALL ON SCHEMA awsdatacatalog TO "IAMR:my_user";
Para obtener instrucciones detalladas sobre cómo configurar el acceso federado, consulte Uso de una identidad federada para administrar el acceso de Amazon Redshift a los recursos locales y a las tablas externas de Amazon Redshift Spectrum en la Guía de administración de Amazon Redshift.
Consulta de tablas de S3
Una vez configurado el acceso federado, verifique los esquemas montados y consulte las tablas de S3.
Verifique los esquemas montados:
SHOW SCHEMAS FROM DATABASE awsdatacatalog;
Consulte las tablas de S3 utilizando el nombre del enlace de recurso del paso 3:
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;