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" },
}),
在创建 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" },
}),