

# Namespaces de tabela
<a name="s3-tables-namespace"></a>

Ao criar tabelas em um bucket de tabela do Amazon S3, elas são organizadas em agrupamentos lógicos chamados *namespaces*. Ao contrário das tabelas e dos buckets de tabela do S3, os namespaces não são recursos. Namespaces são constructos que ajudam a organizar e gerenciar tabelas de forma escalável. Por exemplo, todas as tabelas pertencentes ao departamento de recursos humanos de uma empresa podem ser agrupadas em um valor de namespace comum de `hr`.

Para controlar o acesso a namespaces específicos, é possível usar políticas de recursos de buckets de tabela. Para obter mais informações, consulte [Políticas baseadas em recurso para a funcionalidade Tabelas do S3](s3-tables-resource-based-policies.md).

As seguintes regras se aplicam a namespaces de tabela:
+ Cada namespace deve ser único em um bucket de tabela.
+ É possível criar até 10.000 namespaces por bucket de tabela.
+ Cada nome de tabela deve ser único em um namespace.
+ Cada tabela só pode ter um nível de namespaces. Os namespaces não podem ser aninhados.
+ Cada tabela pertence a um único namespace.
+ Você pode mover as tabelas entre namespaces.

Os namespaces de tabela são chamados de bancos de dados em vários mecanismos de consulta e serviços da AWS. A tabela a seguir associa a terminologia usada para namespaces de tabela do S3 a alguns mecanismos e serviços comuns.


| **Serviço ou mecanismo** | **Terminologia** | 
| --- | --- | 
| AWS Lake Formation | Banco de dados | 
| AWS Glue Data Catalog | Banco de dados | 
| Athena | Banco de dados | 
| Spark | Namespace | 

**Topics**
+ [Criar namespaces](s3-tables-namespace-create.md)
+ [Excluir um namespace](s3-tables-namespace-delete.md)

# Criar namespaces
<a name="s3-tables-namespace-create"></a>

Um namespace de tabela é um constructo lógico que serve para agrupar tabelas em um bucket de tabela do Amazon S3. Cada tabela pertence a um único namespace. Antes de criar uma tabela em um bucket de tabela, é necessário criar um namespace para agrupá-las. É possível criar um namespace usando o console do Amazon S3, a AWS Command Line Interface (AWS CLI), a API REST do Amazon S3, os SDKs da AWS ou mecanismos de consulta integrados.

**Nomes do namespace**

As seguintes regras de nomenclatura se aplicam aos namespaces:
+ Os nomes devem ter entre 1 e 255 caracteres.
+ Os nomes só podem consistir em letras minúsculas, números e sublinhados (`_`). Sublinhados não são permitidos no início ou no final dos nomes de namespace.
+ Os nomes devem começar e terminar com uma letra ou um número.
+ Os nomes não devem conter hifens (`-`) nem pontos (`.`).
+ Um namespace deve ser único dentro de um bucket de tabela.
+ Os nomes de namespaces não devem começar com o prefixo reservado `aws`.

Consulte mais informações sobre nomes válidos de namespace em [Regras de nomenclatura para tabelas e namespaces](s3-tables-buckets-naming.md#naming-rules-table).

## Usar o console do S3 e o Amazon Athena
<a name="create-namespace-console"></a>

O procedimento a seguir usa o fluxo de trabalho **Criar tabela com o Athena** para criar um namespace no console do Amazon S3. Se não quiser usar o Amazon Athena também para criar uma tabela no namespace, você poderá cancelar o fluxo de trabalho depois de criar o namespace. 

**Para criar um namespace**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets de tabela**.

1. Na página **Buckets de tabela**, escolha o bucket no qual você deseja criar um namespace.

1. Na página de detalhes do bucket, escolha **Criar tabela com o Athena**. 

1. Na caixa de diálogo **Criar tabela com o Athena**, escolha **Criar um namespace** e, depois, **Criar namespace**.

1. Insira um nome no campo **Nome do namespace**. Os nomes de namespace devem ter de 1 a 255 caracteres e ser exclusivos no bucket de tabela. Os caracteres válidos são a–z, 0–9 e sublinhado (`_`). Sublinhados não são permitidos no início ou no final dos nomes de namespace.

1. Escolha **Create namespace (Criar namespace)**.

1. Se você também quiser criar uma tabela, escolha **Criar tabela com o Athena**. Consulte mais informações sobre como criar uma tabela com o Athena em [Usar o console do S3 e o Amazon Athena](s3-tables-create.md#create-table-console). Se não quiser criar uma tabela no momento, escolha **Cancelar**.

## Como usar o AWS CLI
<a name="create-table-namespace-CLI"></a>

Esse exemplo mostra como criar um namespace de tabelas usando a AWS CLI. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables create-namespace \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \ 
    --namespace example_namespace
```

## Usando um mecanismo de consulta
<a name="create-table-namespace-engine"></a>

Você pode criar um namespace em uma sessão do Apache Spark conectada aos buckets de tabela do Amazon S3.

Esse exemplo mostra como criar uma tabela usando instruções `CREATE` em um mecanismo de consulta integrado à funcionalidade Tabelas do S3. Para usar esse exemplo, substitua os *espaços reservados para entrada do usuário* por suas próprias informações.

```
spark.sql("CREATE NAMESPACE IF NOT EXISTS s3tablesbucket.my_namespace")
```

# Excluir um namespace
<a name="s3-tables-namespace-delete"></a>

Antes de excluir um namespace de tabela de um bucket de tabela do Amazon S3, é necessário excluir todas as tabelas dentro do namespace ou movê-las para outro namespace. É possível excluir um namespace usando a API REST do Amazon S3, os SDKs da AWS, a AWS Command Line Interface (AWS CLI) ou mecanismos de consulta integrados. 

Consulte mais informações sobre as permissões necessárias para excluir um namespace em [https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteNamespace.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_s3TableBuckets_DeleteNamespace.html) na *Referência de API do Amazon Simple Storage Service*.

## Como usar o AWS CLI
<a name="delete-table-namespace-CLI"></a>

Esse exemplo mostra como excluir um namespace de tabelas usando a AWS CLI. Para usar esse exemplo, substitua os `user input placeholders` por suas próprias informações.

```
aws s3tables delete-namespace \
    --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket1 \
    --namespace example_namespace
```