2016-04-28 13 views
1

Ich weiß, dass ich die Azure CLI verwenden kann, um dies zu erreichen, aber ich möchte die üblichen Linux/Unix-Befehle verwenden.Azure Blob mit Shared Access-Signatur mit wget oder curl herunterladen

Ich habe einen Azure Blob Container, der privat ist. Nennen wir es https://my-account.blob.core.windows.net/my-blob-container/my-file.my-extension.

Wenn mein Container auf "Öffentlicher Lesezugriff nur für Blobs" eingestellt ist, funktioniert alles super.

$ 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’ 

Wenn mein Behälter wird auf „Kein Zugang der Öffentlichkeit,“ und ich erstelle eine Access-Politik my-policy genannt, mit Lesen/Schreiben/Löschen/Liste für ein Jahr, erhalte ich den folgenden Link: 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

Wenn ich den Link in einen Browser kopiere, wird die Datei automatisch heruntergeladen. Wenn ich wget verwenden, erhalte ich den Fehler 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 zurück Beenden Statistik 8 ("Server eine Fehlermeldung ausgegeben").

+0

Hallo die wget Anruf tätigen, habe meine Antwort Hilfe? –

+0

Vielen Dank für Ihre Antwort @ step-locke. Ich habe versucht, "st", "se" und "sp" hinzuzufügen, wie Sie vorschlagen, aber die Fehlermeldung ist die gleiche ('HTTP/1.1 404 Die angegebene Ressource existiert nicht.'). Es verwirrt mich immer noch, weil ein Webbrowser keine Probleme hat, die Datei mit genau der gleichen URL herunterzuladen. – numeratus

+0

Ich habe ein Update hinzugefügt. Es sieht so aus, als ob der Schlüsselunterschied zwischen unseren Cmd-Zeilen den Fehler verursacht - Sie geben die URL nicht an. Wenn ich die URL nicht zitiere, erzeugt sie auch einen Fehler 404 –

Antwort

5

Die Abfrage ist schwierig, ohne die Besonderheiten zu debuggen, aber ...

ich eine SAS auf Containerebene erstellen kann, die mich

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"

eine Datei im Speicher gelesen werden können, wenn ich schaffen sie mein wget eine bestimmte SAS auf dem Blob Ebene auch

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

ein gültiges arbeitet geteilt Query-String-Zugriff Signatur erfordert Argumente für die folgenden Parameter:

  • st
  • se
  • sp
  • sr
  • sig

Yours die se Komponente zu fehlen scheint, das ist das Ablaufdatum.

Sie müssen sicherstellen, dass die URL in Anführungszeichen eingeschlossen ist, wenn aufgrund der Natur von einigen der URL-Codierung

+0

Um es klar zu machen: Der Grund dafür ist, dass die URL zitiert wird. Ich weiß nicht, ob es etwas mit dem Fragezeichen/kaufmännischen Und-Zeichen zu tun hat, das Zitate benötigt, aber ich vermute, dass es nichts mit Azure zu tun hat. – numeratus