2016-04-28 51 views
1

Azure CLIを使用してこれを行うことができますが、一般的なLinux/Unixコマンドを使用したいと思います。wgetまたはcurlを使用してAzure Blobを共有アクセスシグネチャでダウンロードする

私は個人用のAzure Blob Containerを持っています。それをhttps://my-account.blob.core.windows.net/my-blob-container/my-file.my-extensionとしましょう。

私のコンテナが「ブロブ専用のパブリック読み取りアクセス」に設定されている場合、すべて正常に機能します。 https://my-account.blob.core.windows.net/my-blob-container/my-file.my-extension?sv=2015-02-21&si=my-policy&sr=b&sig=y%2B2pvIuR9rGQdvm%2FQKp0xNCWE%2B1G%2F2IqjHkWMhRcPUA%3D

$ wget https://my-account.blob.core.windows.net/my-blob-container/my-file.my-extension 
--2016-04-28 16:11:15-- https://my-account.blob.core.windows.net/my-blob-container/my-file.my-extension 
Resolving my-account.blob.core.windows.net (my-account.blob.core.windows.net)... 4.11.2.14 
Connecting to my-account.blob.core.windows.net (my-account.blob.core.windows.net)|4.11.2.14|:443... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: 21682 (21K) [application/octet-stream] 
Saving to: ‘my-file.my-extension’ 

私のコンテナが「いいえパブリックアクセス」に設定され、私がアクセスポリシーを作成している場合は、1年間の読み取り/書き込み/削除/一覧で、my-policyと呼ばれ、私は次のダイレクトリンクを取得します

リンクをブラウザにコピーすると、ファイルが自動的にダウンロードされます。私はwgetを使用している場合は、私が404エラーを取得:

$ wget https://my-account.blob.core.windows.net/my-blob-container/my-file.my-extension?sv=2015-02-21&si=my-policy&sr=b&sig=y%2B2pvIuR9rGQdvm%2FQKp0xNCWE%2B1G%2F2IqjHkWMhRcPUA%3D 
[4] 14106 
[5] 14107 
[6] 14108 
[2] Done     si=my-policy 
[3] Done     sr=b 
$ --2016-04-29 01:25:54-- https://my-account.blob.core.windows.net/my-blob-container/my-file.my-extension?sv=2015-02-21 
Resolving my-account.blob.core.windows.net (my-account.blob.core.windows.net)... 4.11.2.14 
Connecting to my-account.blob.core.windows.net (my-account.blob.core.windows.net)|4.11.2.14|:443... connected. 
HTTP request sent, awaiting response... 404 The specified resource does not exist. 
2016-04-29 01:25:54 ERROR 404: The specified resource does not exist.. 

wget戻り、終了ステータス8( "Serverはエラー応答を発行しました")。

+0

こんにちはURLエンコーディングのいくつかの性質のためにwgetの呼び出しを行うときに、URLが音声符で囲まれていることを確認する必要があり

、私の答えの助けをしましたか? –

+0

@ step-lockeのお返事ありがとうございます。私は 'st'、' se'、 'sp'をあなたが提案したように追加しようとしましたが、エラーメッセージは同じです(' HTTP/1.1 404指定されたリソースは存在しません。 Webブラウザはまったく同じURLでファイルをダウンロードすることが困難なため、私はまだ困惑しています。 – numeratus

+0

更新を追加しました。私たちのcmd-linesの間のキーの違いは、エラーを引き起こすようです - あなたはURLを引用していません。 URLを引用しないと、404エラーも発生します –

答えて

5

クエリが

私は場合、私はストレージ

wget "https://azurerpkg.blob.core.windows.net/azurer/doggies.jpg?st=2016-06-06T07%3A56%3A00Z&se=2018-06-07T07%3A56%3A00Z&sp=rl&sv=2015-04-05&sr=c&sig=nKQz5BcWoUaASBzSW7Hv0TzfMbTFcf0f%2B5mMtmTwQ2A%3D" -k -O "doggies.jpg"

でファイルを読み取ることができますコンテナレベルでSASを作成することができます...詳細もののなしにデバッグすることは困難ですブロブレベルの私のwgetでも動作します

wget "https://azurerpkg.blob.core.windows.net/azurer/doggies.jpg?st=2016-06-06T07%3A56%3A00Z&se=2018-06-07T07%3A56%3A00Z&sp=rl&sv=2015-04-05&sr=b&sig=ntNFXS6fUlHVkiqoqj2rHg1Pw6gSNosnYqj3CQ6GIrg%3D" -k -O doggies.jpg

有効な共有で特定のSASを作成ユアーズがあるseコンポーネントが欠落しているように見える

SIG

  • ST
  • SE
  • SP
  • SR
  • :アクセス署名クエリ文字列は、次のパラメータの引数が必要です有効期限あなたが原因

+0

明確にする:URLが引用されているため、これが機能するのは理由です。引用符を必要とする疑問符/アンパサンドと関係があるのか​​どうかは分かりませんが、Azureとは何の関係もないと思われます。 – numeratus

関連する問題