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 Storage

Consulte 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:

Terminal window
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:

Terminal window
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:

  1. Accesse o Azion Console > Edge Functions.
  2. Clique no botão Add Function.
  3. Dê um nome a sua função. Exemplo: my-bucket POST+GET.
  4. 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ávelDescrição
pathCaminho do objeto. Exemplo: ./path/file.csv
bucket_nameNome do bucket. Exemplo: my-bucket
content_typeMIME type do objeto. Exemplo: text/csv
valueConteúdo do objeto em data binary
  1. Na aba Arguments, adicione o objeto com a propriedade bucket e, como valor, o nome do bucket em string.
{
"bucket": "my-bucket"
}
  1. 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.

  1. Acesse o Azion Console.
  2. Selecione a opção Start with a template na página inicial.
  3. Selecione a opção Build from scratch.
  4. Dê um nome fácil de lembrar para a sua aplicação. Exemplo: my-bucket Proxy.
  5. Selecione a opção Run a Function.
  6. Em Choose Edge Function, selecione a edge function que você criou nos passos anteriores.
  7. Clique no botão Next.
  8. Copie o link da edge application. Ele deve estar no formato http://xxxxxxxxxx.map.azionedge.net.
  9. 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
  1. 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