La configuración de una integración entre el origen y el destino requiere algunos requisitos previos, como la configuración de los roles de IAM, que AWS Glue utiliza para acceder a los datos del origen y escribir en el destino, y el uso de claves KMS para cifrar los datos en la ubicación intermedia o de destino.
Temas
Configuración de los recursos de origen
Realice en el origen las siguientes tareas de configuración según sea necesario.
Configuración del rol de origen
En esta sección se describe cómo se transfiere un rol de origen para permitir que la integración sin ETL acceda a la conexión. Esto también se aplica solo a los orígenes de SaaS.
nota
Para restringir el acceso a unas pocas conexiones, primero puede crear la conexión para obtener el ARN de conexión. Consulte Configuración de un origen para una integración sin ETL.
Cree un rol que tenga permisos para que la integración acceda a la conexión:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GlueConnections",
"Effect": "Allow",
"Action": [
"glue:GetConnections",
"glue:GetConnection"
],
"Resource": [
"arn:aws:glue:*:<accountId>:catalog",
"arn:aws:glue:us-east-1:<accountId>:connection/*"
]
},
{
"Sid": "GlueActionBasedPermissions",
"Effect": "Allow",
"Action": [
// Fetch entities:
"glue:ListEntities",
// Refresh connection credentials:
"glue:RefreshOAuth2Tokens"
],
"Resource": [
"*"
]
}
]
}
Política de confianza:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"glue.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Configuración de los recursos de destino
Realice las siguientes tareas de configuración según sea necesario para el destino de integración del almacenamiento de datos de Data Catalog de AWS Glue o Amazon Redshift.
Para integraciones con un destino de base de datos de AWS Glue:
En el caso de las integraciones con un objetivo de almacenamiento de datos de Amazon Redshift:
Configuración de una base de datos de AWS Glue
Para las integraciones que utilizan una base de datos de AWS Glue:
Para configurar una base de datos de destino en el catálogo de datos de AWS Glue con una ubicación de Amazon S3:
En la página de inicio de la consola de AWS Glue, seleccione Base de datos en el catálogo de datos.
Seleccione Añadir base de datos en la parte superior derecha. Si ya ha creado una base de datos, asegúrese de que la ubicación con el URI de Amazon S3 esté configurada para la base de datos.
Introduzca un nombre y una ubicación (URI de S3). Tenga en cuenta que la ubicación es necesaria para la integración sin ETL. Haga clic en Crear base de datos cuando haya terminado.
nota
El bucket de Amazon S3 debe estar en la misma región que la base de datos de AWS Glue.
Para obtener información sobre cómo crear una nueva base de datos en AWS Glue, consulte Introducción al catálogo de datos de AWS Glue.
También puede usar la CLI de create-database
para crear la base de datos en AWS Glue. Tenga en cuenta que es obligatorio incluir LocationUri
en --database-input
.
Optimización de las tablas de Iceberg
Una vez AWS Glue cree una tabla en la base de datos de destino, puede habilitar la compactación para acelerar las consultas en Amazon Athena. Para obtener información sobre cómo configurar los recursos (rol de IAM) para la compactación, consulte los requisitos previos de optimización de la tabla.
Para obtener más información sobre cómo configurar la compactación en la tabla de AWS Glue que creó la integración, consulte Optimización de las tablas de Iceberg.
Cómo proporcionar una política de acceso basado en recursos (RBAC) al catálogo
En el caso de las integraciones que utilizan una base de datos de AWS Glue, añada los siguientes permisos a la política de RBAC del catálogo para permitir las integraciones entre el origen y el destino.
nota
Para las integraciones entre cuentas, tanto la política de roles de Alice (el usuario que crea la integración) como la política de recursos del catálogo deben permitir glue:CreateInboundIntegration
en el recurso. En el caso de que sean las mismas cuentas, basta con una política de recursos o una política de roles que permita glue:CreateInboundIntegration
en el recurso. Aun así, es necesario que ambos escenarios permitan glue.amazonaws.com
en glue:AuthorizeInboundIntegration
.
Puede acceder a la configuración del catálogo en Catálogo de datos. A continuación, proporcione los siguientes permisos y rellene la información que falta.
{
"Version": "2012-10-17",
"Statement": [
{ // Allow Alice to create Integration on Target Database
"Principal": {
"AWS": [
"arn:aws:iam::<source-account-id>:user/Alice"
]
},
"Effect": "Allow",
"Action": [
"glue:CreateInboundIntegration"
],
"Resource": [
"arn:aws:glue:<region>:<Target-Account-Id>:catalog",
"arn:aws:glue:<region>:<Target-Account-Id>:database/DatabaseName"
],
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:dynamodb:<region>:<Account>:table/<table-name>"
}
}
},
{ // Allow Glue to Authorize the Inbound Integration on behalf of Bob
"Principal": {
"Service": [
"glue.amazonaws.com"
]
},
"Effect": "Allow",
"Action": [
"glue:AuthorizeInboundIntegration"
],
"Resource": [
"arn:aws:glue:<region>:<Target-Account-Id>:catalog",
"arn:aws:glue:<region>:<Target-Account-Id>:database/DatabaseName"
],
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:dynamodb:<region>:<account-id>:table/<table-name>"
}
}
}
]
}
Creación de un rol de IAM de destino
Cree un rol de IAM de destino con los siguientes permisos y relaciones de confianza:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<target iceberg table s3 bucket>",
"Effect": "Allow"
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::<target iceberg table s3 bucket>/prefix/*",
"Effect": "Allow"
},
{
"Action": [
"glue:GetDatabase"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/DatabaseName"
],
"Effect": "Allow"
},
{
"Action": [
"glue:CreateTable",
"glue:GetTable",
"glue:UpdateTable",
"glue:GetTableVersion",
"glue:GetTableVersions",
"glue:GetResourcePolicy"
],
"Resource": [
"arn:aws:glue:<region>:<account-id>:catalog",
"arn:aws:glue:<region>:<account-id>:database/<DatabaseName>",
"arn:aws:glue:<region>:<account-id>:table/<DatabaseName>/*"
],
"Effect": "Allow"
},
{
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"cloudwatch:namespace": "AWS/Glue/ZeroETL"
}
},
"Effect": "Allow"
},
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Agregue la siguiente política de confianza para permitir que el servicio AWS Glue asuma el rol:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Creación de un almacenamiento de datos de Amazon Redshift
Si su destino de integración sin ETL es un almacenamiento de datos de Amazon Redshift, cree el almacenamiento de datos si aún no tiene uno. Para crear un grupo de trabajo de Amazon Redshift sin servidor, consulte Creación de un grupo de trabajo con un espacio de nombres. Para crear un clúster de Amazon Redshift, consulte Creación de un clúster.
Para que la integración funcione, el clúster o el grupo de trabajo de Amazon Redshift de destino debe tener el parámetro enable_case_sensitive_identifier
activado. Para obtener más información sobre cómo habilitar la distinción entre mayúsculas y minúsculas, consulte Turn on case sensitivity for your data warehouse en la Guía de administración de Amazon Redshift.
Una vez completada la configuración del grupo de trabajo o clúster de Amazon Redshift, debe configurar el almacenamiento de datos. Para obtener más información, consulte Introducción a las integraciones sin ETL en la Guía de administración de Amazon Redshift.
Configuración de una VPC en su integración sin ETL
Para configurar una VPC en su integración sin ETL:
Vaya a VPC > Sus VPC y seleccione Crear VPC.
Seleccione VPC y más.
Establezca el nombre de la VPC.
Configure el CIDR de IPv4: 10.0.0.0/16.
Establezca el número de AZ en 1.
Establezca el número de subredes públicas y privadas en 1.
Establezca las puertas de enlace NAT en Ninguna.
Establezca los puntos de conexión de VPC en Puerta de enlace de S3.
Habilite los nombres de host DNS y la resolución de DNS.
Vaya a Puntos de conexión y elija Crear punto de conexión.
Cree puntos de conexión para estos servicios en la subred privada de su VPC (utilice el grupo de seguridad predeterminado):
com.amazonaws.us-east-1.lambda
com.amazonaws.us-east-1.glue
com.amazonaws.us-east-1.sts
Creación de la conexión de AWS Glue
Vaya a AWS Glue > Conexiones de datos y seleccione Crear conexión.
Elija Red.
Seleccione la VPC, la subred (privada) y el grupo de seguridad predeterminado que creó.
Configuración del rol de destino para la VPC
El rol de destino debe tener los siguientes permisos (además del resto de permisos que requieren las integraciones sin ETL):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CustomerVpc",
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeRouteTables",
"ec2:DescribeVpcEndpoints",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"glue:GetConnection"
],
"Resource": [
"*"
]
}
]
}
Configuración de las propiedades de los recursos del tramo de destino
Si utiliza la CLI, establezca las propiedades de recursos del tramo de destino en la base de datos de AWS Glue de destino que creó. Pase el ARN del rol de destino, así como el nombre de la conexión de AWS Glue.
aws glue create-integration-resource-property \
--resource-arn arn:aws:glue:us-east-1:<account-id>:database/exampletarget \
--target-processing-properties '{"RoleArn" : "arn:aws:iam::<account-id>:role/example-role", "ConnectionName":"example-vpc-3"}' \
--endpoint-url https://example.amazonaws.com --region us-east-1
Posibles errores de cliente
A continuación, se muestra una serie de posibles errores de cliente para una integración que se haya configurado con una VPC.
Mensaje de error | Acción requerida |
---|---|
El rol proporcionado no está autorizado para ejecutar glue:GetConnection en la conexión. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
El rol proporcionado no tiene permiso para ejecutar ec2:DescribeSubnets. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
El rol proporcionado no está autorizado para ejecutar ec2:DescribeSecurityGroups. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
El rol proporcionado no está autorizado para ejecutar ec2:DescribeVpcEndpoints. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
El rol proporcionado no está autorizado para ejecutar ec2:DescribeRouteTables. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
El rol proporcionado no está autorizado para ejecutar ec2:CreateTags. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
El rol proporcionado no está autorizado para ejecutar ec2:CreateNetworkInterface. Agregue este permiso a la política de roles y, a continuación, espere a que se recupere la integración. | Actualización de la política de roles |
La subred de conexión proporcionada no contiene un punto de conexión S3 o una puerta de enlace NAT válidos. Actualice la subred y, a continuación, espere a que se recupere la integración. | Actualización de los puntos de conexión de la subred de la VPC |
No se encontró la subred de conexión. Actualice la subred de la conexión y, a continuación, espere a que se recupere la integración. | Actualice la conexión de &GLU; |
No se encontró el grupo de seguridad de conexión. Actualice el grupo de seguridad de la conexión y, a continuación, espere a que se recupere la integración. | Actualice la conexión de &GLU; |
No se puede conectar a S3 a través de la conexión de VPC proporcionada. Actualice las configuraciones de la subred y, a continuación, espere a que se recupere la integración. | Actualización de los puntos de conexión de la subred de la VPC |
No se puede conectar a Lambda a través de la conexión de VPC proporcionada. Actualice las configuraciones de la subred y, a continuación, espere a que se recupere la integración. | Actualización de los puntos de conexión de la subred de la VPC |
Configuración de una integración sin ETL entre cuentas
Para configurar una integración sin ETL entre cuentas:
Configure una política de recursos de destino, tal como se describe en Cómo proporcionar una política de acceso basado en recursos (RBAC) al catálogo. Asegúrese de que el rol de la cuenta de origen esté explícitamente permitido en el recurso de destino.
Compruebe que el rol de la cuenta de origen (el rol que se utiliza para crear la integración) tenga lo siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt123456789012", "Action": [ "glue:CreateInboundIntegration" ], "Effect": "Allow", "Resource": [ "arn:aws:glue:<region>:<target-account-id>:catalog", "arn:aws:glue:<region>:<target-account-id>:database/DatabaseName" ] }] }
Cree la integración, tal y como se describe en Creación de una integración.