

# Requisitos previos para configurar una integración sin ETL
<a name="zero-etl-prerequisites"></a>

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.

**Topics**
+ [Configuración de los recursos de origen](#zero-etl-setup-source-resources)
+ [Configuración de los recursos de destino](#zero-etl-setup-target-resources)
+ [Creación de un almacenamiento de datos de Amazon Redshift](#zero-etl-setup-target-redshift-data-warehouse)
+ [Configuración de una VPC en su integración sin ETL](#zero-etl-setup-vpc)
+ [Configuración de una integración sin ETL entre cuentas](#zero-etl-setup-cross-account-integration)

## Configuración de los recursos de origen
<a name="zero-etl-setup-source-resources"></a>

Realice en el origen las siguientes tareas de configuración según sea necesario.

### Configuración del rol de origen
<a name="zero-etl-setup-source-role"></a>

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](zero-etl-sources.md).

Cree un rol que tenga permisos para que la integración acceda a la conexión:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GlueConnections",
            "Effect": "Allow",
            "Action": [
                "glue:GetConnections",
                "glue:GetConnection"
            ],
            "Resource": [
							"arn:aws:glue:*:111122223333:catalog",
							"arn:aws:glue:us-east-1:111122223333:connection/*"
            ]
        },
        {
            "Sid": "GlueActionBasedPermissions",
            "Effect": "Allow",
            "Action": [
                "glue:ListEntities",
                "glue:RefreshOAuth2Tokens"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

Política de confianza:

------
#### [ JSON ]

****  

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

------

## Configuración de los recursos de destino
<a name="zero-etl-setup-target-resources"></a>

Realice las siguientes tareas de configuración según sea necesario para el destino de integración del almacén de datos de AWS Glue Data Catalog o de Amazon Redshift.

Para integraciones con un destino de base de datos de AWS Glue:
+ [Configuración de una base de datos de AWS Glue](#zero-etl-setup-target-resources-glue-database)
+ [Cómo proporcionar una política de acceso basado en recursos (RBAC) al catálogo](#zero-etl-setup-target-resources-rbac-policy)
+ [Creación de un rol de IAM de destino](#zero-etl-setup-target-resources-target-iam-role)

Para integraciones con un destino de almacén de datos de Amazon Redshift:
+ [https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html#zero-etl-setup-target-redshift-data-warehouse](https://docs.aws.amazon.com/glue/latest/dg/zero-etl-prerequisites.html#zero-etl-setup-target-redshift-data-warehouse)

### Configuración de una base de datos de AWS Glue
<a name="zero-etl-setup-target-resources-glue-database"></a>

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:

1. En la página de inicio de la consola de AWS Glue, seleccione **Base de datos** en el catálogo de datos.

1. 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.

1. Introduzca un nombre y una **ubicación** (URI de Amazon 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](https://docs.aws.amazon.com/glue/latest/dg/start-data-catalog.htm).

También puede usar la CLI de [https://docs.aws.amazon.com/cli/latest/reference/glue/create-database.html](https://docs.aws.amazon.com/cli/latest/reference/glue/create-database.html) para crear la base de datos en AWS Glue. Tenga en cuenta que es necesario incluir `LocationUri` en `--database-input`.

#### Optimización de las tablas de Iceberg
<a name="zero-etl-common-setup-table-optimization"></a>

Una vez que 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](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html).

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](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html).

### Cómo proporcionar una política de acceso basado en recursos (RBAC) al catálogo
<a name="zero-etl-setup-target-resources-rbac-policy"></a>

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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Principal": {
        "AWS": [
        	"arn:aws:iam::123456789012:user/Alice"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:CreateInboundIntegration"
      ],
      "Resource": [
      	"arn:aws:glue:us-east-1:111122223333:catalog",
				"arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
      ],
      "Condition": {
        "StringLike": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    },
    {
      "Principal": {
        "Service": [
          "glue.amazonaws.com"
        ]
      },
      "Effect": "Allow",
      "Action": [
        "glue:AuthorizeInboundIntegration"
      ],
      "Resource": [
      	"arn:aws:glue:us-east-1:111122223333:catalog",
				"arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
      ],
      "Condition": {
        "StringEquals": {
        "aws:SourceArn": "arn:aws:dynamodb:us-east-1:444455556666:table/<table-name>"
        }
      }
    }
  ]
}
```

------

### Creación de un rol de IAM de destino
<a name="zero-etl-setup-target-resources-target-iam-role"></a>

Cree un rol de IAM de destino con los siguientes permisos y relaciones de confianza:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/prefix/*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "glue:GetDatabase"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:catalog",
                "arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "glue:CreateTable",
                "glue:GetTable",
                "glue:GetTables",
                "glue:DeleteTable",
                "glue:UpdateTable",
                "glue:GetTableVersion",
                "glue:GetTableVersions",
                "glue:GetResourcePolicy"
            ],
            "Resource": [
                "arn:aws:glue:us-east-1:111122223333:catalog",
                "arn:aws:glue:us-east-1:111122223333:database/DatabaseName",
                "arn:aws:glue:us-east-1:111122223333: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:

------
#### [ JSON ]

****  

```
{
  "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
<a name="zero-etl-setup-target-redshift-data-warehouse"></a>

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](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-console-workgroups-create-workgroup-wizard.html). Para crear un clúster de Amazon Redshift, consulte [Creación de un clúster](https://docs.aws.amazon.com/redshift/latest/mgmt/create-cluster.html).

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](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-setting-up.case-sensitivity.html) 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 almacén de datos. Para obtener más información, consulte [Introducción a las integraciones sin ETL](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.setting-up.html) en la Guía de administración de Amazon Redshift.

## Configuración de una VPC en su integración sin ETL
<a name="zero-etl-setup-vpc"></a>

Para configurar una VPC en su integración sin ETL:

1. Vaya a **VPC** > Sus VPC y seleccione **Crear VPC**.

   1. Seleccione **VPC y más**.

   1. Establezca el nombre de la VPC.

   1. Configure el CIDR de IPv4: 10.0.0.0/16.

   1. Establezca el número de AZ en 1.

   1. Establezca el número de subredes públicas y privadas en 1.

   1. Establezca **las puertas de enlace NAT** en Ninguna.

   1. Establezca los **puntos de conexión de VPC** en Puerta de enlace de S3.

   1. Habilite los nombres de host DNS y la resolución de DNS.

1. Vaya a **Puntos de conexión** y elija **Crear punto de conexión**.

1. Cree puntos de conexión para estos servicios en la subred privada de su VPC (utilice el grupo de seguridad predeterminado):

   1. com.amazonaws.us-east-1.lambda

   1. com.amazonaws.us-east-1.glue

   1. com.amazonaws.us-east-1.sts

Creación de la conexión de AWS Glue

1. Vaya a **AWS Glue** > **Conexiones de datos** y seleccione **Crear conexión**.

1. Elija **Red**.

1. Seleccione la VPC, la subred (privada) y el grupo de seguridad predeterminado que creó.

### Configuración del rol de destino para la VPC
<a name="zero-etl-setup-vpc-target-role"></a>

El rol de destino debe tener los siguientes permisos (además del resto de permisos que requieren las integraciones sin ETL):

------
#### [ JSON ]

****  

```
{
  "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
<a name="zero-etl-setup-vpc-target-leg"></a>



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 name="zero-etl-setup-vpc-client-errors"></a>

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. | Actualizar la conexión de AWS Glue | 
| 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. | Actualizar la conexión de AWS Glue | 
| 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
<a name="zero-etl-setup-cross-account-integration"></a>

Para configurar una integración sin ETL entre cuentas:

1. 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](#zero-etl-setup-target-resources-rbac-policy). Asegúrese de que el rol de la cuenta de origen esté explícitamente permitido en el recurso de destino.

1. Compruebe que el rol de la cuenta de origen (el rol que se utiliza para crear la integración) tenga lo siguiente:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt123456789012",
               "Action": [
                   "glue:CreateInboundIntegration"
               ],
               "Effect": "Allow",
               "Resource": [
               	"arn:aws:glue:us-east-1:111122223333:catalog",
   							"arn:aws:glue:us-east-1:111122223333:database/DatabaseName"
               ]
           }
       ]
   }
   ```

------

1. Cree la integración, tal y como se describe en [Creación de una integración](zero-etl-common-integration-tasks.md#zero-etl-creating).