Powershell 使用SAS令牌上载Blob内容
我很难使用Blob SAS令牌通过Powershell将文件写入Azure中的Blob 我用来生成SAS令牌的代码是:Powershell 使用SAS令牌上载Blob内容,powershell,azure,azure-storage-blobs,azure-powershell,azure-resource-manager,Powershell,Azure,Azure Storage Blobs,Azure Powershell,Azure Resource Manager,我很难使用Blob SAS令牌通过Powershell将文件写入Azure中的Blob 我用来生成SAS令牌的代码是: $storageContext = Get-AzureRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageName $token = New-AzureStorageBlobSASToken -Container $conName -Context $storageContext.Context -
$storageContext = Get-AzureRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageName
$token = New-AzureStorageBlobSASToken -Container $conName -Context $storageContext.Context -Blob $blobName -ExpiryTime $expiry -Permission rw -FullUri
这将按预期生成令牌:https://name.blob.core.windows.net/container/test.json?sv=2015-04-05&sr=b&sig=abc123&se=2017-03-07T12%3A58%3A52Z&sp=rw
如果我在浏览器中使用它,它可以正常工作并按预期下载文件。但是,我不能用它来上传文件。无论何时我尝试,我都会收到一封(403)的禁书。我用来上传的代码是:
$accountContext = New-AzureStorageContext -SasToken $sasToken
Get-AzureStorageContainer -Context $accountContext.Context | Set-AzureStorageBlobContent -File $blobFile
在调用addazurermaccount
进行身份验证后,我成功地使用了类似的方法来设置Blob内容
我还尝试使用一个容器SAS令牌,但我一直得到一个403错误
事实上,这个令牌可以用于读取,这让我相信我的Powershell脚本中缺少了一些东西——有人能解释一下这是什么吗
事实上,这个代币对读取有效,这让我相信我是正确的
我的Powershell脚本中缺少了一些东西-有人能解释一下吗
那是什么
我认为问题在于以下代码行:
Get-AzureStorageContainer -Context $accountContext.Context
这里有两件事:
帐户SAS
,因为您使用的SAS是一个容器SAS
读取
和写入
权限。对于列出容器,您还需要List
权限Set-AzureStorageBlobContent
Cmdlet并向其提供必要的信息,而不是通过管道获取容器名称
Set-AzureStorageBlobContent -File $blobFile -Container $conName -Context $accountContext.Context -Blob $blobName
事实上,这个代币对读取有效,这让我相信我是正确的
我的Powershell脚本中缺少了一些东西-有人能解释一下吗
那是什么
我认为问题在于以下代码行:
Get-AzureStorageContainer -Context $accountContext.Context
这里有两件事:
帐户SAS
,因为您使用的SAS是一个容器SAS
读取
和写入
权限。对于列出容器,您还需要List
权限Set-AzureStorageBlobContent
Cmdlet并向其提供必要的信息,而不是通过管道获取容器名称
Set-AzureStorageBlobContent -File $blobFile -Container $conName -Context $accountContext.Context -Blob $blobName
我已经确认,在创建
blobsas
时,对getazurestoragecontainer
的调用正在抛出一个403。我更改了代码,用rwl创建了一个容器SAS
,并直接调用Set-AzureStorageBlobContent
,但仍然得到了403。你能用你正在使用的最新代码更新你的问题吗?谢谢。我已经解决了这个问题。您所说的是有效的,我在创建SAS令牌时使用了-FullUri
标志。删除此标志只会给我令牌的查询字符串部分,现在允许我上载blob。谢谢。我已经确认,在创建Blob SAS
时,对获取AzureStorageContainer
的调用正在抛出403。我更改了代码,用rwl创建了一个容器SAS
,并直接调用Set-AzureStorageBlobContent
,但仍然得到了403。你能用你正在使用的最新代码更新你的问题吗?谢谢。我已经解决了这个问题。您所说的是有效的,我在创建SAS令牌时使用了-FullUri
标志。删除此标志只会给我令牌的查询字符串部分,现在允许我上载blob。谢谢