azure - ARM 中存储队列的专用端点

标签 azure azure-resource-manager azure-private-link

我可以通过门户为存储队列创建一个私有(private)端点,并且在使用 KUDU 的 nameresolver.exe 检查时它可以按预期工作。但是,我正在努力寻找能够一次性完成此操作的 ARM 模板。

我已使此模板正常工作,但我可以看到 A 记录 条目未在生成的私有(private) DNS 区域中生成。我不知道如何创建该 A 记录条目,并且似乎无法在线找到描述此内容的 ARM 模板:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "privateEndpointName": {
            "type": "string",
            "defaultValue": "privendpoint-sapriv01-queue"
        },
        "vnetName": {
            "type": "string",
            "defaultValue": "vn-myvnet01"
        },
        "subnetName": {
            "type": "string",
            "defaultValue": "sn-private-endpoints"
        },
        "groupId": {
            "type": "string",
            "defaultValue": "queue"
        }
    },
    "variables": {
        "privateDNSZone_name": "[concat('privatelink', '.queue.', environment().suffixes.storage)]"
    },
    "resources": [
        {
            "apiVersion": "2019-04-01",
            "name": "[parameters('privateEndpointName')]",
            "type": "Microsoft.Network/privateEndpoints",
            "location": "[resourceGroup().Location]",
            "properties": {
                "privateLinkServiceConnections": [
                    {
                        "name": "[parameters('privateEndpointName')]",
                        "properties": {
                            "privateLinkServiceId": "[resourceId('Microsoft.Storage/storageAccounts', 'saprivendpointdemo')]",
                            "groupIds": [
                                "[parameters('groupId')]"
                            ]
                        }
                    }
                ],
                "manualPrivateLinkServiceConnections": [],
                "subnet": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnetName') )]"
                }
            }
        },
        {
            "type": "Microsoft.Network/privateDnsZones",
            "apiVersion": "2018-09-01",
            "name": "[variables('privateDNSZone_name')]",
            "location": "global",
            "tags": {},
            "properties": {}
        },
        {
            "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
            "apiVersion": "2018-09-01",
            "name": "[concat(variables('privateDNSZone_name'), '/', parameters('vnetName'), 'link' )]",
            "location": "global",
            "dependsOn": [
                "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDNSZone_name'))]"
            ],
            "properties": {
                "virtualNetwork": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
                },
                "registrationEnabled": false
            }
        }
    ],
    "outputs": {
    }
}

我认为微软把这个问题搞得太复杂了。私有(private)IP是自动生成的,我不知道如何在ARM模板中引用这个IP。

最佳答案

如果要在 Azure 私有(private) DNS 区域中添加A 记录,可以在模板中定义 Microsoft.Network/privateEndpoints/privateDnsZoneGroups

例如

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "privateEndpointName": {
            "type": "string",
            "defaultValue": "testqueue"
        },
        "vnetName": {
            "type": "string",
            "defaultValue": "teststorage"
        },
        "subnetName": {
            "type": "string",
            "defaultValue": "default"
        },
        "groupId": {
            "type": "string",
            "defaultValue": "queue"
        }
    },
    "variables": {
        "privateDNSZone_name": "[concat('privatelink', '.queue.', environment().suffixes.storage)]"
    },
    "resources": [
        {
            "apiVersion": "2019-04-01",
            "name": "[parameters('privateEndpointName')]",
            "type": "Microsoft.Network/privateEndpoints",
            "location": "[resourceGroup().Location]",
            "properties": {
                "privateLinkServiceConnections": [
                    {
                        "name": "[parameters('privateEndpointName')]",
                        "properties": {
                            "privateLinkServiceId": "[resourceId('Microsoft.Storage/storageAccounts', 'teststorage05')]",
                            "groupIds": [
                                "[parameters('groupId')]"
                            ]
                        }
                    }
                ],
                "manualPrivateLinkServiceConnections": [],
                "subnet": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('vnetName'), parameters('subnetName') )]"
                }
            }
        },
        {
            "type": "Microsoft.Network/privateDnsZones",
            "apiVersion": "2018-09-01",
            "name": "[variables('privateDNSZone_name')]",
            "dependsOn": [
                "[parameters('privateEndpointName')]"
            ],
            "location": "global",
            "tags": {},
            "properties": {}
        },
        {
            "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
            "apiVersion": "2018-09-01",
            "name": "[concat(variables('privateDNSZone_name'), '/', parameters('vnetName'), 'link' )]",
            "location": "global",
            "dependsOn": [
                "[resourceId('Microsoft.Network/privateDnsZones', variables('privateDNSZone_name'))]"
            ],
            "properties": {
                "virtualNetwork": {
                    "id": "[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
                },
                "registrationEnabled": false
            }
        },
        {
            "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
            "apiVersion": "2020-03-01",
            "name": "[concat(parameters('privateEndpointName'), '/', 'default')]",
            "dependsOn": [
                "[parameters('privateEndpointName')]",
                "[variables('privateDNSZone_name')]"
            ],
            "location": "[resourceGroup().Location]",
            "properties": {
                "privateDnsZoneConfigs": [
                    {
                        "name": "privatelink-queue-core-windows-net",
                        "properties": {
                            "privateDnsZoneId": "[resourceId('Microsoft.Network/privateDnsZones',variables('privateDNSZone_name'))]"
                        }
                    }
                ]
            }
        }
    ],
    "outputs": {
    }
}

enter image description here enter image description here

更多详情请引用herehere

关于azure - ARM 中存储队列的专用端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64342793/

相关文章:

azure - 如何在通过 ARM 模板创建部署时从系统变量读取输入

Azure Policy 将 Linux VM 报告为混合权益投诉

azure - 用于创建 "Managed Private Endpoint"以私下访问 Azure Monitor 工作区的 Bicep 脚本

azure - 如何在Azure Logicapp中加密xml文件?

Azure Functions 读取 Azure Mobile App Easy 表数据

api - Azure "Easy Tables"Rest API主体

azure - .net core web api 在发布到 azure 时响应 500

azure - 使用嵌套 "reference()"调用时出现 InvalidTemplate 错误

azure - 将具有专用终结点的 Azure 数据工厂连接到具有同一 VNet 中的另一个专用终结点的存储帐户

azure - 从同一区域中的管道代理访问 Azure 存储帐户并启用访问限制