Crie uma função com WebAssembly
Compile e instancie um módulo WebAssembly dentro de uma função, a partir de um array de bytes no código ou de um arquivo .wasm que o handler busca.
Uma função compila e instancia um módulo WebAssembly com a WebAssembly API, dentro do handler. Azion Runtime fornece essa API com a interface que a MDN define. Para conhecer os métodos estáticos e os construtores que ela carrega, consulte WebAssembly.
Os passos abaixo usam Azion Console. O módulo desta página exporta uma operação, increment, e o handler retorna o resultado dela no corpo da resposta. Os bytes do módulo chegam ao handler de duas formas: como um array de bytes no código da função ou como um arquivo .wasm que o handler busca por HTTP.
Pré-requisitos
- Uma conta Azion. Para criar uma, consulte Como criar uma conta na Azion.
- A permissão Edit Functions na conta. Ela concede permissão para criar, editar e remover funções, e também requer a permissão View Functions. Consulte Teams Permissions.
Crie a função com um módulo embutido
O array wasmCode contém o módulo, então o handler o compila sem uma requisição de rede. Para criar a função:
Acesse Azion Console > Products Menu > Libraries > Functions.
Digite um nome para a função. Por exemplo: wasm-increment.
Na aba Code, cole o código a seguir:
A função fica salva e disponível para ser instanciada em uma aplicação.
O array wasmCode é a forma binária do seguinte módulo WAT, que soma 1 ao parâmetro i32 e retorna o resultado:
Um array de bytes faz parte do código-fonte da função, então o módulo conta para o limite de tamanho de código: 6 MB no Azion Console e 20 MB pela Azion API. Consulte Limites de Functions.
Carregue o módulo a partir de uma URL
Um handler lê os bytes do módulo por HTTP em vez de carregá-los. Substitua o array de bytes por uma chamada fetch e passe o corpo da resposta para WebAssembly.instantiate():
O handler compila o que a URL retornar, então uma nova versão do módulo chega à função sem alteração de código. Cada chamada fetch conta como uma sub-requisição e uma invocação faz no máximo 50 delas. Consulte Limites de Functions.
Verifique a resposta
Uma função só é executada depois que uma instância de função a vincula a uma aplicação e uma regra do Rules Engine seleciona essa instância. Para montar essa cadeia, consulte Primeiros passos com Functions.
Para ler a resposta, requisite a URI definida na regra:
O módulo incrementa o valor padrão, 0:
O handler lê o header value da requisição quando ela o carrega. Para incrementar outro inteiro, envie-o nesse header:
O corpo da resposta carrega o resultado que o módulo WebAssembly calculou.