如何获取存储容器的resourceId?

How do I get the resourceId of a storage container?

以下内容摘自 ARM 模板。它创建一个存储容器。它有效,但存在问题。

{
    "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
    "apiVersion": "2019-06-01",
    "name":  "[variables('***')]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('***'), 'default')]",
        "[resourceId('Microsoft.Storage/storageAccounts', variables('***'))]"
    ],
    "properties": {
        "publicAccess": "None"
    }
}

我的问题是如何获取存储容器的resourceId?我需要一个输出值,但所有构建输出值的尝试都导致发布管道失败,并伴有以下消息(或根据提供的参数略有变化):

##[error]DeploymentOutputEvaluationFailed: The template output 'containerABC' is not valid: Unable to evaluate template language function 'resourceId': function requires exactly one multi-segmented argument which must be resource type including resource provider namespace. Current function arguments 'Microsoft.Storage/storageAccounts/blobServices,***,default,***/default/***'. Please see https://aka.ms/arm-template-expressions/#resourceid for usage details..

这里是最新版本的输出值:

"containerABC": {
    "type": "object",
    "value": "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('***'), 'default', variables('***'))]"
}

如果要Azure blob存储容器的资源id,请使用以下表达式

[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', <'storageAccountName'>, 'default', <'storageContainerName'>)]

例如

我的测试模板

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": { 
       "storageAccountName": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The name of the storage account."
            }
        },
         "storageContainerName": {
            "type": "string",
            "defaultValue": "test",
            "metadata": {
                "description": "The name of the blob storage container."
            }
        }
  },
  "resources": [
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "name": "[parameters('storageAccountName')]",
            "location": "eastasia",
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "kind": "Storage",
            "properties": {
                "networkAcls": {
                    "bypass": "AzureServices",
                    "virtualNetworkRules": [],
                    "ipRules": [],
                    "defaultAction": "Allow"
                },
                "supportsHttpsTrafficOnly": true,
                "encryption": {
                    "services": {
                        "file": {
                            "keyType": "Account",
                            "enabled": true
                        },
                        "blob": {
                            "keyType": "Account",
                            "enabled": true
                        }
                    },
                    "keySource": "Microsoft.Storage"
                }
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices",
            "apiVersion": "2019-06-01",
            "name": "[concat(parameters('storageAccountName'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
            ],
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "properties": {
                "cors": {
                    "corsRules": []
                },
                "deleteRetentionPolicy": {
                    "enabled": false
                }
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2019-06-01",
            "name": "[concat(parameters('storageAccountName'), '/default/',parameters('storageContainerName'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccountName'), 'default')]",
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
            ],
            "properties": {
                "publicAccess": "None"
            }
        }
    ],
  "outputs": { 

       "containerABC": {
        "type": "string",
        "value":"[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', parameters('storageAccountName'), 'default', parameters('storageContainerName'))]"
    }  
  }
}

部署脚本

Connect-AzAccount
New-AzResourceGroupDeployment -ResourceGroupName <> -TemplateFile E:\test.json