

# Criar um esquema
<a name="schema-registry-gs4"></a>

Você pode criar um esquema usando as APIs do AWS Glue ou o console do AWS Glue. 

**AWS GlueAPIs do**  
Você pode usar estas etapas para executar essa tarefa usando as APIs do AWS Glue.

Para adicionar um novo esquema, use a API [Ação CreateSchema (Python: create\_esquema)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-CreateSchema).

Especifique uma estrutura `RegistryId` para indicar um registro para o esquema. Ou omita o `RegistryId` para usar o registro padrão.

Especifique um `SchemaName` consistindo em letras, números, hifens ou sublinhados e `DataFormat` como **AVRO** ou **JSON**. O `DataFormat`, uma vez definido em um esquema, não pode ser alterado.

Especifique um modo de `Compatibility`:
+ *Backward (Anterior) (recomendado)*: o consumidor pode ler a versão atual e a anterior.
+ *Backward all (Todas as anteriores)*: o consumidor pode ler a versão atual e todas as anteriores.
+ *Forward (Próxima)*: o consumidor pode ler a versão atual e a subsequente.
+ *Forward all (Todas as próximas)*: o consumidor pode ler a versão atual e todas as subsequentes.
+ *Full (Completo)*: combinação de Backward e Forward.
+ *Full all (Completo total)*: combinação de Backward all e Forward all.
+ *None (Nenhum)*: nenhuma verificação de compatibilidade é realizada.
+ *Disabled (Desabilitado)*: impede qualquer versionamento para esse esquema.

Opcionalmente, especifique `Tags` para seu esquema. 

Especifique uma `SchemaDefinition` para definir o esquema no formato de dados Avro, JSON ou Protobuf. Consulte os exemplos.

Para o formato de dados 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 o formato de dados 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 o formato de dados 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;}"
```

**AWS GlueConsole do**  
Para adicionar um novo esquema usando o console do AWS Glue:

1. Faça login no Console de Gerenciamento da AWS e abra o console do AWS Glue em [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. No painel de navegação, em **Data catalog** (Catálogo de dados), escolha **Schema** (Esquema).

1. Escolha **Add schema** (Adicionar esquema).

1. Digite um **Schema name** (Nome do esquema), consistindo em letras, números, hifens, sublinhados, cifrões ou marcas de hash. Esse nome não pode ser alterado.

1. Escolha o **Registry** (Registro) em que o esquema será armazenado no menu suspenso. O registro pai não pode ser alterado após a criação.

1. Deixe **Data format** (Formato de dados) como *Apache Avro* ou *JSON*. Esse formato se aplica a todas as versões desse esquema.

1. Escolha um **Compatibility mode** (Modo de compatibilidade).
   + *Backward (Anterior) (recomendado)*: o receptor pode ler a versão atual e a anterior.
   + *Backward all (Todas as anteriores)*: o receptor pode ler a versão atual e todas as anteriores.
   + *Forward (Próxima)*: o remetente pode gravar a versão atual e a anterior.
   + *Forward all (Todas as próximas)*: o remetente pode gravar a versão atual e todas as anteriores.
   + *Full (Completo)*: combinação de Backward e Forward.
   + *Full all (Completo total)*: combinação de Backward All e Forward All.
   + *None (Nenhum)*: nenhuma verificação de compatibilidade é realizada.
   + *Disabled (Desabilitado)*: impede qualquer versionamento para esse esquema.

1. Insira uma **Description** (Descrição) opcional de até 250 caracteres para o registro.  
![Exemplo de criação de um esquema.](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/schema_reg_create_schema.png)

1. Opcionalmente, aplique uma ou mais tags ao esquema. Escolha **Add new tag** (Adicionar nova tag), especifique um **Tag key** (Chave de tag) e, opcionalmente, um **Tag value** (Valor da tag).

1. Na caixa **First schema version** (Primeira versão do esquema), insira ou cole o esquema inicial.

   Para o formato Avro, consulte [Trabalhar com o formato de dados Avro](#schema-registry-avro)

   Para o formato JSON, consulte [Trabalhar com o formato de dados JSON](#schema-registry-json)

1. Opcionalmente, escolha **Add metadata** (Adicionar metadados) para adicionar metadados de versão para anotar ou classificar a versão do esquema.

1. Selecione **Create schema and version** (Criar esquema e versão).

![Exemplo de criação de um esquema.](http://docs.aws.amazon.com/pt_br/glue/latest/dg/images/schema_reg_create_schema2.png)


O esquema é criado e aparece na lista em **Schemas** (Esquemas).

## Trabalhar com o formato de dados Avro
<a name="schema-registry-avro"></a>

O Avro fornece serviços de serialização e troca de dados. O Avro armazena a definição de dados no formato JSON facilitando a leitura e interpretação. Os dados em si são armazenados em formato binário.

Para obter informações sobre como definir um esquema do Apache Avro, consulte a [especificação do Apache Avro](http://avro.apache.org/docs/current/spec.html).

## Trabalhar com o formato de dados JSON
<a name="schema-registry-json"></a>

Os dados podem ser serializados com o formato JSON. O [formato do esquema JSON](https://json-schema.org/) define o padrão para o formato de esquema JSON.