次の形式の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 で提供されたコマンドレットを使用して、この 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
を使用します。これは多かれ少なかれ、この StackOverflow 投稿 ( SAS トークンのみを使用して Azure ストレージ アカウントに接続しますか? )の答えです。New-AzStorageContext
Set-AzStorageBlobContent
- またはその親族を使用
Invoke-WebRequest
して、基本的に自分で REST 呼び出しを実行します。
可能な限り多くの提供されたコマンドレットを使用したいAz
ので、オプション 1 から始めて、これを解析するための API がないようです。私が見つけることができる最も近いのは、この StackOverflow Post ( Using SAS token to upload Blob content ) です。 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
質問を言い換える
Az
SAS URI と SAS トークンを使用してアップロードを許可するコマンドレットはありますか?- (そうでない場合) SAS URI + SAS トークンを解析する API はありますか?