Azure Powershell. Как загрузить файл в хранилище BLOB-объектов, используя подпись общего доступа «SAS» только для записи? - PullRequest
0 голосов
/ 14 сентября 2018

Я пытался это в течение некоторого времени. Вот мой Powershell:

$storSas = "sas-generated-with-windows-storage-explorer"
$StorageAccountName = "storageacc"
$containerName = "some-cont-name"
$clientContext = New-AzureStorageContext -SasToken $storSAS -StorageAccountName $StorageAccountName

# upload a file
Set-AzureStorageBlobContent -File "F:\somefile" `
  -Container $containerName `
  -Blob "somefile" `
  -Context $ClientContext 

И каждый раз, когда я получаю:

Удаленный сервер возвратил ошибку: (403) Запрещено. Код статуса HTTP: 403 - Сообщение об ошибке HTTP: Это повторно Квест не авторизован для выполнения этой операции с использованием этого разрешения.

Моя политика имеет разрешения на запись и список, почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 19 сентября 2018

Есть 2 проблемы:

  1. Пожалуйста, используйте последнюю версию Azure Powershell из https://github.com/Azure/azure-powershell/releases (в настоящее время 6.9.0)

  2. Если вам требуется загрузить большой двоичный объект с помощью SAS без разрешения на чтение, необходимо добавить -Force в Set-AzureStorageBlobContent командлеты.Это связано с тем, что по умолчанию мы проверим, существует ли BLOB-объект dest (необходимо разрешение на чтение), и напомним пользователю о погоде для перезаписи, если существует BLOB-объект Dest.

У меня работает следующий скрипт: $sas = New-AzureStorageBlobSASToken -container $containerName -Blob $blobname -Permission w -Context $ctxkey $ctxsas = New-AzureStorageContext -StorageAccountName $StorageAccountName -SasToken $sas $a = Set-AzureStorageBlobContent -File $localSrcFile -Container $containerName -Blob $blobname -Force -Context $ctxsas

Кроме того, если вы используете последнюю версию Azure Powershell, Get-AzureStorageContainer также работает с SAS.(В любом случае, ACL контейнера не может быть получен, так как требуется разрешение ключа)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...