2015-02-22 14 views
13

Używam usługi AmazonS3Client w aplikacji na Androida, korzystając z żądania getObject w celu pobrania obrazu z mojego zasobnika Amazon S3.Wyjątek dotyczący Androida Amazon S3: "Podany klucz nie istnieje"

Obecnie otrzymuję ten wyjątek:

com.amazonaws.services.s3.model.AmazonS3Exception: 
The specified key does not exist. 
(Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey; 

Chociaż jestem w stanie zobaczyć obiekt z określonego klucza w moim S3 wiadra.

+1

Myślę, że ten błąd występuje zwykle, gdy obiekt/plik nie istnieje w określonym wiadrze. Czy możesz dwukrotnie sprawdzić nazwę wiadra, którego używasz do literówki i czy jest to ten sam segment, w którym widzisz obiekt/plik? Nie jest to na pewno błąd uwierzytelniania. –

+1

Dokumentacja Amazon jest do dupy, to pytanie nie może być cofnięte. To szalone, aby zrozumieć programowanie S3. – Siddharth

Odpowiedz

6

Cóż, ten błąd jest w rzeczywistości dość prosty. oznacza to po prostu, że twój plik nie istnieje w wiadrze S3. Kilka rzeczy mogło być nie tak:

  1. Być może próbujesz odwołać się do niewłaściwego pliku. Podwójnie sprawdź ścieżkę, którą próbujesz odzyskać.

  2. Ilekroć plik został przesłany, musi się nie udać. Sprawdź dzienniki dla procesu S3Sync aby zobaczyć czy można znaleźć wszelkie odpowiednie wyjście

+1

linki wygasają, po czym odpowiedzi stają się bezużyteczne, należy wyodrębnić informacje z tego linku i zaktualizować tę odpowiedź jako kompletną. Zapraszam do dzielenia się swoim źródłem .. to jest ok .. – Siddharth

+0

@Siddharth zaktualizował odpowiedź – Fahim

+0

Dzięki temu pomaga zachować SO w czystości i przydatności. – Siddharth

7

Dla mnie celem na pewno istniał i został załadowany prawidłowo, jednak jego S3 url nadal rzucił ten sam błąd:

<Code>NoSuchKey</Code> 
<Message>The specified key does not exist.</Message> 

Dowiedziałem się, że powodem było to, że moja nazwa pliku zawierała symbol # i wydaje mi się, że niektóre znaki lub symbole również powodują ten błąd.

Usunięcie tej litery i wygenerowanie nowego adresu URL s3 rozwiązało mój problem.

+0

Ten sam problem tutaj. Obrażająca postać była klamrą: ( – Johann

+0

Mam do czynienia z tym samym problemem, a moja nazwa pliku brzmi "abcd.jar". Czy rozszerzenie funkcji pobierania jest również specyficzne? –

+0

@RahulMunjal Nie jestem zbyt pewny co do rozszerzeń plików, może spróbuj umieścić go w folder .zip i sprawdź, czy to działa. Sprawdź również, czy prawa dostępu do pliku są poprawne (np. dostęp "tylko do odczytu" dla grupy Wszyscy użytkownicy). – Truchainz

1

W moim przypadku pojawił się błąd, ponieważ załadowałem cały folder, zawierający pliki witryny, do kontenera.

Rozwiązałem go, przenosząc wszystkie pliki poza folder, bezpośrednio do kontenera.

0

Przyczyna problemu jest nieprawidłowa lub literówka w nazwie segmentu/klucza. Sprawdź, czy podana nazwa zasobnika lub klucza nie istnieje.