

# Fazer upload de objetos
<a name="upload-objects"></a>

Quando você faz upload de um arquivo no Amazon S3, ele é armazenado como um *objeto* do S3. Os objetos consistem em dados e metadados de arquivo que descrevem o objeto. Você pode ter um número ilimitado de objetos em um bucket. Antes de fazer upload de arquivos em um bucket do Amazon S3, você precisa escrever permissões para o bucket. Para obter mais informações sobre permissões de acesso, consulte [Gerenciamento de identidade e acesso para o Amazon S3](security-iam.md). 

Você pode fazer upload de qualquer tipo de arquivo (imagens, backups, dados, filmes etc.) para um bucket do S3. O tamanho máximo de arquivo que você pode carregar usando o console do Amazon S3 é de 160 GB. Para fazer upload de um arquivo com mais de 160 GB, use a AWS Command Line Interface (AWS CLI), AWS SDKs ou a API REST do Amazon S3.

Se você fizer upload de um objeto com um nome de chave que já existe em um bucket com versionamento habilitado, o Amazon S3 criará outra versão de objeto em vez de substituir o objeto existente. Para ter mais informações sobre como habilitar o versionamento, consulte [Habilitar o versionamento em buckets](manage-versioning-examples.md).

 Dependendo do tamanho de dados enviados por upload, o Amazon S3 oferece as seguintes opções: 
+ **Fazer upload de um objeto em uma única operação usando AWS SDKs, a API REST ou a AWS CLI**: com uma única operação `PUT`, você pode fazer upload de um único objeto com até 5 GB.
+ **Fazer upload de um único objeto usando o console do Amazon S3****:** com o console do Amazon S3, é possível fazer upload de um único objeto com até 160 GB de tamanho. 
+ **Fazer upload de um objeto em partes usando AWS SDKs, a API REST ou a AWS CLI****:** com a operação de API de upload de várias partes, é possível fazer upload de um único objeto grande, com até 50 TB.

  A operação de API de upload de várias partes foi projetada para melhorar a experiência de upload de objetos maiores. É possível fazer upload de um objeto em partes. O upload dessas partes de objetos pode ser feito independentemente, em qualquer ordem, e em paralelo. É possível usar um multipart upload de objetos de 5 MB a 50 TB. Para ter mais informações, consulte [Carregar e copiar objetos usando upload fracionado no Amazon S3](mpuoverview.md).

Para fazer upload de arquivos com mais de 5 TB, use a Transferência de Arquivos do S3 no Java v1/v2, no Python ou em SDKs da AWS CLI. Para ter o melhor desempenho, use a AWS Common Runtime (CRT) mais recente com esses SDKs, que foi otimizada para melhorar a utilização de recursos.

Quando são carregados grandes objetos do fluxo de memória, a CRT armazena temporariamente cada parte de até 5 GB na memória, limitando o throughput geral pela memória alocada. É possível ajustar o limite de memória da CRT usando opções de configuração, como `maxNativeMemoryLimitInBytes` para o SDK para Java. Para uploads do disco, a CRT muda automaticamente para streaming direto do disco em vez de armazenar em buffer partes intermediárias, melhorando o uso da memória. Esse comportamento é habilitado automaticamente para objetos grandes, mas também pode ser habilitado para arquivos menores por meio de parâmetros de solicitação, como `should_stream` para a AWS CLI e `CRT_MEMORY_BUFFER_DISABLED` para o SDK para Java.

Quando você faz upload de um objeto, ele é automaticamente criptografado usando criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) por padrão. Quando você faz download, o objeto é descriptografado. Para obter mais informações, consulte [Definir o comportamento padrão da criptografia para os buckets do Amazon S3](bucket-encryption.md) e [Proteger dados com criptografia](UsingEncryption.md). 

Ao fazer upload de um objeto, se quiser usar um tipo diferente de criptografia padrão, você também pode especificar a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS) nas solicitações `PUT` do S3 ou definir a configuração de criptografia padrão no bucket de destino para usar o SSE-KMS para criptografar os dados. Para obter mais informações sobre SSE-KMS, consulte [Especificação de criptografia no lado do servidor com o AWS KMS (SSE-KMS)](specifying-kms-encryption.md). Se quiser usar uma chave do KMS que seja de propriedade de outra conta, você deverá ter permissão para usar a chave. 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*. 

Se você encontrar um erro de Acesso negado (403 Proibido) no Amazon S3, consulte [Solucionar erros de acesso negado (403 Forbidden) no Amazon S3](troubleshoot-403-errors.md) para saber mais sobre as causas comuns.

## Fazer upload de um objeto
<a name="upload-objects-procedure"></a>

### Usar o console do S3
<a name="upload-objects-by-drag-and-drop"></a>

Este procedimento explica como fazer upload de objetos e pastas para um bucket do Amazon S3 usando o console. 

Quando você faz upload de um objeto, o nome da chave de objeto é o nome do arquivo e quaisquer prefixos opcionais. No console do Amazon S3, você pode criar pastas para organizar seus objetos. No Amazon S3, as pastas são representadas como prefixos que aparecem no nome da chave de objeto. Se você fizer upload um objeto individual para uma pasta no console do Amazon S3, o nome da pasta será incluído no nome da chave do objeto. 

Por exemplo, se você carregar um objeto chamado `sample1.jpg` para uma pasta chamada `backup`, o nome da chave será `backup/sample1.jpg`. Contudo, o objeto é exibido no console como `sample1.jpg` na pasta `backup`. Para obter mais informações sobre nomes de chave, consulte [Trabalhar com metadados de objeto](UsingMetadata.md).

**nota**  
Se você renomear um objeto ou alterar qualquer uma das propriedades no console do Amazon S3, por exemplo **Classe de armazenamento**, **Criptografia** ou **Metadados**, será criado outro objeto para substituir o antigo. Se o versionamento do S3 estiver habilitado, uma nova versão do objeto será criada e o objeto existente se tornará uma versão mais antiga. O perfil que altera a propriedade também se torna o proprietário do novo objeto (ou versão do objeto).

Quando você faz upload de uma pasta, o Amazon S3 faz upload de todos os arquivos e subpastas da pasta especificada em seu bucket. Ele então atribui um nome de chave de objeto que é uma combinação do nome de arquivo carregado com o nome da pasta. Por exemplo, se você fizer upload de uma pasta chamada `/images` que contém dois arquivos, `sample1.jpg` e `sample2.jpg`, o Amazon S3 fará upload dos arquivos e atribuirá a eles os nomes de chave correspondentes, `images/sample1.jpg` e `images/sample2.jpg`. Os nomes de chave incluem o nome da pasta como um prefixo. O console do Amazon S3 exibe somente a parte do nome de chave que vem depois da última `/`. Por exemplo, em uma pasta `images`, os objetos `images/sample1.jpg` e `images/sample2.jpg` são exibidos como `sample1.jpg` e `sample2.jpg`.<a name="upload-files-folders"></a>

**Para fazer upload de pastas e arquivos para um bucket do S3**

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**.

1. Na lista **Buckets**, escolha o nome do bucket no qual você deseja carregar suas pastas ou arquivos.

1. Escolha **Upload (Fazer upload)**.

1. Na janela **Upload (Fazer upload)**, siga um destes procedimentos: 
   + Arraste e solte arquivos e pastas para a janela **Upload (Fazer upload)** .
   + Escolha **Adicionar arquivo** ou **Adicionar pasta**, escolha arquivos ou pastas para fazer upload e depois escolha **Abrir**.

1. Para habilitar o versionamento, em **Destination (Destino)**, escolha **Enable Bucket Versioning (Ativar versionamento de bucket)**.

1. Para fazer upload dos arquivos e pastas listados sem configurar opções de upload adicionais, na parte inferior da página, escolha **Upload (Fazer upload)**.

   O Amazon S3 faz o upload de seus objetos e pastas. Quando o upload for concluído, você verá uma mensagem de sucesso na página **Upload: status**.<a name="configure-additional-properties"></a>

**Para configurar propriedades de objeto adicionais**

1. Para alterar as permissões da lista de controle de acesso, escolha **Permissions** (Permissões).

1. Em **Access control list (ACL)** (Lista de controle de acesso (ACL)), edite as permissões.

   Para informações sobre permissões de acesso a objeto, consulte [Usar o console do S3 para definir permissões de ACL para um objeto](managing-acls.md#set-object-permissions). Você pode conceder acesso de leitura aos seus objetos ao público (todos no mundo), para todos os arquivos que você está carregando. No entanto, recomendamos não alterar a configuração padrão para acesso de leitura público. Conceder acesso público de leitura é aplicável a um pequeno subconjunto de casos de uso, como quando buckets são usados para sites. Você sempre pode alterar as permissões de objeto depois de carregar o objeto. 

1. Para configurar outras propriedades, escolha **Properties** (Propriedades).

1. Na seção **Classe de armazenamento** escolha a classe de armazenamento para os arquivos que você está carregando.

   Para obter mais informações sobre classes de armazenamento, consulte [Compreender e gerenciar classes de armazenamento do Amazon S3](storage-class-intro.md).

1. Para atualizar as configurações de criptografia para seus objetos, em **Server-side encryption settings (Configurações de criptografia do lado do servidor)**, faça o seguinte.

   1. Escolha **Specify an encryption key** (Especificar uma chave de criptografia).

   1. Em **Configurações de criptografia**, escolha **Usar configurações de bucket para criptografia padrão** ou **Substituir configurações de bucket para criptografia padrão**.

   1. Se você escolher **Substituir configurações do bucket para criptografia padrão**, deverá definir as configurações de criptografia a seguir.
      + Para criptografar os arquivos carregados usando chaves gerenciadas pelo Amazon S3, escolha **Chave gerenciada pelo Amazon S3 (SSE-S3)**.

        Para ter mais informações, consulte [Usar a criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3)](UsingServerSideEncryption.md).
      + Para criptografar os arquivos carregados usando chaves armazenadas no AWS Key Management Service (AWS KMS), selecione **Chave do AWS Key Management Service (SSE-KMS)**. Depois, escolha uma das seguintes opções para a **chave do AWS KMS**:
        + Para escolher entre uma lista de chaves do KMS disponíveis, selecione **Escolher de sua AWS KMS keys** e escolha a **chave do KMS** na lista de chaves disponíveis.

          As chaves Chave gerenciada pela AWS (`aws/s3`) e as chaves gerenciadas pelo cliente são exibidas nessa lista. 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 da chave do KMS, selecione **Inserir ARN da AWS KMS key** e insira o ARN da chave do KMS no campo exibido. 
        + 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**  
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.   
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*.

1. Para usar somas de verificação adicionais, escolha **On** (Ativar). Em seguida, em **Checksum function** (Função de soma de verificação), escolha a função que você gostaria de usar. O Amazon S3 calcula e armazena o valor da soma de verificação depois de receber o objeto inteiro. Você pode usar a caixa **Precalculated value** (Valor pré-calculado) para fornecer esse valor. Se fizer isso, o Amazon S3 vai comparar o valor que você forneceu com o valor calculado. Se os dois valores não corresponderem, o Amazon S3 gerará um erro.

   As somas de verificação adicionais permitem que você especifique o algoritmo de soma de verificação que gostaria de usar para verificar seus dados. Para obter mais informações sobre somas de verificação adicionais, consulte [Verificar a integridade do objeto no Amazon S3](checking-object-integrity.md).

1. Para adicionar tags a todos os objetos que você está carregando, escolha **Add tag (Adicionar tag)**. Insira um nome de tag no campo **Chave**. Insira um valor para a tag.

   A marcação de objetos é uma forma de categorizar o armazenamento. Cada tag é um par de chave-valor. Os valores de chave e tag diferenciam maiúsculas de minúsculas. É possível ter até dez tags por objeto. Uma chave de tag pode ter até 128 caracteres Unicode e os valores de tag podem ter até 255 caracteres Unicode. Para obter mais informações sobre tags de objeto, consulte [Categorizar objetos usando tags](object-tagging.md).

1. Para adicionar metadados, escolha **Add metadata (Adicionar metadados)**.

   1. Em **Type (Tipo)**, escolha **System defined (Definido pelo sistema)** ou **User defined (Definido pelo usuário)**.

      Para metadados definidos pelo sistema, você pode selecionar cabeçalhos HTTP comuns, como **Content-Type** e **Content-Disposition**. Para obter uma lista de metadados definidos pelo sistema e informações sobre a possibilidade de adicionar o valor, consulte [Metadados do objeto definidos pelo sistema](UsingMetadata.md#SysMetadata). Todos os metadados que começam com o prefixo `x-amz-meta-` são tratados como metadados definidos pelo usuário. Os metadados definidos pelo usuário são armazenados com o objeto e retornados quando você baixa o objeto. As chaves e seus valores devem estar em conformidade com os padrões US-ASCII. Metadados definidos pelo usuário podem ter até 2 KB. Para obter mais informações sobre metadados definidos pelo sistema e pelo usuário, consulte [Trabalhar com metadados de objeto](UsingMetadata.md).

   1. Para **Key (Chave)**, escolha uma chave.

   1. Digite um valor para a chave. 

1. Para carregar seus objetos, escolha **Upload (Fazer upload)**.

   O Amazon S3 faz o upload do objeto. Quando o upload for concluído, você pode ver uma mensagem de sucesso na página de **Upload: status**.

1. Selecione **Exit (Sair)**.

### Como usar o AWS CLI
<a name="UploadObjSingleOpCLI"></a>

Você pode enviar uma solicitação `PUT` para fazer upload de um objeto de até 5 GB em uma única operação. Para obter mais informações, consulte o exemplo de [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html#examples](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html#examples) na *Referência de comandos da AWS CLI*.

### Uso da API REST
<a name="UploadObjSingleOpREST"></a>

Você pode enviar solicitações REST para fazer upload de um objeto. Você pode enviar uma solicitação `PUT` para carregar dados em uma única operação. Para obter mais informações, consulte [Objeto PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html).

### Usar SDKs da AWS
<a name="UploadInSingleOp"></a>

Consulte exemplos de como fazer upload de um objeto com os SDKs da AWS em [Exemplos de código](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutObject_section.html) na *Referência de API do Amazon Simple Storage Service*.

Consulte informações gerais sobre como usar diferentes SDKs da AWS em [Desenvolvimento com o Amazon S3 usando SDKs da AWS](https://docs.aws.amazon.com/AmazonS3/latest/API/sdk-general-information-section.html) na *Referência de API do Amazon Simple Storage Service*.

## Impedir o upload de objetos com nomes de chave idênticos
<a name="upload-objects-with-same-key-name"></a>

É possível conferir a existência de um objeto no bucket antes de criá-lo usando uma gravação condicional nas operações de upload. Isso pode evitar a substituição de dados existentes. As gravações condicionais confirmarão que não há nenhum objeto com o mesmo nome de chave no bucket durante o upload.

É possível usar gravações condicionais para solicitações [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) ou [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html).

Para ter mais informações sobre solicitações condicionais, consulte [Adicionar condições prévias às operações do S3 com solicitações condicionais](conditional-requests.md).