Objeto POST
Descrição
A operação POST adiciona um objeto a um bucket especificado usando formulários HTML. POST é uma forma alternativa de PUT que permite uploads baseados no navegador como forma de colocar objetos em buckets. Os parâmetros transmitidos para PUT por meio de cabeçalhos HTTP são passados como campos de formulário para POST no corpo da mensagem com codificação multipart/form-data. Para adicionar um objeto a um bucket, é preciso ter acesso de WRITE no bucket. O Amazon S3 nunca armazena objetos parciais. Se você receber uma resposta bem-sucedida, pode ter certeza de que o objeto inteiro foi armazenado.
O Amazon S3 é um sistema distribuído. A menos que você tenha habilitado o versionamento para um bucket, se o Amazon S3 receber diversas solicitações de gravação para o mesmo objeto simultaneamente, apenas a última versão gravada do objeto será armazenada.
Para garantir que os dados não sejam corrompidos ao atravessar a rede, use o campo de formulário Content-MD5. Quando você usa esse campo, o Amazon S3 verifica o objeto em relação ao valor MD5 fornecido. Se eles não corresponderem, o Amazon S3 retornará um erro. Além disso, você pode calcular o valor MD5 ao publicar um objeto no Amazon S3 e comparar o ETag retornado com o valor calculado de MD5. O ETag reflete as alterações apenas no conteúdo de um objeto, não nos metadados.
nota
Para configurar seu aplicativo para enviar os cabeçalhos da solicitação antes de enviar o corpo da solicitação, use o código de status HTTP 100 (Continue). Para operações POST, o uso desse código de status ajuda a evitar o envio do corpo da mensagem se a mensagem for rejeitada com base nos cabeçalhos (por exemplo, devido a uma falha de autenticação ou um redirecionamento). Para obter mais informações sobre o código de status HTTP 100 (Continue), acesse a Seção 8.2.3 de http://www.ietf.org/rfc/rfc2616.txt
O Amazon S3 criptografa automaticamente todos os novos objetos que são carregados em um bucket do S3. A configuração de criptografia de um objeto carregado depende da configuração de criptografia padrão do bucket de destino. Por padrão, todos os buckets têm uma configuração de criptografia padrão que usa criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3).
Se o bucket de destino tiver uma configuração de criptografia padrão que usa criptografia do lado do servidor com uma chave do AWS Key Management Service (AWS KMS) (SSE-KMS), uma criptografia de camada dupla do lado do servidor com uma chave do AWS KMS (DSSE-KMS) ou uma chave de criptografia fornecida pelo cliente (SSE-C), o Amazon S3 usará a chave do KMS correspondente ou uma chave fornecida pelo cliente para criptografar o objeto carregado. Ao carregar um objeto, se você quiser alterar a configuração de criptografia do objeto carregado, poderá especificar o tipo de criptografia no lado do servidor. Você pode configurar SSE-S3, SSE-KMS, DSSE-KMS ou SSE-C. Para obter mais informações, consulte Proteção de dados usando criptografia no lado do servidor no Guia do usuário do Amazon Simple Storage Service.
Importante
Ao criar sua solicitação, o campo file deve ser o último campo no formulário.
Solicitações
Sintaxe
POST / HTTP/1.1 Host:destinationBucket.s3.amazonaws.com User-Agent:browser_dataAccept:file_typesAccept-Language:RegionsAccept-Encoding:encodingAccept-Charset:character_setKeep-Alive: 300 Connection: keep-alive Content-Type: multipart/form-data; boundary=9431149156168 Content-Length:length--9431149156168 Content-Disposition: form-data; name="key"acl--9431149156168 Content-Disposition: form-data; name="tagging" <Tagging><TagSet><Tag><Key>Tag Name</Key><Value>Tag Value</Value></Tag></TagSet></Tagging> --9431149156168 Content-Disposition: form-data; name="success_action_redirect"success_redirect--9431149156168 Content-Disposition: form-data; name="Content-Type"content_type--9431149156168 Content-Disposition: form-data; name="x-amz-meta-uuid"uuid--9431149156168 Content-Disposition: form-data; name="x-amz-meta-tag"metadata--9431149156168 Content-Disposition: form-data; name="AWSAccessKeyId"access-key-id--9431149156168 Content-Disposition: form-data; name="Policy"encoded_policy--9431149156168 Content-Disposition: form-data; name="Signature"signature= --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename.jpg" Content-Type: image/jpegfile_content--9431149156168 Content-Disposition: form-data; name="submit" Upload to Amazon S3 --9431149156168--
Parâmetros da solicitação
Essa implementação da operação não usa parâmetros de solicitação.
Campos do formulário
Esta operação pode usar os seguintes campos de formulário.
| Name (Nome) | Descrição | Obrigatório |
|---|---|---|
AWSAccessKeyId |
O ID da chave de acesso da AWS do proprietário do bucket que concede acesso a um usuário anônimo para uma solicitação que satisfaz o conjunto de restrições na política. Tipo: string Padrão: nenhum Restrições: será obrigatório se um documento de política estiver incluso na solicitação. |
Condicional |
acl |
A lista de controle de acesso (ACL) do Amazon S3 especificada. Se a ACL especificada não for válida, um erro será gerado. Para obter mais informações sobre ACLs, consulte Visão geral da lista de controle de acesso (ACL) no Guia do usuário do Amazon Simple Storage Service. Tipo: string Padrão: privado Valores válidos: |
Não |
Cache-Control, Content-Type,
Content-Disposition, Content-Encoding,
Expires |
Os cabeçalhos específicos para REST. Para obter mais informações, consulte PutObject. Tipo: string Padrão: nenhum |
Não |
file |
Conteúdo de arquivo ou texto. Esse conteúdo deve ser o último campo no formulário. Não carregue mais de um arquivo por vez. Tipo: conteúdo de arquivo ou texto Padrão: nenhum |
Sim |
key |
O nome da chave carregada. Para usar o nome de arquivo fornecido pelo usuário, use a variável Para obter mais informações, consulte Chave e metadados de objeto no Guia do usuário do Amazon Simple Storage Service. Tipo: string Padrão: nenhum |
Sim |
policy |
Política de segurança que descreve o que é permitido na solicitação. As solicitações sem uma política de segurança são consideradas anônimas e funcionam apenas em buckets com gravação pública. Para obter mais informações, consulte Formulários HTML e Exemplos de upload no Guia do usuário do Amazon Simple Storage Service. Tipo: string Padrão: nenhum Restrições: uma política de segurança será necessária se o bucket não puder ser gravado publicamente. |
Condicional |
success_action_redirect, redirect |
O URL para o qual o cliente é redirecionado após um upload bem-sucedido. Se Se o Amazon S3 não conseguir interpretar o URL, o campo será ignorado. Se houver falha no upload, o Amazon S3 exibirá um erro e não redirecionará o usuário para um URL. Tipo: string Padrão: nenhum notaO nome do campo |
Não |
success_action_status |
Se você não especificar Esse campo aceita os valores Se o valor estiver definido como Se o valor estiver definido como Se o valor não estiver definido ou se estiver definido como um valor inválido, o Amazon S3 retornará um documento vazio com um código de status 204. Tipo: string Padrão: nenhum |
Não |
tagging |
O conjunto de tags especificado a ser adicionado ao objeto. Para adicionar tags, use o seguinte esquema de codificação.
Para obter mais informações, consulte Marcação de objetos no Guia do usuário do Amazon Simple Storage Service. Tipo: string Padrão: nenhum |
Não |
x-amz-storage-class |
A classe de armazenamento a ser usada para armazenar o objeto. Se você não especificar uma classe, o Amazon S3 usará a classe de armazenamento padrão, Tipo: string Padrão: Valores válidos: |
Não |
x-amz-meta-* |
Os cabeçalhos que começam com esse prefixo são metadados definidos pelo usuário. Cada um é armazenado e retornado como um conjunto de pares de chave-valor. O Amazon S3 não valida nem interpreta metadados definidos pelo usuário. Para obter mais informações, consulte PutObject. Tipo: string Padrão: nenhum |
Não |
x-amz-security-token |
O token de segurança do Amazon DevPay. Cada solicitação que usa o Amazon DevPay requer dois campos do formulário Tipo: string Padrão: nenhum |
Não |
x-amz-signature |
(AWS Signature Version 4) O hash HMAC-SHA256 da política de segurança. Tipo: string Padrão: nenhum |
Condicional |
x-amz-website-redirect-location
|
Se o bucket estiver configurado como um site, esse campo vai redirecionar solicitações desse objeto para outro objeto no mesmo bucket ou para um URL externo. O Amazon S3 armazena o valor desse cabeçalho nos metadados de objeto. Para obter informações sobre metadados de objeto, consulte Chave e metadados de objeto no Guia do usuário do Amazon Simple Storage Service. No exemplo a seguir, o cabeçalho da solicitação define o redirecionamento para um objeto (
No exemplo a seguir, o cabeçalho da solicitação define o redirecionamento do objeto para outro site:
Para obter mais informações sobre hospedagem de sites no Amazon S3, consulte Hospedagem de sites no Amazon S3 e Como configurar redirecionamentos de páginas de sites no Guia do usuário do Amazon Simple Storage Service. Tipo: string Padrão: nenhum Restrições: o valor deve ter o prefixo |
Não |
Campos adicionais do formulário de solicitação de soma de verificação
Ao fazer upload de um objeto, você pode especificar várias somas de verificação que deseja usar para verificar a integridade dos seus dados. Você pode especificar um algoritmo de soma de verificação adicional a ser usado pelo Amazon S3. Para obter mais informações sobre valores adicionais de soma de verificação, consulte Verificação da integridade do objeto no Guia do usuário do Amazon Simple Storage Service.
| Name (Nome) | Descrição | Obrigatório |
|---|---|---|
x-amz-checksum-algorithm
|
Indica o algoritmo usado para criar a soma de verificação do objeto. Se um valor for especificado, você deverá incluir o cabeçalho de soma de verificação correspondente. Caso contrário, sua solicitação gerará um erro 400. Os possíveis valores incluem: |
Não |
x-amz-checksum-crc32
|
Especifica a soma de verificação CRC32 de 32 bits com codificação base64 do objeto. Esse parâmetro será necessário quando o valor de |
Condicional |
x-amz-checksum-crc32c
|
Especifica a soma de verificação CRC32C de 32 bits com codificação base64 do objeto. Esse parâmetro será necessário quando o valor de |
Condicional |
x-amz-checksum-sha1
|
Especifica o resumo SHA-1 de 160 bits com codificação base64 do objeto. Esse parâmetro será necessário quando o valor de |
Condicional |
x-amz-checksum-sha256
|
Especifica o resumo SHA-256 de 256 bits com codificação base64 do objeto. Esse parâmetro será necessário quando o valor de |
Condicional |
Campos do formulário de solicitação específicos para criptografia no lado do servidor
A criptografia no lado do servidor é a criptografia de dados em repouso. O Amazon S3 criptografa os dados ao gravá-los em discos nos data centers da AWS e os descriptografa quando você os acessa. Ao fazer upload de um objeto, você pode especificar o tipo de criptografia no lado do servidor que deseja que o Amazon S3 use para criptografar o objeto.
Há quatro tipos de criptografia no lado do servidor:
-
Criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3): desde maio de 2022, todos os buckets do Amazon S3 têm a criptografia configurada por padrão. A opção padrão para a criptografia do lado do servidor é com SSE-S3. Cada objeto é criptografado com uma chave exclusiva. Como uma proteção adicional, a SSE-S3 criptografa a própria chave com uma chave-raiz que alterna regularmente. A SSE-S3 usa uma das cifras de bloco mais fortes disponíveis, o padrão de criptografia avançada de 256 bits (AES-256), para criptografar os dados.
-
Criptografia do lado do servidor com chaves do AWS KMS (SSE-KMS): SSE-KMS é fornecido por meio de uma integração do serviço AWS KMS com o Amazon S3. Com o AWS KMS, você tem mais controle sobre suas chaves. Por exemplo, você pode visualizar chaves separadas, editar políticas de controle e seguir as chaves no AWS CloudTrail. Além disso, é possível criar e gerenciar chaves gerenciadas pelo cliente ou usar Chaves gerenciadas pela AWS que são exclusivas para você, para o seu serviço e para a sua região.
-
Criptografia de camada dupla do lado do servidor com chaves do AWS KMS (DSSE-KMS): a criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) é semelhante à SSE-KMS, mas aplica duas camadas individuais de criptografia no nível do objeto em vez apenas uma.
-
Criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C): com SSE-C, você gerencia as chaves de criptografia e o Amazon S3 gerencia a criptografia, ao gravar em discos, e a descriptografia, quando você acessa os objetos.
nota
Se você tiver a criptografia do lado do servidor com chaves fornecidas pelo cliente (SSE-C) bloqueada para seu bucket de uso geral, receberá um erro HTTP 403 Acesso negado ao especificar os cabeçalhos de solicitação de SSE-C ao gravar novos dados no bucket. Para obter mais informações, consulte Bloqueio ou desbloqueio de SSE-C para um bucket de uso geral.
Para obter mais informações, consulte Como proteger dados usando criptografia do lado do servidor no Guia do usuário do Amazon Simple Storage Service.
Dependendo do tipo de criptografia do lado do servidor que você deseja usar, especifique os campos de formulário a seguir.
-
Usar SSE-S3, SSE-KMS ou DSSE-KMS: se você quiser usar esses tipos de criptografia do lado do servidor, especifique os campos de formulário a seguir na solicitação.
Name (Nome) Descrição Obrigatório x-amz-server-side-encryptionEspecifica o algoritmo de criptografia do lado do servidor a ser usado quando o Amazon S3 cria um objeto. Para usar SSE-S3, especifique
AES256. Para usar SSE-KMS, especifiqueaws:kms. Para usar DSSE-KMS, especifiqueaws:kms:dsse.Tipo: string
Valor válido:
aws:kms,AES256,aws:kms:dsseSim x-amz-server-side-encryption-aws-kms-key-idSe o cabeçalho
x-amz-server-side-encryptiontiver um valor válido deaws:kmsouaws:kms:dsse, esse cabeçalho vai especificar o ID da AWS KMS key que foi usada para criptografar o objeto.Tipo: string
Sim, se o valor de x-amz-server-side-encryptionforaws:kmsouaws:kms:dssex-amz-server-side-encryption-contextSe
x-amz-server-side-encryptiontiver um valor válido deaws:kmsouaws:kms:dsse, esse cabeçalho vai especificar o contexto de criptografia do objeto. O valor deste cabeçalho é uma string UTF-8 com codificação base64 que contém pares de chave-valor formatados em JSON para o contexto de criptografia.Tipo: string
Não x-amz-server-side-encryption-bucket-key-enabledSe
x-amz-server-side-encryptiontiver um valor válido deaws:kmsouaws:kms:dsse, esse cabeçalho vai especificar se o Amazon S3 deve usar uma chave de bucket do S3 com SSE-KMS ou DSSE-KMS. Definir esse cabeçalho comotruefaz com que o Amazon S3 use uma chave de bucket do S3 para criptografia de objetos com SSE-KMS ou DSSE-KMS.Tipo: booliano
Não nota
Se você especificar
x-amz-server-side-encryption:aws:kmsoux-amz-server-side-encryption:aws:kms:dsse, mas não fornecerx-amz-server-side-encryption-aws-kms-key-id, o Amazon S3 usará Chave gerenciada pela AWS (aws/S3) para proteger os dados. -
Usar SSE-C: se você quiser gerenciar suas próprias chaves de criptografia, deverá fornecer todos os seguintes campos de formulário na solicitação.
nota
Se você usar SSE-C, o valor de
ETagque o Amazon S3 retorna na resposta não será o MD5 do objeto.Name (Nome) Descrição Obrigatório x-amz-server-side-encryption-customer-algorithmEspecifica o algoritmo a ser usado ao criptografar o objeto.
Tipo: string
Padrão: nenhum
Valor válido:
AES256Restrições: deve ser acompanhado por campos
x-amz-server-side-encryption-customer-keyex-amz-server-side-encryption-customer-key-MD5válidos.Sim x-amz-server-side-encryption-customer-keyEspecifica a chave de criptografia com codificação base64 fornecida pelo cliente para o Amazon S3 usar na criptografia de dados. Esse valor é usado para armazenar o objeto e, em seguida, é descartado. A Amazon não armazena a chave de criptografia. A chave deve ser apropriada para uso com o algoritmo especificado no cabeçalho
x-amz-server-side-encryption-customer-algorithm.Tipo: string
Padrão: nenhum
Restrições: deve ser acompanhado por campos
x-amz-server-side-encryption-customer-algorithmex-amz-server-side-encryption-customer-key-MD5válidos.Sim x-amz-server-side-encryption-customer-key-MD5Especifica o resumo MD5 com codificação base64 de 128 bits da chave de criptografia de acordo com RFC 1321
. O Amazon S3 usa esse cabeçalho para fazer uma verificação de integridade de mensagens e conferir se a chave de criptografia foi transmitida sem erros. Tipo: string
Padrão: nenhum
Restrições: deve ser acompanhado por campos
x-amz-server-side-encryption-customer-algorithmex-amz-server-side-encryption-customer-keyválidos.Sim
Respostas
Cabeçalhos de resposta
Essa implementação da operação pode incluir os seguintes cabeçalhos de resposta, além dos cabeçalhos que são comuns a todas as respostas. Para obter mais informações, consulte Cabeçalhos de resposta comuns.
| Name (Nome) | Descrição |
|---|---|
x-amz-checksum-crc32
|
A soma de verificação CRC32 de 32 bits com codificação base64 do objeto. Tipo: string |
x-amz-checksum-crc32c
|
A soma de verificação CRC32C de 32 bits com codificação base64 do objeto. Tipo: string |
x-amz-checksum-sha1
|
O resumo SHA-1 de 160 bits com codificação base64 do objeto. Tipo: string |
x-amz-checksum-sha256
|
O resumo SHA-256 de 256 bits com codificação base64 do objeto. Tipo: string |
x-amz-expiration
|
Se uma ação Tipo: string |
success_action_redirect, redirect
|
O URL para o qual o cliente é redirecionado após um upload bem-sucedido. Tipo: string Ancestral: PostResponse |
x-amz-server-side-encryption
|
O algoritmo de criptografia no lado do servidor que foi usado para armazenar esse objeto no Amazon S3 (por exemplo, Tipo: string |
x-amz-server-side-encryption-aws-kms-key-id
|
Se o cabeçalho Tipo: string |
x-amz-server-side-encryption-bucket-key-enabled
|
Se Tipo: booliano |
x-amz-server-side-encryption-customer-algorithm
|
Se SSE-C tiver sido solicitado, a resposta incluirá esse cabeçalho, que confirma o algoritmo de criptografia usado. Tipo: string Valores válidos: |
x-amz-server-side-encryption-customer-key-MD5
|
Se SSE-C tiver sido solicitado, a resposta incluirá esse cabeçalho para verificar a integridade da mensagem de ida e volta da chave de criptografia fornecida pelo cliente. Tipo: string |
x-amz-version-id |
Versão do objeto. Tipo: string |
Elementos de resposta
| Name (Nome) | Descrição |
|---|---|
Bucket
|
O nome do bucket em que o objeto foi armazenado. Tipo: string Antepassado: PostResponse |
ETag
|
O ETag (identificador de entidade) é um hash MD5 do objeto que você pode usar para fazer operações Tipo: string Antepassado: PostResponse |
Key
|
O nome da chave de objeto. Tipo: string Antepassado: PostResponse |
Location
|
O URI do objeto. Tipo: string Antepassado: PostResponse |
Erros especiais
Essa implementação da operação não retorna erros especiais. Para obter informações gerais sobre erros do Amazon S3 e uma lista de códigos de erro, consulte Respostas de erro.
Exemplos
Exemplo de solicitação
POST /Neo HTTP/1.1 Content-Length: 4 Host: quotes.s3.amazonaws.com Date: Wed, 01 Mar 2006 12:00:00 GMT Authorization:authorization stringContent-Type: text/plain Expect: the 100-continue HTTP status codeObjectContent
Resposta de exemplo com versionamento suspenso
Veja a seguir uma resposta de exemplo quando o versionamento do bucket está suspenso:
HTTP/1.1 100 Continue HTTP/1.1 200 OK x-amz-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-amz-request-id: 0A49CE4060975EAC x-amz-version-id: default Date: Wed, 12 Oct 2009 17:50:00 GMT ETag: "1b2cf535f27731c974343645a3985328" Content-Length: 0 Connection: close Server: AmazonS3
Nessa resposta, o ID da versão é null.
Resposta de exemplo com versionamento habilitado
Veja a seguir uma resposta de exemplo quando o versionamento do bucket está habilitado.
HTTP/1.1 100 Continue HTTP/1.1 200 OK x-amz-id-2: LriYPLdmOdAiIfgSm/F1YsViT1LW94/xUQxMsF7xiEb1a0wiIOIxl+zbwZ163pt7 x-amz-request-id: 0A49CE4060975EAC x-amz-version-id: 43jfkodU8493jnFJD9fjj3HHNVfdsQUIFDNsidf038jfdsjGFDSIRp Date: Wed, 01 Mar 2006 12:00:00 GMT ETag: "828ef3fdfa96f00ad9f27c383fc9ac7f" Content-Length: 0 Connection: close Server: AmazonS3