Upload e download de objetos
Faça upload de objetos para um bucket do Object Storage pelo Azion Console, pela API ou pela Azion CLI, depois liste, baixe, substitua e exclua os objetos.
Você faz upload, lista, faz download, substitui e exclui os objetos de um bucket do Object Storage pelo Azion Console, pela API da Azion, pela Azion CLI ou por uma function. Um objeto existe assim que o seu upload é concluído, armazenado sob a key que você deu a ele. O bucket então lista essa key com o seu tamanho e a hora da última modificação.
Para criar o próprio bucket, ou para alterar o nível de acesso que ele carrega, consulte Criar um bucket.
Pré-requisitos
- Um bucket. Para criar um, consulte Criar um bucket.
- Um arquivo na sua máquina para fazer upload.
- Acesso ao Azion Console, para os procedimentos pelo Console. Consulte Como acessar o Azion Console.
- Um personal token, para os procedimentos pela API.
- A Azion CLI instalada e autorizada, para os procedimentos pela CLI.
Faça upload de um objeto pelo Azion Console
Azion Console é o caminho mais curto para um punhado de arquivos. A API e a Azion CLI colocam o mesmo upload dentro de um script ou de um pipeline. Os arquivos chegam à área de arquivos do bucket, descrita como “Browse, upload, and manage objects stored in this bucket”. Para fazer upload deles:
Acesse Azion Console > Object Storage > Buckets e selecione o bucket.
Selecione Upload files para um ou mais arquivos, ou Upload folder para um diretório. Arrastar os arquivos até a área de soltura, que diz “Drag files here to add them to your bucket”, também os adiciona.
Cada arquivo é armazenado como um objeto do bucket e aparece na área de arquivos sob a sua key.
Faça upload de um objeto pela API
O nome do bucket e a key do objeto vão no path e o arquivo vai no corpo da requisição. Para fazer upload do objeto:
Substitua [TOKEN VALUE] pelo seu personal token, my-bucket pelo seu bucket e folder/file.csv pela key que você quer:
A API responde com HTTP 201, ou 202 quando processa a requisição de forma assíncrona, e nomeia a key sob a qual armazenou o objeto:
O objeto é armazenado sob folder/file.csv. O segmento folder/ faz parte da key: Object Storage cria o prefix junto com o upload e nenhuma requisição o cria antes.
Faça upload de um objeto pela Azion CLI
O comando lê o arquivo nomeado em --source e o armazena sob --object-key. Para fazer upload do objeto:
O comando imprime uma linha:
O objeto é armazenado no bucket, sob a key que você passou em --object-key.
Liste os objetos de um bucket
Toda interface retorna as keys que o bucket guarda e a API restringe a lista a um prefix.
Azion Console
Acesse Azion Console > Object Storage > Buckets e selecione o bucket. A sua área de arquivos lista os objetos que ele guarda.
A API
Envie uma requisição GET para o endpoint de objetos:
A resposta carrega uma entrada por objeto: a sua key, a hora da última modificação, o seu tamanho em bytes e se a entrada é um prefix.
Quatro query parameters moldam a listagem:
| Parâmetro | O que faz |
|---|---|
prefix | Retorna as keys que começam com o valor. O padrão é vazio, o que retorna todas as keys |
all_levels | Tem true como padrão e retorna as keys em todos os níveis abaixo do prefix |
max_object_count | Define quantas entradas uma resposta carrega, até 1.000 |
continuation_token | Retorna as entradas que vêm depois do token que a resposta anterior carregou |
Com all_levels=false, um prefix é retornado como uma entrada, em vez das keys abaixo dele:
A Azion CLI
Nomeie o bucket com --bucket-name:
O comando imprime uma tabela com uma coluna KEY e uma coluna LAST MODIFIED. --details adiciona uma coluna SIZE e --next-page avança para a página seguinte.
A listagem nomeia todas as keys que o bucket guarda, que é como você confirma que um upload chegou.
Faça download de um objeto
Um download retorna os bytes de um objeto, endereçado pela sua key.
A API
Envie uma requisição GET para a key:
A API responde com HTTP 200 e com o objeto como application/octet-stream, então o terminal imprime o conteúdo do objeto. Uma key que não existe responde com HTTP 404 e o erro 17013, Object Does Not Exist.
Para escrever o objeto em um arquivo local, adicione as opções -O e -J do curl. Elas pegam o nome do objeto nos headers da resposta e escrevem a saída em um arquivo:
A Azion CLI
Nomeie o bucket e a key:
O comando imprime o conteúdo do objeto.
Agora você tem os bytes do objeto, no terminal ou em um arquivo local.
Substitua um objeto
Dois métodos escrevem sobre o objeto armazenado sob uma key e eles diferem no que fazem com uma key que ainda não existe. POST armazena o objeto nos dois casos e responde com HTTP 201. PUT apenas substitui: um PUT para uma key que não existe responde com HTTP 404 e o erro 17013, Object Does Not Exist.
A API
Envie uma requisição PUT para a key, com o novo arquivo como corpo:
A API responde com HTTP 200, ou 202 quando processa a requisição de forma assíncrona, e nomeia a key que substituiu:
A Azion CLI
Nomeie o novo arquivo em --source:
O comando imprime uma linha:
azion update storage object -h lista todas as flags que ele aceita.
A key agora endereça o novo conteúdo e o conteúdo que ela guardava não existe mais.
Exclua um objeto
Uma exclusão é assíncrona. A Azion aceita a requisição, a key sai da listagem imediatamente e o objeto é removido permanentemente após um período de carência de 24 horas.
Azion Console
Para excluir os objetos:
Acesse Azion Console > Object Storage > Buckets e selecione o bucket.
Azion Console pergunta “Are you sure you want to delete the selected files?” antes de removê-los.
Os objetos saem da área de arquivos do bucket.
A API
Envie uma requisição DELETE para a key:
A API responde com HTTP 202 e reporta a exclusão como pendente:
A key sai da listagem e uma requisição por ela responde com HTTP 404 imediatamente.
A Azion CLI
Nomeie o bucket e a key:
O comando nomeia a key que removeu:
O objeto não responde a nenhuma requisição e uma segunda exclusão da mesma key retorna o erro 17013, Object Does Not Exist.
Leia e escreva objetos a partir de uma function
Uma function alcança o mesmo bucket pelo módulo azion:storage, então uma aplicação armazena o que uma requisição carrega e retorna o que o bucket guarda. Para colocar o bucket atrás de uma function:
Crie uma function em Functions com este código. Ele roteia por método. Um POST escreve o corpo da requisição sob a key retirada do path da requisição. Um GET lê o objeto de volta e responde com o content type com que ele foi armazenado.
Os valores que ele carrega:
| Variável | Descrição |
|---|---|
path | O caminho até o objeto. Exemplo: ./path/file.csv |
bucket_name | O nome do bucket. Exemplo: my-bucket |
content_type | O MIME type do objeto. Exemplo: text/csv |
value | O conteúdo do objeto, como dados binários |
A function lê o nome do bucket dos seus próprios argumentos, então adicione a propriedade bucket com o nome do seu bucket como string:
Uma function responde a uma requisição somente quando uma aplicação a executa, então instancie a function na aplicação que recebe os uploads.
Um POST para a aplicação armazena o corpo da requisição no bucket. Um GET para o mesmo path retorna o objeto com o content type com que ele foi armazenado.