经常碰到有开发者在使用PowerShell命令存取及访问中国区的Azure Storage时,碰到一些问题需要调试。有的时候,使用网站上其他人调试过的共享代码也无法通过。

Azure PowerShell命令为访问和存取Azure Storage提供了强大的支持,对于常用的Azure存储类型,例如Table, Blob, Queue,以及目前还在Preview阶段的FileShare,都可以非常便捷的访问。常见的命令如:

  • New-AzureStorageTable
  • New-AzureStorageDirectory
  • New-AzureStorageContainer
  • New-AzureStorageQueue
  • New-AzureStorageShare

需要注意的是,在使用这些命令的时候,会发现其中会用到一个context参数,即AzureStorageContext。

例如,使用New-AzureStorageContainer创建一个新的container,具体命令如下:

New-AzureStorageContainer -Name $containername -Context $context -Permission Off

对于-Environment参数,默认值为AzureCloud,对于全球其他地区的Azure订阅都可以使用。一个样例如下:

$context = New-AzureStorageContext -StorageAccountName $storagename -StorageAccountKey $key1

当我们看context具体值的时候,会看到类似下面的内容:

clip_image001

需要注意的是,这里面包括了Blob、Table、Queue等不同存储类型的EndPoint,例如针对Blob,具体格式是:https://{storageAccountName}.blob.core.windows.net/。注意到这个是全球Azure服务的URL格式。

对于中国区,则需要为-Environment提供值:AzureChinaCloud。一个样例如下:

$context = New-AzureStorageContext -StorageAccountName $storagename -StorageAccountKey $key1 -environment "AzureChinaCloud"

下面看一下context的值,如下:

clip_image002

注意到Blob、Table、Queue等的EndPoint后缀格式已经变成core.chinacloudapi.cn,例如Blob,具体格式变成:https://{storageAccountName}.blob.core.chinacloudapi.cn

现在就可以正确访问到Azure中国区的Storage了。

更多关于AzureStorageContext的格式信息,可参考:

http://msdn.microsoft.com/en-us/library/azure/dn495246.aspx