aol*_*wka 3 powershell azure-powershell azure-blob-storage azure-sas
我有一个SAS 令牌,格式如下:
https://name.blob.core.windows.net/container?sv=2015-04-05&sr=b&sig=abc123&se=2017-03-07T12%3A58%3A52Z&sp=rw
我正在尝试使用Az
Powershell 中提供的 Cmdlet 将内容上传到此 blob。我无法找到仅需要上述 SAS 令牌和要上传的文件的 API。
读了这篇reddit 帖子,我的选择似乎是:
StorageAccountName
(在示例中name
)、Container
(在示例中container
) 和SASToken
(在上例中sv=2015-04-05&sr=b&sig=abc123&se=2017-03-07T12%3A58%3A52Z&sp=rw
),然后使用New-AzStorageContext
/ Set-AzStorageBlobContent
。这或多或少是此 StackOverflow 帖子中的答案(仅使用 SAS 令牌连接到 Azure 存储帐户?)Invoke-WebRequest
或其同类基本上自己执行 REST 调用。我想使用Az
尽可能多的提供的 cmdlet,因此从选项 1 开始,似乎没有 API 可以解析它,我能找到的最接近的是这个 StackOverflow 帖子(使用 SAS 令牌上传 Blob 内容)谈论使用CloudBlockBlob,但是尚不清楚该类是否可以在 PowerShell 中使用。
为此,我创建了一个似乎有效的正则表达式,但很可能很脆弱,有更好的方法吗?
$SASUri = https://name.blob.core.windows.net/container?sv=2015-04-05&sr=b&sig=abc123&se=2017-03-07T12%3A58%3A52Z&sp=rw
$fileToUpload = 'Test.json'
$regex = [System.Text.RegularExpressions.Regex]::Match($SASUri, '(?i)\/+(?<StorageAccountName>.*?)\..*\/(?<Container>.*)\?(?<SASToken>.*)')
$storageAccountName = $regex.Groups['StorageAccountName'].Value
$container = $regex.Groups['Container'].Value
$sasToken = $regex.Groups['SASToken'].Value
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
Set-AzStorageBlobContent -File $fileToUpload -Container $container -Context $storageContext -Force
Run Code Online (Sandbox Code Playgroud)
Az
Cmdlet 可以使用 SAS URI 和 SAS 令牌来允许上传?考虑$SASUri
到 URI,您可以System.Uri
使用以下方式获取对象:
$uri = [System.Uri] $SASUri
Run Code Online (Sandbox Code Playgroud)
获得该信息后,您可以使用以下命令获取容器名称和 SAS 令牌:
$storageAccountName = $uri.DnsSafeHost.Split(".")[0]
$container = $uri.LocalPath.Substring(1)
$sasToken = $uri.Query
Run Code Online (Sandbox Code Playgroud)
之后你的代码应该可以正常工作:
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
Set-AzStorageBlobContent -File $fileToUpload -Container $container -Context $storageContext -Force
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3394 次 |
最近记录: |