2016-09-14 8 views
1

Ich schreibe ein Powershell-Skript, um eine Datei von einer s3-URL herunterladen. Ich bekomme immer einen Fehler (403) Verboten. Der Befehl i verwenden istDownload von s3 über URL

Invoke-WebRequest -Uri "http://bucketname.s3.amazonaws.com/file.txt" 

die EC2-Instanz eine IAM-Rolle zugeordnet ist, die den Zugriff von dem s3 Eimer zum Download hat. Ich bin in der Lage, Befehle (cp, ls usw.) mit dem aws cli erfolgreich auszuführen. Ist das ein Problem mit den Anmeldeinformationen, die ich mit der Anfrage übergebe? Muss ich AWS-Anmeldeinformationen mit dieser Anforderung übergeben?

+1

Ich glaube, S3 verwendet 'https', nicht' http'. – wOxxOm

+0

Ich habe das korrigiert danke! – PrestonM

Antwort

2

Wenn Sie das Cmdlet Invoke-WebRequest so verwenden, wie Sie sind, geben Sie keine Anmeldeinformationen an S3 weiter. Obwohl Sie sich auf einer EC2-Instanz befinden, die zum Herunterladen der Datei berechtigt ist, weiß Amazon S3 das nicht.

Bei Verwendung der AWS-CLI werden die Anmeldeinformationen zusammen mit der Anforderung gesendet.

Sie haben ein paar Optionen:

  1. die Datei öffentlich in S3 machen. Dies würde Ihrem Cmdlet ermöglichen, so zu arbeiten, wie es ist. Aber dann jemand wäre in der Lage, es herunterzuladen.
  2. Verwenden Sie das AWS SDK, um stattdessen die Datei herunterzuladen. Wie Sie erwähnt haben, funktioniert es gut.
  3. Verwenden Sie das AWS-SDK, um eine vordefinierte URL zu generieren. Verwenden Sie dann die Datei Invoke-WebRequest mit dieser vorzeichneten URL, um die Datei herunterzuladen.
  4. Senden Sie die Anmeldeinformationen mit Ihrem Invoke-WebRequest Anruf. Ich würde das nicht empfehlen, weil du das Rad einfach neu erfindest.
Verwandte Themen