Rust SDK for WebAssembly-based Envoy extensions
Convenience layer on top of the original proxy-wasm SDK that brings in structure and guidance for extension developers.
TLDR
[dependencies]
envoy = { package = "envoy-sdk", version = "0.1" }
use envoy::extension::filter::http;
use envoy::extension::{HttpFilter, Result};
use envoy::host::log;
/// My very own `HttpFilter`.
struct MyHttpFilter;
impl HttpFilter for MyHttpFilter {
/// Called when HTTP request headers have been received.
///
/// Use `_ops` to access or mutate request headers.
fn on_request_headers(&mut self, _num_headers: usize, _end_of_stream: bool, _ops: &dyn http::RequestHeadersOps) -> Result<http::FilterHeadersStatus> {
log::info!("proxying an HTTP request");
Ok(http::FilterHeadersStatus::Continue)
}
}
Components
- envoy-sdk -
Envoy SDK
- envoy-sdk-test -
Unit Test Framework
accompanyingEnvoy SDK
- examples -
Envoy SDK
usage examples- http-filter - logs HTTP request/response headers, makes an outgoing HTTP request
- network-filter - logs start and end of a TCP conection, makes an outgoing HTTP request
- access-logger - logs information about an HTTP request or a TCP connection, makes an outgoing HTTP request