たれながし.info

とあるITエンジニアの備忘録

Azure Blob StorageにPowerShellでファイルアップロード

Azure Blob StorageにPowerShellInvoke-RestMethodでファイルアップロードしてみる。

f:id:tarenagashi_info:20210809132401p:plain:w650

はじめに

Windows10のOS標準機能でAzure Blob Storageにファイルをアップロードしたいと思い検討したところ、PowerShellの「Invoke-RestMethod」でできそうなのでやってみる。
ググったらすでに実施している人がいたので、それを参考にします。

<参考にしたサイト>
rzander.azurewebsites.net

Azure Blob Storageの設定

ストレージアカウント、コンテナの作成

Azure Storageの利用に必要なストレージアカウント、Blobの置き場所となるコンテナを作成する
f:id:tarenagashi_info:20210809132006p:plain:w600

SASの設定

認証のため、SASを設定する。生成されるSASトークンが必要
f:id:tarenagashi_info:20210809132018p:plain:w600

動作確認

Invoke-RestMethodでファイルアップロード

下記PowerShellを実行します。

# Our source File:
$file = "C:\test.txt"

# Get the File-Name without path
$name = (Get-Item $file).Name

# The target URL with SAS Token
$url = "https://testtest20210809.blob.core.windows.net"
$container = "container"
$SAS = "?sv=2020-08-04&ss=b&srt=o&sp=rwdlactfx&se=2021-08-09T12:02:17Z&st=2021-08-09T04:02:17Z&spr=https&sig=4JBC3Aqx1B32eWzBAPx4O0pVOFOXN9%2FSRGk4NPOKBTAg%3D"
$uri = "${url}/${container}/${name}${SAS}"

# Define required Headers
$headers = @{
    'x-ms-blob-type' = 'BlockBlob'
}

# Upload File...
Invoke-RestMethod -Uri $uri -Method Put -Headers $headers -InFile $file

URIのフォーマットは下記となります。

{URL}/{Container}/[Folder Structure/]{FileName}?{SAS Token}

アップロードの確認

無事アップロードされました。
f:id:tarenagashi_info:20210809132031p:plain:w600