Como criar uma edge function usando WebAssembly na plataforma de Edge da Azion

Saiba mais sobre o processo necessário para a criação de uma edge function que utiliza uma função originada de um arquivo WebAssembly.

  1. No Azion Console, no canto superior esquerdo, selecione Edge Functions na seção Edge Libraries.
  2. Clique em Add a Function.
  3. Escolha um nome para sua função.
  4. Em Language, selecione JavaScript.
  5. Copie e cole o seguinte código de exemplo no bloco de código:
async function handleRequest(request) {
// You can either retrieve your .wasm file through fetch, for instance :
// let wasmResponse = await fetch("http://somedomain/yourfile.wasm")
// or embed the binary in the code, as shown below.
const wasmCode = new Uint8Array([
0, 97, 115, 109, 1, 0, 0, 0, 1, 6, 1, 96, 1, 127, 1, 127, 3, 2, 1, 0, 7, 13, 1, 9, 105, 110, 99, 114, 101,
109, 101, 110, 116, 0, 0, 10, 9, 1, 7, 0, 32, 0, 65, 1, 106, 11,
]);
const wasmModule = new WebAssembly.Module(wasmCode);
const wasmInstance = new WebAssembly.Instance(wasmModule);
const increment = wasmInstance.exports.increment;
let value = 0;
if (request.headers.has("value")) {
let number = request.headers.get("value");
if (!isNaN(number)) {
value = parseInt(number);
}
}
let incremented = increment(value);
return new Response(
"incrementing " + value + " we have " + incremented
);
}
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});

A constante wasmCode é a representação binária do seguinte código WAT:

(module
(type (;0;) (func (param i32) (result i32)))
(func (;0;) (type 0) (param i32) (result i32)
local.get 0
i32.const 1
i32.add)
(export “increment” (func 0)))

Nota: um código WAT é a representação textual do formato binário do wasm, usado para permitir que o WebAssembly seja lido e editado por humanos.

  1. Clique no botão Save

Agora, a função está pronta para ser instanciada em uma edge application. Veja como instanciar e executar as funções em sua edge application.

A saída esperada da função recém-criada é semelhante a:

incrementing 0 we have 1

Contribuidores