https://github.com/devigned/wasi-worker
https://github.com/devigned/wasi-worker
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/devigned/wasi-worker
- Owner: devigned
- License: mit
- Created: 2023-05-11T15:14:12.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-05-12T12:07:53.000Z (almost 3 years ago)
- Last Synced: 2024-10-05T17:22:02.112Z (over 1 year ago)
- Language: Makefile
- Size: 131 KB
- Stars: 1
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# wasi-worker
Just a super simple illustration of WASI being used locally with Wasmtime and Wrangler, as well as being deployed to CloudFlare.
## Required Tools
- [Cargo](https://rustup.rs)
- [npx](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
- [wasmtime](https://docs.wasmtime.dev/cli-install.html)
- [wrangler](https://developers.cloudflare.com/workers/wrangler/)
- make
## What Can the Makefile Do?
```shell
$ make
Usage:
make
build Build the WASI worker module
run-cf Run the WASI worker module with CloudFlare Wrangler
run-wt Run the WASI worker module with Wasmtime
publish-cf Publish the WASI worker module to CloudFlare
help Display this help.
```
## Instructions for Running with Wasmtime
Before you begin, you need to make sure you have the `wasm32-wasi` target installed. To do this, run the following:
```shell
$ rustup target add wasm32-wasi
```
To run the WASI worker using Wasmtime, run the following:
```shell
$ make run-wt
```
You should see `Hello, world!` output from the worker.
The preceding command will build the Rust worker project, then run wasmtime. If you are curious, take a look at the Makefile.
## Instructions for Running with CloudFlare's Wrangler
To run the WASI worker using CloudFlare's Wrangler, run the following:
```shell
$ make run-cf
```
You should see something like the following output.
Please note that if you don't have `wrangler@wasm` installed, you will be prompted to install it. Please proceed with (y).
It may help to be previously logged in to CloudFlare. If you are not logged in, you will be prompted to login. Please proceed with (y).
The run
```shell
$ make run-cf
cargo build --target wasm32-wasi --release
Finished release [optimized] target(s) in 0.00s
npx wrangler@wasm dev target/wasm32-wasi/release/worker.wasm
⛅️ wrangler 0.0.0-c0d7699
---------------------------
⬣ Listening at http://localhost:8787
Total Upload: 2228.94 KiB / gzip: 563.45 KiB
```
If you open your browser to the URI above, `http://localhost:8787`, you should see `Hello, world!`.
## Instructions for Publishing to CloudFlare
To publish your work to CloudFlare stop the server or open a new tab in your terminal, then run the following. If you had logged out of CloudFlare, you will be prompted to login again. Please proceed with (y) and follow instructions.
```shell
$ make publish-cf
```
You should see something like the following output.
```shell
$ make publish-cf
cargo build --target wasm32-wasi --release
Finished release [optimized] target(s) in 0.00s
npx wrangler@wasm publish --name wasi-worker --compatibility-date 2023-04-11 target/wasm32-wasi/release/worker.wasm
⛅️ wrangler 0.0.0-c0d7699
---------------------------
Total Upload: 2228.94 KiB / gzip: 563.44 KiB
Uploaded wasi-worker (2.84 sec)
Published wasi-worker (3.76 sec)
wasi-worker.[your-CF-username].workers.dev
```
If you open your CloudFlare portal, you should see something like the following.

If you click on the `Preview` link, wasi-worker.[your-CF-username].workers.dev in the preceding image, you will be greeted with the `Hello, world!` you saw in preceding sections.
Please note that [your-CF-username] will be replaced with your CloudFlare username.