Como fazer o upload e download de objetos de um bucket do Edge Storage
O Edge Storage da Azion permite que você crie buckets e integre seu armazenamento de objetos com sua infraestrutura do edge. Este guia abrange como fazer upload e download de objetos de um bucket usando a API da Azion e Azion Runtime.
Saiba mais sobre Edge StorageConsulte o guia Como criar e modificar um bucket de Edge Storage da Azion para operações em buckets.
Via API
Faça upload de objeto para um bucket
Para fazer o upload de um objeto, execute a seguinte requisição POST
em seu terminal, substituindo [TOKEN VALUE]
por seu personal token, <bucket_name>
pelo nome do seu bucket, <object_key>
por um ID ou nome para o objeto, o cabeçalho Content-Type
com o MIME type sendo enviado, e o arquivo enviado convertido em data binary:
curl --location 'https://api.azion.com/v4/storage/buckets/<bucket_name>/objects/<object_key>' \--header 'Accept: application/json; version=3' \--header 'Content-Type: text/csv' \--header 'Authorization: Token [TOKEN VALUE]' \--data '@./path/file.csv'
Você deverá receber a seguinte resposta:
{ "state": "executed", "data": { "object_key": "folder/csv-file" }}
Faça download de objeto de um bucket
Para fazer o download de um objeto, execute a seguinte requisição GET
em seu terminal, substituindo [TOKEN VALUE]
por seu personal token, <bucket_name>
pelo nome do seu bucket, e <object_key>
pela chave criada para o objeto:
curl --location 'https://api.azion.com/v4/storage/buckets/<bucket_name>/objects/<object_key>' \--header 'Accept: application/json; version=3' \--header 'Authorization: Token [TOKEN VALUE]'
Você agora deve ver o conteúdo do objeto em seu terminal.
Via Azion Runtime
Você pode criar uma edge function para fazer upload de arquivos para seu bucket usando um comando de console POST
e verificar se um arquivo está disponível usando um comando de console GET
. Para fazer isso:
- Accesse o Azion Console > Edge Functions.
- Clique no botão Add Function.
- Dê um nome a sua função. Exemplo:
my-bucket POST+GET
. - Na aba Code, adicione o seguinte código JavaScript:
import Storage from "azion:storage";async function doGet(path, bucket_name) { console.log(`Path: ${path}`); const storage = new Storage(bucket_name); // content is an StorageObject const asset = await storage.get(path); return new Response(await asset.arrayBuffer(), { headers: { "Content-Type": asset.contentType }, });}
async function doPost(path, content_type, value, bucket_name) { console.log(`Path: ${path}`); let options = { "Content-Type": content_type } console.log(`Options: ${options}`); const storage = new Storage(bucket_name); await storage.put(path, value, options); return new Response("Object added.");}
async function router(event) { const request = event.request; const method = request.method; const path = decodeURI(new URL(request.url).pathname); const bucket_name = event.args.bucket; if (method === "POST") { let content_type = request.headers.get("Content-Type"); let content = await request.arrayBuffer(); return doPost(path, content_type, content, bucket_name); } else if (method === "GET") { return doGet(path, bucket_name); } else { throw new Error(`Invalid method: ${method}. Expected POST or GET.`); }}addEventListener("fetch", (event) => { event.respondWith( router(event) );});
Variável | Descrição |
---|---|
path | Caminho do objeto. Exemplo: ./path/file.csv |
bucket_name | Nome do bucket. Exemplo: my-bucket |
content_type | MIME type do objeto. Exemplo: text/csv |
value | Conteúdo do objeto em data binary |
- Na aba Arguments, adicione o objeto com a propriedade
bucket
e, como valor, o nome do bucket em string.
{ "bucket": "my-bucket"}
- Clique no botão Save.
Após criar a edge function, você precisa criar uma edge application que vai intermediar o processo de upload para o bucket.
- Acesse o Azion Console.
- Selecione a opção Start with a template na página inicial.
- Selecione a opção Build from scratch.
- Dê um nome fácil de lembrar para a sua aplicação. Exemplo:
my-bucket Proxy
. - Selecione a opção Run a Function.
- Em Choose Edge Function, selecione a edge function que você criou nos passos anteriores.
- Clique no botão Next.
- Copie o link da edge application. Ele deve estar no formato
http://xxxxxxxxxx.map.azionedge.net
. - Execute o seguinte comando em seu terminal para fazer o upload de um objeto:
curl -v http://xxxxxxxxxx.map.azionedge.net ./path/file.csv txt/csv --data-binary @./path/file.csv my-bucket
- Execute o seguinte comando em seu terminal para fazer o download de um objeto:
curl -v http://xxxxxxxxxx.map.azionedge.net ./path/file.csv my-bucket
O download do objeto deve ocorrer na pasta onde as requisições estão sendo executadas.
Contribuidores