2011-10-28 14 views
30

Mam problem z ustaleniem, jak uzyskać dostęp do pliku z Amazon S3. Powiedzmy, że wiadro że plik mieszka w to BUCKET_NAME plik jest FILE_NAME, itd. Próbowałem następujące dwa adresy URL:Url, aby uzyskać plik z Amazon S3

https://s3.amazonaws.com/BUCKET_NAME/FILE_NAME/ 
?Expires=EXPIRATION 
&Signature=SIGNATURE 
&SignatureVersion=2 
&SignatureMethod=HmacSHA1 
&AWSAccessKeyId=KEYID 

Ale to daje mi następujący błąd: NoSuchKey Podany klucz robi nie istnieje.

i Próbowałem również

https://s3.amazonaws.com/BUCKET_NAME/ 
?Key=FILE_NAME 
&Expires=EXPIRATION 
&Signature=SIGNATURE 
&SignatureVersion=2 
&SignatureMethod=HmacSHA1 
&AWSAccessKeyId=KEYID 

ale zwraca stronę z listą wszystkich plików w danym wiadrze (łącznie FILE_NAME), zamiast konkretnego pliku chcę. Próbowałem też wstawić w adresie URL "Action = GetObject", ale to nic nie zmienia.

Byłoby pomocne dowiedzieć się, która (jeśli jest) jest właściwą metodą i co robię źle. Od jakiegoś czasu przekopuję się przez dokumentację amazonek, ale nie mogę tego rozwiązać.

Dzięki.

+0

dla programistów poszukuje . myślałem, że dodaję ten http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html – dibble

Odpowiedz

44

Jego faktycznie sformułowane bardziej jak:

https://<bucket-name>.s3.amazonaws.com/<key> 

Zobacz here

+0

Dziękuję za odpowiedź. Próbowałem także, jak wspomniałeś, ale z tymi samymi rezultatami. – user1018928

+0

@ user1018928 Czy to wersjonowane wiadro? Należy również rozważyć, czy klucz został usunięty. – stevebot

17

Może nie co OP było potem, ale dla tych, którzy szukają URL po prostu dostęp do czytelnego obiektu na S3 jest więcej takich jak:

https://<region>.amazonaws.com/<bucket-name>/<key>

Gdzie <region> jest coś takiego jak s3-ap-southeast-2.

Kliknij element w interfejsie graficznym S3, aby uzyskać łącze do wiadra.

15

Dokumentacja here, a jako przykład wykorzystam region Frankfurt.

2 różne style URL:

Ale url nie działa:

Przesłanie jest jednoznaczne: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

I można mówić o inny problem, bo nie dostaję NoSuchKey błąd, ale podejrzewam, że komunikat o błędzie został wyraźniej w miarę upływu czasu ...