C# で ARM テンプレート関数を使う

C# のプログラムで Azure Resource Manager のテンプレート関数が使いたかった。具体的には guid を。Azure.Deployments.Expression パッケージを使って実現できた。

www.nuget.org

guid 関数を呼び出して、deterministic な GUID を生成するサンプルは次のとおり。

    public static Guid SeededGuid(string src1, string src2, string src3)
    {
        var parameters = new FunctionArgument[]
        {
            new FunctionArgument(new JValue(src1)),
            new FunctionArgument(new JValue(src2)),
            new FunctionArgument(new JValue(src3)),

        };
        var result = ExpressionBuiltInFunctions.Functions
            .EvaluateFunction(
                functionName: "guid",
                parameters: parameters,
                context: new ExpressionEvaluationContext())
            .ToString();
        return Guid.Parse(result);
    }