

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.

# Convertir los procesos de ETL AWS Glue en AWS Schema Conversion Tool
<a name="CHAP-converting-aws-glue-api-process"></a>

En las siguientes secciones, encontrarás una descripción de una conversión que llama a las operaciones de la AWS Glue API en Python. Para obtener más información, consulte [Programar scripts de ETL de AWS Glue en Python](https://docs.aws.amazon.com//glue/latest/dg/aws-glue-programming-python.html) en la *Guía para desarrolladores de AWS Glue *.

**Topics**
+ [Paso 1: Crear una base de datos](#CHAP-converting-aws-glue-step-api-create-db)
+ [Paso 2: Crear una conexión](#CHAP-converting-aws-glue-step-api-connection)
+ [Paso 3: Crea un AWS Glue rastreador](#CHAP-converting-aws-glue-step-api-crawler)

## Paso 1: Crear una base de datos
<a name="CHAP-converting-aws-glue-step-api-create-db"></a>

El primer paso consiste en crear una nueva base de datos en un catálogo de AWS Glue datos mediante la [API del AWS SDK](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateDatabase.html). Al definir una tabla en el Data Catalog, la añade a una base de datos. Se utiliza una base de datos para organizar las tablas AWS Glue. 

El siguiente ejemplo muestra el `create_database` método de la API de Python para AWS Glue.

```
response = client.create_database(
    DatabaseInput={
        'Name': 'database_name’,
        'Description': 'description',
        'LocationUri': 'string',
        'Parameters': {         
            'parameter-name': 'parameter value'
        }
    }
)
```

Si utiliza Amazon Redshift, el nombre de la base de datos se forma tal y como se indica a continuación.

```
{redshift_cluster_name}_{redshift_database_name}_{redshift_schema_name}
```

El nombre completo del clúster de Amazon Redshift de este ejemplo es el siguiente.

```
rsdbb03.apq1mpqso.us-west-2.redshift.amazonaws.com
```

A continuación, se muestra un ejemplo de un nombre correcto de la base de datos. En este caso `rsdbb03` es el nombre, que es la primera parte del nombre completo del punto de enlace del clúster. La base de datos se denomina `dev` y el esquema es `ora_glue`.

```
rsdbb03_dev_ora_glue
```

## Paso 2: Crear una conexión
<a name="CHAP-converting-aws-glue-step-api-connection"></a>

Cree una nueva conexión en un Data Catalog utilizando la [API del SDK de AWS](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateConnection.html).

El siguiente ejemplo demuestra el uso del [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections.html)método de la API de Python para AWS Glue. 

 

```
response = client.create_connection(
    ConnectionInput={
        'Name': 'Redshift_abcde03.aabbcc112233.us-west-2.redshift.amazonaws.com_dev',
        'Description': 'Created from SCT',
        'ConnectionType': 'JDBC',
        'ConnectionProperties': {
            'JDBC_CONNECTION_URL': 'jdbc:redshift://aabbcc03.aabbcc112233.us-west-2.redshift.amazonaws.com:5439/dev',
            'USERNAME': 'user_name',
            'PASSWORD': 'password'
        },
        'PhysicalConnectionRequirements': {
            'AvailabilityZone': 'us-west-2c',
            'SubnetId': 'subnet-a1b23c45',
            'SecurityGroupIdList': [
                'sg-000a2b3c', 'sg-1a230b4c', 'sg-aba12c3d', 'sg-1abb2345'
            ]
        }
    }
)
```

Los parámetros que se usan en `create_connection` son los siguientes:
+ `Name` (cadena UTF-8): obligatorio. En Amazon Redshift, el nombre de la conexión se forma tal y como se indica a continuación: `Redshift_<Endpoint-name>_<redshift-database-name>`, por ejemplo:` Redshift_abcde03_dev`
+ `Description` (cadena UTF-8): su descripción de la conexión.
+ `ConnectionType` (cadena UTF-8): obligatorio. El tipo de conexión. En la actualidad, solo se admite JDBC; SFTP es incompatible.
+ `ConnectionProperties` (dict): obligatorio. Una lista de pares clave-valor utilizados como parámetros para esta conexión, incluida la URL de la conexión JDBC, el nombre de usuario y la contraseña.
+ `PhysicalConnectionRequirements` (dict): requisitos de conexión física, que incluyen lo siguiente:
  + `SubnetId` (cadena UTF-8): el ID de la subred utilizada por la conexión.
  + `SecurityGroupIdList` (lista): el ID del grupo de seguridad usado por la conexión.
  + `AvailabilityZone` (cadena UTF-8): obligatorio. La zona de disponibilidad que contiene el punto de conexión. Este parámetro se ha quedado obsoleto.

## Paso 3: Crea un AWS Glue rastreador
<a name="CHAP-converting-aws-glue-step-api-crawler"></a>

A continuación, debe crear un AWS Glue rastreador para rellenar el catálogo. AWS Glue Para obtener más información, consulte la sección de [catalogación de tablas con un rastreador](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) en la *Guía para desarrolladores de AWS Glue .*

El primer paso para añadir un rastreador consiste en crear una nueva base de datos en un Data Catalog utilizando la [API del SDK de AWS](https://docs.aws.amazon.com//glue/latest/webapi/API_CreateCrawler.html). Antes de comenzar, primero debe eliminar cualquier versión anterior de la misma versión con la operación `delete_crawler`.

Al crear el rastreador, hay que tener algunas consideraciones en cuenta:
+ Para el nombre del rastreador, utilice el formato `<redshift_node_name>_<redshift_database_name>_<redshift_shema_name>`, por ejemplo: `abcde03_dev_ora_glue`.
+ Utilice un rol de IAM que ya existe. Para obtener más información sobre la creación de roles, consulte [Creación de roles de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create.html) en la *Guía del usuario de IAM*.
+ Utilice el nombre de la base de datos que creó en los pasos anteriores.
+ Utilice el parámetro `ConnectionName`, que es obligatorio.
+ Para el parámetro `path`, utilice la ruta al destino de JDBC, por ejemplo: `dev/ora_glue/%`.

En el siguiente ejemplo se elimina un rastreador existente y, a continuación, se crea uno nuevo con la API de Python para AWS Glue. 

```
response = client.delete_crawler(
    Name='crawler_name'
)

response = client.create_crawler(
    Name='crawler_name',
    Role= ‘IAM_role’,
    DatabaseName='database_name’,
    Description='string',
    Targets={
        'S3Targets': [
            {
                'Path': 'string',
                'Exclusions': [
                    'string',
                ]
            },
        ],
        'JdbcTargets': [
            {
                'ConnectionName': ‘ConnectionName’,
                'Path': ‘Include_path’,
                'Exclusions': [
                    'string',
                ]
            },
        ]
    },
    Schedule='string',
    Classifiers=[
        'string',
    ],
    TablePrefix='string',
    SchemaChangePolicy={
        'UpdateBehavior': 'LOG'|'UPDATE_IN_DATABASE',
        'DeleteBehavior': 'LOG'|'DELETE_FROM_DATABASE'|'DEPRECATE_IN_DATABASE'
    },
    Configuration='string'
)
```

Después de crear el rastreador, ejecute un rastreador que se conecte a uno o varios almacenes de datos, determine las estructuras de datos y escriba tablas en el Data Catalog. Puede ejecutar su rastreador de manera programada, tal y como se muestra a continuación.

```
response = client.start_crawler(
    Name='string'
)
```

En este ejemplo, se utiliza Amazon Redshift como objetivo. Los tipos de datos de Amazon Redshift se asignan a AWS Glue los tipos de datos de la siguiente manera después de ejecutar el rastreador.


|  |  | 
| --- |--- |
| Tipos de datos de Amazon Redshift | AWS Glue data type | 
| smallint | smallint | 
| integer | int | 
| bigint | bigint | 
| decimal | decimal(18,0) | 
| decimal(p,s) | decimal(p,s) | 
| real | double | 
| double precision | double | 
| booleano | booleano | 
| char | string | 
| varchar | string | 
| varchar(n) | string | 
| fecha | fecha | 
| timestamp | timestamp | 
| timestamptz | timestamp | 