

# Creación de un esquema
<a name="schema-registry-gs4"></a>

Puede crear un esquema con las API de AWS Glue o la consola de AWS Glue. 

**AWS GlueLas API de**  
Puede seguir estos pasos para realizar esta tarea mediante las API de AWS Glue.

Para agregar un esquema nuevo, use la API de [Acción CreateSchema (Python: create\_schema)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-CreateSchema).

Especifique una estructura de `RegistryId` para indicar un registro para el esquema. O bien, omita el `RegistryId` para utilizar el registro predeterminado.

Especifique un `SchemaName`, que conste de letras, números, guiones o guiones bajos, y `DataFormat` como **AVRO** o **JSON**. Una vez configurado el `DataFormat` en un esquema no puede modificarse.

Especifique un modo de `Compatibility`:
+ *Hacia atrás (recomendado)*: el consumidor puede leer tanto la versión actual como la anterior.
+ *Hacia atrás todo*: el consumidor puede leer tanto la versión actual como todas las anteriores.
+ *Hacia adelante*: el consumidor puede leer tanto la versión actual como la posterior.
+ *Hacia adelante todo*: el consumidor puede leer tanto la versión actual como todas las versiones posteriores.
+ *Completo*: combinación de hacia atrás y hacia adelante.
+ *Completo todo*: combinación de hacia atrás todos y hacia adelante todos.
+ *Ninguno*: no se realizan comprobaciones de compatibilidad.
+ *Desactivado*: evita cualquier control de versiones para este esquema.

Opcionalmente, especifique `Tags` para su esquema. 

Especifique una `SchemaDefinition` para definir el esquema en formato de datos Avro, JSON o Protobuf. Consulte estos ejemplos.

Para el formato de datos Avro:

```
aws glue create-schema --registry-id RegistryName="registryName1" --schema-name testschema --compatibility NONE --data-format AVRO --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"
```

```
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1" --schema-name testschema --compatibility NONE --data-format AVRO  --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"
```

Para el formato de datos JSON:

```
aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"
```

```
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"
```

Para el formato de datos Protobuf:

```
aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
```

```
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
```

**Consola de AWS Glue**  
Para agregar un nuevo esquema a través de la consola de AWS Glue:

1. Inicie sesión en la consola de administración de AWS y abra la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. En el panel de navegación, en **Data catalog** (Catálogo de datos), elija **Schema (Esquemas)**.

1. Elija **Add schema (Agregar esquema)**.

1. Escriba un **Schema name (Nombre del esquema)**, que conste de letras, números, guiones, guiones bajos, signos de dólar o marcas hash. Este nombre no se puede cambiar.

1. Elija el **Registry (Registro)** en el que se almacenará el esquema del menú desplegable. El registro principal no se puede cambiar después de la creación.

1. Deje el **Data format (Formato de los datos)** como *Apache Avro* o *JSON*. Este formato se aplica a todas las versiones de este esquema.

1. Elija un **(Compatibility mode) Modo de compatibilidad**.
   + *Hacia atrás (recomendado)*: el receptor puede leer tanto la versión actual como la anterior.
   + *Hacia atrás todo*: el receptor puede leer tanto la versión actual como todas las anteriores.
   + *Hacia adelante*: el remitente puede escribir tanto la versión actual como la anterior.
   + *Hacia adelante todo*: el remitente puede escribir tanto la versión actual como todas las versiones anteriores.
   + *Completo*: combinación de hacia atrás y hacia adelante.
   + *Completo todo*: combinación de hacia atrás todos y hacia adelante todos.
   + *Ninguno*: no se realizan comprobaciones de compatibilidad.
   + *Desactivado*: evita cualquier control de versiones para este esquema.

1. Escriba una **Description (Descripción)** para el registro de hasta 250 caracteres.  
![Ejemplo de creación de un esquema.](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/schema_reg_create_schema.png)

1. De manera opcional, aplique una o varias etiquetas a su esquema. Elija **Add new tag (Agregar nueva etiqueta)** y especifique una **Tag key (Clave de etiqueta)** y, opcionalmente, un **Tag value (Valor de etiqueta)**.

1. En la casilla, **First schema version (Primera versión del esquema)**, ingrese o pegue el esquema inicial.

   Para el formato Avro, consulte [Trabajar con formato de datos Avro](#schema-registry-avro)

   Para el formato JSON, consulte [Trabajar con formato de datos JSON](#schema-registry-json)

1. También puede seleccionar **Add metadata (Agregar metadatos)** para agregar metadatos de versión para anotar o clasificar la versión del esquema.

1. Elija **Create schema and version (Crear esquema y versión)**.

![Ejemplo de creación de un esquema.](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/schema_reg_create_schema2.png)


El esquema se crea y aparece en la lista en **Schemas (Esquemas)**.

## Trabajar con formato de datos Avro
<a name="schema-registry-avro"></a>

Avro proporciona servicios de serialización e intercambio de datos. Avro almacena la definición de datos en formato JSON, lo que facilita su lectura e interpretación. Los datos en sí se almacenan en formato binario.

Para obtener información sobre cómo definir un esquema Apache Avro, consulte la [especificación de Apache Avro](http://avro.apache.org/docs/current/spec.html).

## Trabajar con formato de datos JSON
<a name="schema-registry-json"></a>

Los datos se pueden serializar con formato JSON. [Formato de esquemas JSON](https://json-schema.org/) define el estándar para el formato de esquema JSON.