使用Terraform Azure提供程序2.19.0的此Azure Cli示例(from Azure doc)等效于什么
az eventgrid resource event-subscription create -g myResourceGroup \
--provider-namespace Microsoft.Storage --resource-type storageAccounts \
--resource-name myblobstorage12345 --name myFuncSub \
--included-event-types Microsoft.Storage.BlobCreated \
--subject-begins-with /blobServices/default/containers/images/blobs/ \
--endpoint https://mystoragetriggeredfunction.azurewebsites.net/runtime/webhooks/eventgrid?functionName=imageresizefunc&code=<key>
注意:
在此Terraform Github Issue之后,resource_group_name
和topic_name
被弃用。
答案 0 :(得分:1)
看起来Terraform正在使用scope参数来推断部分参数。
所以这在Terraform中是等效的:
resource "azurerm_eventgrid_event_subscription" "my_func_sub" {
name = "myFuncSub"
scope = azurerm_storage_account.images.id
included_event_types = [
"Microsoft.Storage.BlobCreated"
]
subject_filter {
subject_begins_with = "/blobServices/default/containers/${azurerm_storage_container.images.name}/blobs/"
}
webhook_endpoint {
url = "https://mystoragetriggeredfunction.azurewebsites.net/runtime/webhooks/eventgrid?functionName=imageresizefunc&code=<key>"
}
}
当然,您需要将azurerm_storage_container.images
和webhook url替换为实际值。
请务必注意scope
。它应该是将发布事件的资源的ID。在我们的例子中,它是一个存储容器。
答案 1 :(得分:0)
恐怕您使用了错误的Azure CLI命令,事件网格只有CLI命令,如az eventgrid event-subscription create
,并且它没有资源组的参数。因此,您也不需要在Terraform代码中关心它。
更新:
更多注意参数scope
:
指定EventGrid事件订阅应在的范围 被创建。
您还可以通过Azure CLI命令--source-resource-id
来了解它:
-source-resource-id
事件所针对的Azure资源的完全限定标识符 订阅需要创建。
Terraform不能清楚地描述它。因此,我们需要从CLI或Azure REST API理解它,这是在Azure中创建资源时最终使用的实际东西。
并且Terraform也不支持Azure支持的所有功能。有时我也对Terraform感到困惑。这次,建议您直接使用CLI命令或在Terraform代码中运行CLI命令。