Chcę wygenerować link s3 do pobrania pliku, link powinien być aktywny przez co najmniej 6 dni. Próbowałem z opcjami InstanceProfileCredentialsProvider (false) (które działały tylko przez 24 godziny), ProfileCredentialsProvider (nawet nie tworzy linku), Klucz dostępu
Klucz dostępu użytkownika IAM działał, ale ten klucz użytkownika wygasa po kilku dniach, więc za każdym razem muszę zmieniać to samo w kodzie, a także myślę, że ujawnianie klucza w kodzie nie jest dobrą praktyką.
Czy jest jakiś inny sposób na wygenerowanie linku do pobrania s3, który wygaśnie dopiero po 6 dniach.
Poniżej znajduje się fragment kodu: -
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new InstanceProfileCredentialsProvider(false))
.build();
java.util.Date expiration = new java.util.Date();
long milliSeconds = expiration.getTime();
milliSeconds += 1000 * 60 * 60 * 24 * 7; // Add 7 days.
expiration.setTime(milliSeconds);
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest("s3bucket",
"fileLocationpath");
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);
link = s3Client.generatePresignedUrl(generatePresignedUrlRequest);
1 odpowiedź
Ogólna idea sposobu, w jaki wdrażasz swoje rozwiązanie, to właściwy sposób, jaki sugeruje AWS.
O kluczu użytkownika, który wygasa po 80 dniach, ponieważ klucze użytkownika nie wygasają automatycznie i są ważne, dopóki ich nie dezaktywujesz, wyobrażam sobie, że jest to proces, który ustawiłeś w celu rotacji poświadczeń ze względów bezpieczeństwa. To rzeczywiście bardzo dobra praktyka. Aby uniknąć twardego zakodowania tych poświadczeń w kodzie, co jest złą praktyką, możesz po prostu ustawić swoje poświadczenia jako zmienną środowiskową lub przechowywać je w pliku poświadczeń AWS strong> w twoim przypadku. W ten sposób możesz łatwo obracać je za pośrednictwem potoku wdrażania.
Konfigurację ./aws/credentials można przeprowadzić za pomocą danych użytkownika podczas uruchamiania instancji ec2. Uruchomisz „aws configure”, a następnie przekażesz swoje dane uwierzytelniające aws, aby ustawić je w swojej instancji ec2. Idealnie byłoby mieć potok CI/CD, który zautomatyzuje cały proces zamiast robić to ręcznie.
Zapoznaj się z poniższymi najlepszymi praktykami zalecanymi przez AWS:
Przypisany URL dla zasobników s3 – zalecane sposoby
https://aws.amazon.com/premiumsupport/knowledge-center/presigned-url-s3-bucket-expiration/
Najlepsze praktyki dotyczące kluczy dostępu AWS
https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html
Ustawienia konfiguracji i plików poświadczeń
https://docs.aws.Amazon.com/cli/latest/userguide/cli-configure-files.html.
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].
now().plus(6, DAYS).toEpochMilli()
byłby znacznie łatwiejszy do odczytania.)