You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Set the RUST_LOG environment variable to info to show timings informations about the execution.
opa-wasm
Evaluates OPA policies compiled as WASM modules
USAGE:
opa-eval [OPTIONS] --entrypoint <ENTRYPOINT> <--module <MODULE>|--bundle <BUNDLE>>
OPTIONS:
-m, --module <MODULE> Path to the WASM module
-b, --bundle <BUNDLE> Path to the OPA bundle
-e, --entrypoint <ENTRYPOINT> Entrypoint to use
-d, --data <JSON> JSON literal to use as data
-D, --data-path <PATH> Path to a JSON file to load as data
-i, --input <JSON> JSON literal to use as input
-I, --input-path <PATH> Path to a JSON file to load as data
-h, --help Print help information
As a library
use std::collections::HashMap;use anyhow::Result;use opa_wasm::{wasmtime,Runtime};#[tokio::main]asyncfnmain() -> Result<()>{// Configure the WASM runtimeletmut config = wasmtime::Config::new();
config.async_support(true);let engine = wasmtime::Engine::new(&config)?;// Load the policy WASM modulelet module = tokio::fs::read("./policy.wasm").await?;let module = wasmtime::Module::new(&engine, module)?;// Create a store which will hold the module instanceletmut store = wasmtime::Store::new(&engine,());let data = HashMap::from([("hello","world")]);let input = HashMap::from([("message","world")]);// Instantiate the modulelet runtime = Runtime::new(&mut store,&module).await?;let policy = runtime.with_data(&mut store,&data).await?;// Evaluate the policylet res: serde_json::Value = policy.evaluate(&mut store,"hello/world",&input).await?;println!("{}", res);Ok(())}