Nie "dostajesz" wstępnie podpisanego adresu URL "z serwera". Obliczanie podpisu odbywa się na kliencie. Wstępnie podpisane adresy URL są faktycznie obliczane na komputerze, a nie na podstawie usługi.
Jeśli używasz bieżącego zestawu SDK, prawdopodobnie używa on podpisu V4. Jeśli podany URL zawiera X-Amz-Signature=
, oznacza to potwierdzenie V4. Starszy algorytm V2 używa tylko Signature=
w podpisanym adresie URL.
Jeśli podpis jest rzeczywiście V4, potem widzisz celowe ograniczenie:
presigned URL może być ważne przez maksymalnie siedem dni, ponieważ klucz podpisanie użyć w obliczeniach podpis jest ważny przez okres do siedmiu dni.
http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html
Jeśli już używasz V2, powinieneś być w stanie podpisać URL z czasów ważności dopiero w roku 2038. Jeśli używasz V4, można obejść ograniczenia, przełączając się użyj V2, ale nie jest to zalecane. V2 nie jest obsługiwany w nowszych regionach S3, np. We Frankfurcie, a jeśli obrócisz klucze dostępu AWS tak, jak powinieneś, ewentualne unieważnienie klucza unieważni również wszystkie podpisy utworzone przy pomocy tego klucza.
Bardziej poprawnym podejściem w większości przypadków jest generowanie podpisanego adresu URL, gdy jest to potrzebne. Ta operacja, jak wspomniano, nie wymaga interakcji z usługą S3 i może być zwykle wykonywana w czasie rzeczywistym.
Jeśli chcesz przyznać konkretnemu użytkownikowi dostęp do "bezpośredniego linku", rozważ utworzenie punktu końcowego w aplikacji, w którym można zweryfikować dane uwierzytelniające użytkownika, w którym momencie możesz wygenerować podpisany adres URL i przekierować przeglądarkę za pomocą Odpowiedź HTTP 302
.
TL: Algorytm DR-v4 umożliwia tylko 7 dni. (W odniesieniu do wersji 4 dokumentacji: ta najnowsza wersja sygnatury jest obsługiwana we wszystkich regionach, a wszelkie nowe regiony po 30 stycznia 2014 będą obsługiwały tylko wersję podpisu 4). Więc lepiej jest generować adres URL, jeśli jest to wymagane. – HopeKing