Carpe Diem

備忘録

CEL

Bazel + CEL でgo_default_libraryが必要になる問題の対処方法

背景 Bazelで依存関係を管理している環境で、celライブラリを導入したところ次のようなエラーが発生しました。 '@com_github_google_cel_go//cel:cel': target 'cel' not declared in package 'cel' defined by /external/com_github_google_cel_go/cel/BUIL…

CELでカスタム関数を使う

CEL

概要 CELは標準的な演算子や関数に加え、独自のカスタム関数を定義して機能を拡張することが可能です。 今回はカスタム関数を使ってみる際に必要な前提知識を踏まえながらサンプルコードを紹介します。 環境 go v1.22.1 cel-go v0.20.1 カスタム関数の作り方…

CELで独自のオブジェクトをprotobufを使って変数定義する

概要 CELでは評価式で扱う変数をEnvironment内で定義しますが、既存のデータモデルを使いたい場合は 同じ定義を都度作らないといけない 変更があった際の追従漏れが発生する といった手間が発生してしまいます。 しかしそのデータモデルがprotobufで定義され…

CELでASTを外部に保存する

CEL

概要 CELのキーコンセプトでは Control PlaneでCEL式をParse & Checkし、生成されたASTを保存 Data Planeで保存したASTを読み取り、インプット値を評価する と説明されていました。 主に管理ツール等で前者のControl Planeを実装し、オペレーターに自由に評…

CEL(Common Expression Language)

CEL

概要 CEL(Common Expression Language)とは、Google によって開発された軽量で高速な式評価言語です。 そのシンプルさと効率性から、セキュリティポリシー、リソースフィルタリング、データ検証などに使われます。 例えばプロダクションでは以下のような利用…