

# Criar buckets de diretório em uma zona de disponibilidade
<a name="directory-bucket-create"></a>

Para começar a usar a classe de armazenamento Amazon S3 Express One Zone, crie um bucket de diretório. A classe de armazenamento S3 Express One Zone só pode ser usada com buckets de diretório. A classe de armazenamento S3 Express One Zone oferece suporte a casos de uso de baixa latência e fornece processamento de dados mais rápido em uma única zona de disponibilidade. Se sua aplicação é sensível à performance e se beneficia de latências inferiores a dez milissegundos para `PUT` e `GET`, recomendamos criar um bucket de diretório para que possa usar a classe de armazenamento S3 Express One Zone.

Há dois tipos de buckets do Amazon S3: buckets de uso geral e buckets de diretório. Você deve escolher o tipo de bucket que melhor se adapte aos requisitos de desempenho e da aplicação. Os buckets de uso geral são o tipo original de bucket do S3. Os buckets de uso geral são recomendados para a maioria dos casos de uso e padrões de acesso, permitindo que objetos sejam armazenados em todas as classes de armazenamento, exceto na classe S3 Express One Zone. Para obter mais informações sobre os buckets de uso geral, consulte [Visão geral dos buckets de uso geral](UsingBucket.md).

Os buckets de diretório usam a classe de armazenamento S3 Express One Zone, projetada para workloads ou aplicações de performance crítica que exigem latência consistente inferior a dez milissegundos. S3 Express One Zone é a primeira classe de armazenamento do S3 em que é possível selecionar uma única zona de disponibilidade com a opção de manter o armazenamento de objetos e os recursos de computação na mesma localização, o que fornece a maior velocidade de acesso possível. Ao criar um bucket de diretório, você tem a opção de especificar uma Região da AWS e uma zona de disponibilidade que seja local para suas instâncias computacionais do Amazon EC2, do Amazon Elastic Kubernetes Service ou do Amazon Elastic Container Service (Amazon ECS) a fim de otimizar a performance.

Com a classe S3 Express One Zone, os dados são armazenados de forma redundante em vários dispositivos dentro de uma única zona de disponibilidade. A classe S3 Express One Zone foi projetada para oferecer disponibilidade de 99,95% em uma única zona de disponibilidade e tem o respaldo do [Acordo de Serviço do Amazon S3](https://aws.amazon.com/s3/sla/). Para obter mais informações, consulte . [Zonas de disponibilidade](directory-bucket-high-performance.md#s3-express-overview-az)

Os buckets de diretório organizam os dados de forma hierárquica em diretórios, ao contrário da estrutura de armazenamento plana dos buckets de uso geral. Não há limites de prefixo para os buckets de diretório, e diretórios individuais podem ser escalados horizontalmente. 

Para obter mais informações sobre os buckets de diretório, consulte [Trabalhar com buckets de diretório](directory-buckets-overview.md).

**Nomes de bucket de diretório**  
Os nomes de bucket de diretório devem seguir o seguinte formato e estar em conformidade com as regras de nomenclatura para buckets de diretório:

```
{{bucket-base-name}}--{{zone-id}}--x-s3
```

Por exemplo, o seguinte nome de bucket de diretório contém o ID da zona de disponibilidade `usw2-az1`:

```
{{bucket-base-name}}--usw2-az1--x-s3
```

Para obter mais informações sobre as regras de nomenclatura para buckets de diretório, consulte [Regras de nomenclatura de buckets de diretório](directory-bucket-naming-rules.md).

## Usar o console do S3
<a name="create-directory-bucket-console"></a>

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. Na barra de navegação na parte superior da página, escolha o nome da Região da AWS exibida no momento. Em seguida, escolha a região na qual você deseja criar um bucket. 
**nota**  
Para reduzir a latência e os custos e atender aos requisitos regulatórios, selecione uma região perto de você. Os objetos armazenados em uma região nunca saem dessa região, a menos que você os transfira para outra região. Para obter uma lista de Regiões da AWS do Amazon S3, consulte [Endpoints de AWS service (Serviço da AWS)](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) no *Referência geral da Amazon Web Services*.

1. No painel de navegação à esquerda, escolha **Buckets de diretórios**.

1. Selecione **Create bucket (Criar bucket)**. A página **Create bucket** (Criar bucket) é aberta.

1. Em **Configuração geral**, visualize a Região da AWS onde o bucket será criado. 

   Em **Tipo de bucket**, escolha **Diretório**.
**nota**  
Se você escolher uma região que não oferece suporte a buckets de diretório, a opção **Tipo de bucket** desaparecerá e o tipo de bucket assumirá um bucket de uso geral como padrão. Para criar um bucket de diretório, escolha uma região compatível. Para obter uma lista de regiões que oferecem suporte a buckets de diretório e à classe de armazenamento Amazon S3 Express One Zone, consulte [Zonas de disponibilidade e regiões da classe S3 Express One Zone](s3-express-Endpoints.md).
Depois de criar o bucket, não será possível alterar o tipo.
**nota**  
A zona de disponibilidade não poderá ser alterada após a criação do bucket. 

1. Em **Zona de disponibilidade**, escolha uma zona de disponibilidade que seja local para os seus serviços de computação. Para obter uma lista de zonas de disponibilidade que oferecem suporte a buckets de diretório e à classe de armazenamento S3 Express One Zone, consulte [Zonas de disponibilidade e regiões da classe S3 Express One Zone](s3-express-Endpoints.md). 

   Em **Zona de disponibilidade**, marque a caixa de seleção para indicar que, em caso de interrupção na zona de disponibilidade, seus dados poderão ficar indisponíveis ou ser perdidos. 
**Importante**  
Embora os buckets de diretório sejam armazenados em vários dispositivos dentro de uma única zona de disponibilidade, eles não armazenam dados de forma redundante entre zonas de disponibilidade.

1. Em **Nome do bucket**, insira um nome para o bucket de diretório.

   As regras de nomenclatura a seguir se aplicam a buckets de diretório.
   + O nome deve ser exclusivo na zona escolhida (zona de disponibilidade da AWS ou zona local da AWS). 
   + O nome deve ter entre 3 (mín.) e 63 (máx.) caracteres, incluindo o sufixo.
   + Consistir em letras minúsculas, números e hifens (-).
   + Inicie e termine com uma letra ou um número. 
   + Deve incluir o seguinte sufixo: `--{{zone-id}}--x-s3`.
   + O nome do bucket não deve iniciar com o prefixo `xn--`.
   + O nome do bucket não deve iniciar com o prefixo `sthree-`.
   + O nome do bucket não deve iniciar com o prefixo `sthree-configurator`.
   + O nome do bucket não deve iniciar com o prefixo ` amzn-s3-demo-`.
   + Os nomes de bucket não podem terminar com o sufixo `-s3alias`. Esse sufixo se reserva a nomes de alias de ponto de acesso. Para obter mais informações, consulte [Alias de ponto de acesso](access-points-naming.md#access-points-alias).
   + Os nomes de bucket não podem terminar com o sufixo `--ol-s3`. Esse sufixo é reservado a nomes de alias de ponto de acesso de objeto do Lambda. Para obter mais informações, consulte [Como usar um alias no estilo do bucket para o ponto de acesso do Object Lambda do bucket do S3](olap-use.md#ol-access-points-alias).
   + Os nomes de bucket não podem terminar com o sufixo `.mrap`. Esse sufixo é reservado para nomes de ponto de acesso de várias regiões. Para obter mais informações, consulte [Regras para nomear pontos de acesso multirregionais do Amazon S3](multi-region-access-point-naming.md).

   Um sufixo é adicionado automaticamente ao nome de base que você fornece ao criar um bucket de diretório usando o console. Esse sufixo inclui o ID da zona de disponibilidade que você escolheu.

   Depois de criado o bucket, você não pode mudar seu nome. Para obter mais informações sobre como nomear buckets, consulte [Regras de nomenclatura de buckets de uso geral](bucketnamingrules.md). 
**Importante**  
Não inclua informações confidenciais, como números de conta, no nome do bucket. O nome do bucket é visível nos URLs que apontam para os objetos no bucket.

1. Em **Propriedade do objeto**, a configuração **Imposto pelo proprietário do bucket** está habilitada automaticamente e todas as listas de controle de acesso (ACLs) estão desabilitadas. Para os buckets de diretório, não é possível habilitar ACLs. 

    **Imposto pelo proprietário do bucket (padrão)**: as ACLs são desabilitadas e o proprietário do bucket automaticamente tem propriedade e controle total sobre todos os objetos do bucket de uso geral. As ACLs não afetam mais as permissões de acesso aos dados no bucket de uso geral do S3. O bucket usa políticas exclusivamente para definir o controle de acesso.

1. Em **Configurações de bloqueio do acesso público deste bucket**, todas as configurações da funcionalidade Bloqueio de Acesso Público para o bucket de diretório estão automaticamente habilitadas. Não é possível modificar essas configurações para buckets de diretório. Para obter mais informações sobre como bloquear o acesso público, consulte [Bloquear o acesso público ao armazenamento do Amazon S3](access-control-block-public-access.md).

1. Para configurar a criptografia padrão, em **Tipo de criptografia**, selecione uma das seguintes opções: 
   + **Criptografia do lado do servidor com chave gerenciada pelo Amazon S3 (SSE-S3)**
   + **Criptografia do lado do servidor com chave do AWS Key Management Service (SSE-KMS)**

   Para obter mais informações sobre como usar a criptografia no lado do servidor do Amazon S3 para criptografar seus dados, consulte [Proteção e criptografia de dados](s3-express-data-protection.md).
**Importante**  
Se você usar a opção SSE-KMS em sua configuração de criptografia padrão, estará sujeito à cota de solicitações por segundo (RPS) do AWS KMS. Para obter mais informações sobre as cotas do AWS KMS e como solicitar um aumento de cota, consulte [Cotas](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html) no *Guia do desenvolvedor do AWS Key Management Service*.  
Ao habilitar a criptografia padrão, poderá ser necessário atualizar a política de bucket. Para obter mais informações, consulte [Usar criptografia SSE-KMS para operações entre contas](bucket-encryption.md#bucket-encryption-update-bucket-policy).

1. Se você escolher **Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)**, aparecerá **Habilitado** em **Chave do bucket**. As chaves de bucket do S3 são sempre habilitadas quando você configura o bucket de diretório para usar a criptografia padrão com SSE-S3. As chaves de bucket do S3 estão sempre habilitadas para operações `GET` e `PUT` em um bucket de diretório e não podem ser desabilitadas. Não são aceitas chaves de bucket do S3 quando você copia objetos criptografados por SSE-KMS de buckets de uso geral para buckets de diretório, de buckets de diretório para buckets de uso geral ou entre buckets de diretório, por meio de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html), de [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html), [da operação Copy em Operações em Lote](directory-buckets-objects-Batch-Ops.md) ou [de trabalhos de import](create-import-job.md). Nesse caso, o Amazon S3 faz uma chamada para o AWS KMS sempre que uma solicitação de cópia é feita para um objeto criptografado pelo KMS.

   As chaves de bucket do S3 diminuem o custo de criptografia reduzindo o tráfego de solicitações do Amazon S3 para o AWS KMS. Para obter mais informações, consulte [Redução do custo do SSE-KMS com chaves de bucket do Amazon S3](bucket-key.md).

1. Se você escolher **Criptografia do lado do servidor com chave do AWS Key Management Service (SSE-KMS)**, em **Chave do AWS KMS**, especifique uma chave do AWS Key Management Service de uma das maneiras a seguir ou crie uma chave.
   + Para escolher uma chave do KMS na lista disponível, selecione **Escolher entre suas AWS KMS keys** e escolha sua **Chave do KMS** em **AWS KMS keys disponíveis**.

     Somente as suas chaves gerenciadas pelo cliente são exibidas nessa lista. Não é possível usar o Chave gerenciada pela AWS (`aws/s3`) em buckets de diretório. Para ter mais informações sobre chaves gerenciadas pelo cliente, consulte [Chaves de clientes e chaves da AWS](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt) no *Guia do desenvolvedor do AWS Key Management Service*.
   + Para inserir o ARN ou o alias da chave do KMS, escolha **Inserir ARN da AWS KMS key** e insira o ARN ou o alias da chave do KMS em **ARN da AWS KMS key**. 
   + Para criar uma chave gerenciada pelo cliente no console do AWS KMS, selecione **Criar uma chave do KMS**.

     Para ter mais informações sobre como criar uma AWS KMS key, consulte [Criação de chaves](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html) no * Guia do desenvolvedor do AWS Key Management Service*.
**Importante**  
A configuração de SSE-KMS só comporta uma [chave gerenciada pelo cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) por bucket de diretório durante a vida útil do bucket. Não há suporte para [https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`). Além disso, depois que você especifica uma chave gerenciada pelo cliente para SSE-KMS, não é possível substituí-la pela configuração de SSE-KMS do bucket.  
É possível identificar a chave gerenciada pelo cliente que você especificou para a configuração SSE-KMS do bucket, da seguinte forma:  
Faça uma solicitação de operação de API `HeadObject` para encontrar o valor de `x-amz-server-side-encryption-aws-kms-key-id` em sua resposta.
Para usar uma nova chave gerenciada pelo cliente em seus dados, recomendamos copiar os objetos existentes em um novo bucket de diretório com uma nova chave gerenciada pelo cliente.
Você só pode usar chaves do KMS disponíveis na mesma Região da AWS que o bucket. O console do Amazon S3 lista somente as primeiras 100 chaves do KMS na mesma região que o bucket. Para usar uma chave do KMS que não esteja listada, você deve inserir o ARN da chave do KMS. Se quiser usar uma chave do KMS que seja de propriedade de outra conta, primeiro você deverá ter permissão para usar a chave e, depois, inserir o ARN da chave do KMS. Para obter mais informações sobre permissões entre contas para chaves do KMS, consulte [Criar chaves do KMS que outras contas podem usar](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console) no *Guia do desenvolvedor do AWS Key Management Service*. Para obter mais informações sobre a SSE-KMS, consulte [Especificar a criptografia do lado do servidor com o AWS KMS (SSE-KMS) para novos uploads de objetos em buckets de diretório](s3-express-specifying-kms-encryption.md).
Ao usar uma AWS KMS key para criptografia do lado do servidor em buckets de diretório, você deve escolher uma chave de criptografia do KMS simétrica. O Amazon S3 só é compatível com chaves do KMS de criptografia simétrica, e não com chaves assimétricas do KMS. Para ter mais informações, consulte [Identificar chaves do KMS simétricas e assimétricas](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html) no *Guia do desenvolvedor do AWS Key Management Service*.

   Para obter mais informações sobre como usar o AWS KMS com o Amazon S3, consulte [Usar a criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS) em buckets de diretório](s3-express-UsingKMSEncryption.md).

1. Selecione **Criar bucket**. Depois de criar o bucket, você pode adicionar arquivos e pastas a ele. Para obter mais informações, consulte [Trabalhar com objetos em um bucket de diretório](directory-buckets-objects.md).

## Uso da SDKs AWS
<a name="create-directory-bucket-sdks"></a>

------
#### [ SDK for Go ]

Este exemplo mostra como criar um bucket de diretório usando o AWS SDK para Go. 

**Example**  

```
var bucket = "..."

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("{{usw2-az1}}"),
                Type: types.LocationTypeAvailabilityZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleAvailabilityZone,
                Type:           types.BucketTypeDirectory,
            },  
        },  
    })  
    var terr *types.BucketAlreadyOwnedByYou
    if errors.As(err, &terr) {
        fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message))
        fmt.Printf("noop...\n")
        return
    }   
    if err != nil {
        log.Fatal(err)
    }   

    fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location))
}
```

------
#### [ SDK for Java 2.x ]

Este exemplo mostra como criar um bucket de diretório usando o AWS SDK for Java 2.x. 

**Example**  

```
public static void createBucket(S3Client s3Client, String bucketName) {

    //Bucket name format is {base-bucket-name}--{az-id}--x-s3
    //example: {{doc-example-bucket}}--{{usw2-az1}}--x-s3 is a valid name for a directory bucket created in
    //Region us-west-2, Availability Zone 2  

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.AVAILABILITY_ZONE)
                     .name("{{usw2-az1}}").build()) //this must match the Region and Availability Zone in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE)
                    .build()).build();
    try {
    
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build();
             CreateBucketResponse response = s3Client.createBucket(bucketRequest);
             System.out.println(response);
    } 
    
    catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
         }
    }
```

------
#### [ AWS SDK para JavaScript ]

Este exemplo mostra como criar um bucket de diretório usando o AWS SDK para JavaScript. 

**Example**  

```
// file.mjs, run with Node.js v16 or higher
// To use with the preview build, place this in a folder 
// inside the preview build directory, such as /aws-sdk-js-v3/workspace/

import { S3 } from "@aws-sdk/client-s3";

const region = "{{us-east-1}}";
const zone = "{{use1-az4}}";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

const bucketName = `...--${suffix}`;

const createResponse = await s3.createBucket( 
    { Bucket: bucketName, 
      CreateBucketConfiguration: {Location: {Type: "AvailabilityZone", Name: zone},
      Bucket: { Type: "Directory", DataRedundancy: "SingleAvailabilityZone" }}
    } 
   );
```

------
#### [ SDK para .NET ]

Este exemplo mostra como criar um bucket de diretório usando o SDK para .NET. 

**Example**  

```
using (var amazonS3Client = new AmazonS3Client())
{
    var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest
    {

       BucketName = "{{DOC-EXAMPLE-BUCKET}}--{{usw2-az1}}--x-s3",
       PutBucketConfiguration = new PutBucketConfiguration
       {
         BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleAvailabilityZone, Type = BucketType.Directory },
         Location = new LocationInfo { Name = "{{usw2-az1}}", Type = LocationType.AvailabilityZone }
       }
     }).ConfigureAwait(false);
}
```

------
#### [ SDK for PHP ]

Este exemplo mostra como criar um bucket de diretório usando o AWS SDK for PHP. 

**Example**  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([

    'region'      => '{{us-east-1}}',
]);


$result = $s3Client->createBucket([
    'Bucket' => '{{doc-example-bucket}}--{{use1-az4}}--x-s3',
    'CreateBucketConfiguration' => [
        'Location' => ['Name'=> '{{use1-az4}}', 'Type'=> 'AvailabilityZone'],
        'Bucket' => ["DataRedundancy" => "SingleAvailabilityZone" ,"Type" => "Directory"]   ],
]);
```

------
#### [ SDK for Python ]

Este exemplo mostra como criar um bucket de diretório usando o AWS SDK para Python (Boto3). 

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def create_bucket(s3_client, bucket_name, availability_zone):
    '''
    Create a directory bucket in a specified Availability Zone

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to create; for example, '{{doc-example-bucket}}--{{usw2-az1}}--x-s3'
    :param availability_zone: String; Availability Zone ID to create the bucket in, for example, 'usw2-az1'
    :return: True if bucket is created, else False
    '''

    try:
        bucket_config = {
                'Location': {
                    'Type': 'AvailabilityZone',
                    'Name': availability_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleAvailabilityZone'
                }
            }
        s3_client.create_bucket(
            Bucket = bucket_name,
            CreateBucketConfiguration = bucket_config
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    bucket_name = '{{BUCKET_NAME}}'
    region = '{{us-west-2}}'
    availability_zone = '{{usw2-az1}}'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, availability_zone)
```

------
#### [ SDK for Ruby ]

Este exemplo mostra como criar um bucket de diretório usando o AWS SDK para Ruby. 

**Example**  

```
s3 = Aws::S3::Client.new(region:'{{us-west-2}}')
s3.create_bucket(
  bucket: "bucket_base_name--az_id--x-s3",
  create_bucket_configuration: {
    location: { name: '{{usw2-az1}}', type: 'AvailabilityZone' },
    bucket: { data_redundancy: 'SingleAvailabilityZone', type: 'Directory' }
  }
)
```

------

## Como usar o AWS CLI
<a name="create-directory-bucket-cli"></a>

Este exemplo mostra como criar um bucket de diretório usando o AWS CLI. Para usar o comando, substitua os {{espaços reservados para entrada do usuário}} por suas próprias informações.

Ao criar um bucket de diretório, você deve fornecer detalhes de configuração e usar a seguinte convenção de nomenclatura: .: `{{bucket-base-name}}--{{zone-id}}--x-s3`

```
aws s3api create-bucket
--bucket {{bucket-base-name}}--{{zone-id}}--x-s3
--create-bucket-configuration 'Location={Type=AvailabilityZone,Name={{usw2-az1}}},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory}'
--region {{us-west-2}}
```

Para obter mais informações, consulte [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html) na AWS Command Line Interface.