对于New-AzureStorageContext cmdlet,假设我都知道这两个值,那么Endpoint和Environment参数之间有什么区别?
例如,假设我要在Azure中国云中新建一个名为foo
的新存储上下文,因此环境为AzureChinaCloud
,端点为foo.core.chinacloudapi.cn
,我可以通过尽管从docs看来它们是互斥的,但这两个参数还是cmdlet的参数。
传递一个或另一个之间在功能上有什么不同?如果我通过环境,创建的存储上下文是否没有端点?如果它具有端点,是否未将其设置为foo.core.chinacloudapi.cn
?如果我通过端点,上下文是否不会设置为AzureChinaCloud
?甚至可能没有一个?
此外,返回的AzureStorageContext具有许多与端点有关的属性:BlobEndPoint
,EndPointSuffix
,FileEndPoint
,QueueEndPoint
和{{1} }。通过环境或端点时应设置以下哪个属性?
答案 0 :(得分:0)
Endpoint和Environment参数之间有什么区别?
Endpoint
:包含存储帐户名和Azure环境,如果AzureCloud
,将是storagename.core.windows.net
,如果AzureChinaCloud
,将是{{1} },就像您提到的那样,它属于storagename.core.chinacloudapi.cn
。
Optional Parameters
:仅指定环境,不包含存储帐户名称。
如果我通过环境,创建的存储上下文是否没有端点?如果它具有端点,是否未将其设置为foo.core.chinacloudapi.cn?如果我通过端点,上下文是否不会设置为AzureChinaCloud?
我认为您不需要同时使用它们,如果您通过帐户名和环境,则上下文将具有终结点;另外,如果您通过终结点,则将具有环境。
甚至可能没有一个?
当然,您可以使用其他参数来创建上下文,例如您可以只使用Environment
和StorageAccountName
创建上下文,就可以在您提到的文档中找到它。
在传递环境或端点时应设置哪些属性?
这四个属性都由端点决定,如果您通过端点,我认为您不需要设置它们。例如如果端点是StorageAccountKey
,则storagename.core.windows.net
将是BlobEndPoint
。
更新:
Endpoint和Environment参数之间有什么区别?
不同的环境决定了不同的端点,您可以通过以下命令进行检查:Get-AzureRmEnvironment
。如果storagename.blob.core.windows.net
将为AzureCloud
,如果core.windows.net
将为AzureChinaCloud
AzureCloud:
AzureChinaCloud:
如果我通过环境,创建的存储上下文是否没有端点?如果它具有端点,是否未将其设置为foo.core.chinacloudapi.cn?如果我通过端点,上下文是否不会设置为AzureChinaCloud?
您可以只使用其中之一,请参阅屏幕快照注意:实际上core.chinacloudapi.cn
的意思是Endpoint
,您可以在测试结果中找到它。所以我们应该通过例如EndPointSuffix
,而不是-Endpoint "core.windows.net"
。如果我们通过-Endpoint "storagename.core.windows.net"
,它将是错误的,结果中的-Endpoint "storagename.core.windows.net"
将是EndPointSuffix
。
错误的结果:
在传递环境或端点时应设置哪些属性?
在上面的屏幕截图中,我没有通过这四个端点中的任何一个,但是您会发现结果将包含所有这些端点。另外,您不需要传递storagename.core.windows.net
,它等于EndPointSuffix
。