Edge Storage API
A Edge Functions Storage API é uma interface que permite o acesso ao Azion Edge Storage. Através dessa interface, é possível ler e escrever dados no storage e seus buckets.
Instanciação da classe
Para a utilização dessa API, é necessário importar e instanciar a classe Storage
, passando o nome do bucket.
Sintaxe
Importação:
import Storage from "azion:storage";
Instanciação:
const storage = new Storage(bucket);
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
bucket | String | Nome de um bucket |
Valor de Retorno
Objeto Storage
usado para acessar o Edge Storage.
Métodos
async storage.put
O método Storage.put
é usado para inserir um novo objeto no storage.
Sintaxe
async Storage.put(key, value, options)
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
key | String | Identificador que permite a busca por um objeto no storage |
value | ArrayBuffer ou ReadableStream | Conteúdo do objeto sendo armazenado. No caso de value implementar um ReadableStream, as APIs de Stream podem ser usadas e a opção content-length é obrigatória |
options | Object | Os atributos options são descritos na tabela abaixo |
options
Para passar o parâmetro options
, você deve fornecer um objeto com os seguintes atributos:
Atributo | Tipo | Descrição |
---|---|---|
content-type | String | O content-type do objeto sendo criado. É semelhante ao cabeçalho HTTP content-type e descreve como o conteúdo do Edge Storage deve ser tratado. content-type é opcional. O valor padrão é application/octet-stream |
content-length | String | O tamanho do objeto a ser criado, em bytes. É obrigatório quando o valor é ReadableStream |
metadata | Object | Qualquer objeto JavaScript contendo informações sobre o objeto que será armazenado no Storage. Todas as propriedades do objeto devem ser strings |
Retorno
Sucesso | Erro |
---|---|
Nenhuma resposta | Lança um StorageError |
Exemplo de Código
- Para persistir o corpo da requisição:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket"; const storage = new Storage(bucket); const key = "teste"; const inputStream = event.request.body; let contentLength = event.request.headers.get("content-length"); await storage.put(key, inputStream, { "content-length": contentLength }); return new Response("OK"); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
- Para persistir um objeto JSON:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket"; const storage = new Storage(bucket); const key = "teste"; const data = JSON.stringify({ nome:"João", endereco:"Abbey Road" }); const buffer = new TextEncoder().encode(data); await storage.put(key, buffer); return new Response("OK"); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
- Para salvar um JSON com metadados:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket"; const storage = new Storage(bucket); const key = "teste2"; const data = JSON.stringify({ nome:"Paulo", endereco:"Abbey Road" }); const buffer = new TextEncoder().encode(data); const options = { "content-type": "application/json", "metadata": { info:"informação de teste", contador: "1", }} await storage.put(key, buffer, options); return new Response("OK"); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
async storage.get(key)
O método storage.get(key)
é usado para recuperar um objeto.
Sintaxe
async storage.get(key)
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
key | String | Identificador que permite a busca por um objeto no bucket |
Retorno
Sucesso | Erro |
---|---|
Retorna um objeto da classe StorageObject | Lança um StorageError |
Exemplo de Código
- Para recuperar e retornar o conteúdo do storage:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket"; const storage = new Storage(bucket); const key = "teste"; const storageObject = await storage.get(key); return new Response(storageObject.content); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
- Para obter um JSON do storage:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket";
const storage = new Storage(bucket); const key = "teste"; const storageObject = await storage.get(key); const data = new TextDecoder().decode(await storageObject.arrayBuffer()); return new Response(data); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
- Para ler os metadados de um objeto:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket"; const storage = new Storage(bucket); const key = "teste2"; const storageObject = await storage.get(key); return new Response(storageObject.metadata.get("info")); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
async storage.delete(key)
O Storage.delete(key)
é usado para remover um objeto do Edge Storage.
Sintaxe
async Storage.delete(key)
Parâmetros
Parâmetro | Tipo | Descrição |
---|---|---|
key | String | Identificador que permite a busca por um objeto no bucket |
Retorno
Sucesso | Erro |
---|---|
Nenhuma resposta | Lança um StorageError |
Exemplo de Código
- Para excluir um objeto armazenado no Edge Storage:
import Storage from "azion:storage";
async function handleRequest(event) { const bucket = "meubucket"; const storage = new Storage(bucket); const key = "teste"; try{ await storage.delete(key); }catch(error){ return new Response(error, {status:500}); } return new Response("Ok");}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
async storage.list()
O método Storage.list()
é usado para listar todos os objetos pertencentes ao bucket
específico.
Sintaxe
await storage.list()
Retorno
Sucesso | Erro |
---|---|
Retorna StorageObjectList | Lança um StorageError |
Exemplo de Código
- Listando objetos do Edge Storage:
import Storage from "azion:storage";
async function handleRequest(event) { try{ const bucket = "meubucket"; const storage = new Storage(bucket); const objectsList = await storage.list(); for (const entry of objectsList.entries) { console.log(`chave: ${entry.key} tamanho: ${entry.content_length}`); } return new Response("Ok"); }catch(error){ return new Response(error, {status:500}); }}
addEventListener("fetch", (event) => { event.respondWith(handleRequest(event));});
Métodos da Classe StorageObject
Método | Descrição |
---|---|
StorageObject.content | Propriedade de leitura contendo um ReadableStream para o conteúdo armazenado no storage |
async StorageObject.arrayBuffer() | Função assíncrona que retorna um ArrayBuffer com o conteúdo armazenado no storage. Este método consome o ReadableStream da propriedade de content |
StorageObject.metadata | Propriedade de leitura contendo um objeto Map com os metadados do objeto armazenados no storage |
StorageObject.contentType | Propriedade de leitura contendo o content-type do conteúdo armazenado no storage |
StorageObject.contentLength | Propriedade de leitura contendo o tamanho em bytes do conteúdo armazenado no storage |
Contribuidores