Pulumi InputMap<string> - 如何使用资源输出作为键?

Pulumi InputMap<string> - how can I use resource outputs as the keys?

在创建 MetricAlert (https://www.pulumi.com/docs/reference/pkg/azure-native/insights/metricalert/) 等一些 Azure 资源时,我遇到了 InputMap 类型。

从 MetricAlert 文档中可以看出,在某些情况下,您需要在标签 属性 中传递对其他资源的引用。 Intellisense 向我显示 Tags 是一个 InputMap,它接受 Output<> 作为值...但不幸的是,它的工作方式是引用需要作为键传入——值只是字符串“Resource”。

有什么方法可以将我的输出传递到这些标签中,它正在成为将这些警报放入我们的堆栈中的障碍。

    Tags = 
    {
        { "hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/components/webtest-name-example", "Resource" },
        { "hidden-link:/subscriptions/12345678-1234-1234-1234-123456789101/resourcegroups/rg-example/providers/microsoft.insights/webtests/component-example", "Resource" },
    },

您需要使用 Apply 来构建这样的字典。对于单个键:

Tags = otherResource.Id.Apply(id => new Dictionary<string, string>
{
    { $"hidden-link:{id}", "Resource" },
}),

两个键:

Tags = Output.Tuple(resource1.Id, resource2.Id).Apply(items => new Dictionary<string, string>
{
    { $"hidden-link:{items.Item1}", "Resource" },
    { $"hidden-link:{items.Item2}", "Resource" },
}),