2013-08-14 16 views
17

mogę wcisnąć jakąś treść do wiadra S3 z moich mandatów za pośrednictwem narzędzia S3cmd z s3cmd put contentfile S3: // test_bucket/plik_testowyJak mogę pobrać plik z wiadra S3 za pomocą wget?

Pytanie jest, jestem zobowiązany, aby pobrać zawartość z tego wiadra w innych komputerach, które don 't mają zainstalowane s3cmd, ALE mają zainstalowane wget.

gdy próbuję pobrać niektóre treści z mojego wiadro z wget uzyskać to:

https://s3.amazonaws.com/test_bucket/test_file 
--2013-08-14 18:17:40-- `https`://s3.amazonaws.com/test_bucket/test_file 
Resolving s3.amazonaws.com (s3.amazonaws.com)... [ip_here] 
Connecting to s3.amazonaws.com (s3.amazonaws.com)|ip_here|:port... connected. 
HTTP request sent, awaiting response... 403 Forbidden 
`2013`-08-14 18:17:40 ERROR 403: Forbidden. 

mam ręcznie wykonane Bucket publicznej za pośrednictwem konsoli internetowej Amazon AWS.

Pytanie brzmi: Jak mogę pobrać zawartość z wiadra S3 za pomocą wget? do lokalnego pliku txt?

Odpowiedz

7

Got it ... Jeśli przesłać plik w wiaderku S3 z S3CMD z --acl flagi publicznej tedy jeden móc pobrać plik z S3 z wget łatwo ...

Wniosek: aby pobrać z wget, najpierw trzeba przesłać zawartość S3 z s3cmd put --acl public --guess-mime-type <test_file> s3://test_bucket/test_file

alternatywnie można spróbować:

s3cmd setacl --acl-public --guess-mime-type s3://test_bucket/test_file 

zawiadomienie flagę setacl powyżej. ŻE ustawić plik s3 dostępny publicznie następnie można łatwo uruchomić wget http://s3.amazonaws.com/test_bucket/test_file

21

Powinieneś być w stanie uzyskać do niego dostęp z adresu URL utworzony w następujący sposób:

http://{bucket-name}.s3.amazonaws.com/<path-to-file>

teraz, że twoja ścieżka do pliku S3:

s3://test-bucket/test-folder/test-file.txt

powinny mieć możliwość wget ten plik z następującym adresem:

http://test-bucket.s3.amazonaws.com/test-folder/test-file.txt

+0

Zwróć uwagę, że używasz protokołu HTTP i otrzymuję adres URL HTTPS z konsoli zarządzania Amazon ... w jaki sposób HTTPS zmienia rzeczy? – Becks

13

Można użyć polecenia:

wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/my-file.jpg' 
+0

To zadziałało dla mnie dzięki – iamjonesy

+0

Działa świetnie! Nie ma potrzeby instalowania s3cmd lub innego CLI :) –

3

AWS CLI ma polecenie „presign”, które można użyć, aby uzyskać tymczasowy publicznej Adres URL do prywatnego zasobu s3.

aws s3 presign s3://private_resource 

Następnie można użyć wget pobrać zasobu używając presigned URL.