サードパーティライブラリの使用

サードパーティライブラリを使用するポリシープロジェクトの例は、 「Crypto Policy Example (暗号化ポリシーの例)」​を参照してください。

Proxy Wasm は、低レベルのバイナリアプリケーションインターフェース (abi) を定義し、ライブラリが実行できるシステムコールを制限します。ポリシーに含まれるすべてのサードパーティライブラリは、​wasm32-wasi​ Rust コンパイルターゲットと互換性がある必要があります。

serde_urlencoded​ などのライブラリを定義するには、​cargo.toml​ の連動関係リストに追加します。

[dependencies]
...
serde_urlencoded = "0.7.0"

ライブラリを定義すると、​lib.rs​ にある以下のような関数を使用できるようになります。

serde_urlencoded::to_string([("token", "myToken")])

データベースのような外部サービスとやりとりするライブラリや、ファイルの読み取りのようなシステムコールを実行するライブラリは、通常は ​wasm32-wasi​ ターゲットとの互換性がありません。

ポリシーが外部サービスとやりとりする場合は、Flex Gateway で提供されている ​HttpClient​ を使用してください。HTTP コールの実行に関する詳細は、policy-pdk-configure-features-http-request.adocを参照してください。

一部のライブラリは ​wasm32-wasi​ ターゲットに適切にコンパイルできても、Flex Gateway にデプロイすると適切に動作しないことがあります。次のようなエラーがあります。

  • Failed to load Wasm module due to a missing import: …​ (インポートが欠落しているため Wasm モジュールの読み込みに失敗しました: …​)

  • Wasm VM failed to initialize Wasm code (Wasm VM が Wasm コードの初期化に失敗しました)

  • Plugin configured to fail closed failed to load (フェールクローズに設定されたプラグインの読み込みに失敗しました)

これらのエラーが発生した場合には、サードパーティライブラリのオーナーに問い合わせるか、別のライブラリを使用してください。