如何使用 ARM 模板在存储帐户中部署文件共享

How do I deploy file share within storage account using ARM template

我可以使用 ARM 模板成功创建存储帐户,我意识到 ARM 模板不直接支持通过任何现有提供程序在存储帐户上创建文件共享。我想我会编写一个 PowerShell 脚本并在 arm 模板中使用自定义脚本扩展,但它似乎只能在 VM 上 运行 (通常用于 VM 上的 post 设置)。

有没有办法在 PowerShell 中创建文件共享和子目录结构并在我的 ARM 模板部署后执行?

您可以使用以下 powershell:

创建共享

$storageAcct = Get-AzStorageAccount -ResourceGroupName xxx -Name yyy
New-AzStorageShare `
   -Name myshare `
   -Context $storageAcct.Context

创建文件夹。

New-AzStorageDirectory `
   -Context $storageAcct.Context `
   -ShareName "myshare" `
   -Path "myDirectory"

上传文件。

# this expression will put the current date and time into a new file on your scratch drive
Get-Date | Out-File -FilePath "C:\Users\ContainerAdministrator\CloudDrive\SampleUpload.txt" -Force

# this expression will upload that newly created file to your Azure file share
Set-AzStorageFileContent `
   -Context $storageAcct.Context `
   -ShareName "myshare" `
   -Source "C:\Users\ContainerAdministrator\CloudDrive\SampleUpload.txt" `
   -Path "myDirectory\SampleUpload.txt"

来源:https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-use-files-powershell

老问题我知道,但现在可以使用 ARM 模板创建文件共享 - 在 ARM 中类似于这样:

    {
      "type": "Microsoft.Storage/storageAccounts/fileServices/shares",
      "apiVersion": "2019-06-01",
      "name": "[concat(parameters('storageAccountName'), '/default/', parameters('fileShareName'))]",
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    }

或者更简单的二头肌:

resource myStorage 'Microsoft.Storage/storageAccounts/fileServices/shares@2019-06-01' = {
  name: '${storageAccount.name}/default/${fileShareName}'
}