Open5

proxy-wasm を Rust で試す

hayasshihayasshi

準備

proxy-wasm-rust-sdk をつかって proxy-wasm をビルドするには、--target=wasm32-unknown-unknown が必要なため、target に追加します。

$ rustup target add wasm32-unknown-unknown
info: downloading component 'rust-std' for 'wasm32-unknown-unknown'
info: installing component 'rust-std' for 'wasm32-unknown-unknown'
 13.5 MiB /  13.5 MiB (100 %)  13.4 MiB/s in  1s ETA:  0s
hayasshihayasshi

実装とビルド

今回は、proxy-wasm-rust-sdkexamples/http_headers.rs を、ほとんどそのままコピーしてビルドしました。

$ cargo build -p proxy-wasm-sample --target=wasm32-unknown-unknown --release
   Compiling cfg-if v1.0.0
   Compiling ahash v0.7.4
   Compiling log v0.4.14
   Compiling hashbrown v0.11.2
   Compiling proxy-wasm v0.1.4
   Compiling proxy-wasm-sample v0.1.0 (/Users/path/to/sandbox-rust/proxy-wasm-sample)
    Finished release [optimized] target(s) in 4.47s

proxy-wasm-rust-sdk としては、

  • #[no_mangle]_start 関数が始点となる
  • RootContext と、そこから生成される HttpContext の Trait を実装する
  • RootContext, HttpContext に用意されているメソッドを、オーバーライドして任意のタイミングでの hook 処理をおこなう

というような事が、ぼんやりとわかりました。

hayasshihayasshi

ビルドした proxy-wasm を test 実行する

proxy-wasm/test-framework という、proxy-wasm をテスト実行できるツールがあったので、これをつかって先程のビルドされた proxy-wasm を実行してみます。

// TODO