[FIXED] Gibt es eine Möglichkeit, die Ablaufzeit für GeneratePresignedUrlRequest ordnungsgemäß funktionieren zu lassen?

Ausgabe

Ich habe versucht, eine Ablaufzeit festzulegen, sobald ich eine Anfrage an AWS sende, um eine vorsignierte URL zu erstellen. Ich bekomme jedoch nicht die vorsignierte URL, die so lange abgelaufen ist, wie ich brauche.

Hier ist ein Code, den ich von AWS verwende:

 java.util.Date expiration = new java.util.Date();
            long expTimeMillis = Instant.now().toEpochMilli();
            expTimeMillis += 1000;
            System.out.println("expired Time:"+expTimeMillis);
            expiration.setTime(expTimeMillis);
            GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, key)
                    .withMethod(HttpMethod.GET).withExpiration(expiration);
    URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

Nachdem ich diese Anfrage an AWS gesendet hatte, erhielt ich diese vorsignierte URL:

https://BucketName.amazonaws.com/ABC/DEF/ABC.csv
    ?response-content-disposition=attachment%3B%20filename%20ABC.csv%22
    &X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20221005T024318Z&X-Amz-SignedHeaders=host
    &X-Amz-Expires=0&X-Amz-Credential=AASDus-east-1%2Fs3%2Faws4_request
    &X-Amz-Signature=HHHHH

Ich konnte die Datei herunterladen und diese vorsignierte URL auch nach 5 Minuten verwenden. Allerdings kam nach 10 Minuten diese Meldung. Wenn ich nichts verpasse, habe ich erwartet, diese Meldung nach 1 Sekunde statt nach 10 Minuten zu erhalten.

<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>0</X-Amz-Expires>
<Expires>2022-10-05T02:43:18Z</Expires>
<ServerTime>2022-10-05T02:45:01Z</ServerTime>
<RequestId>RequestID</RequestId>
<HostId>Host</HostId>
</Error>

Lösung

Es könnte an einer Zeitabweichung auf Ihrem Computer liegen – überprüfen Sie, ob sie automatisch von einem Zeitserver eingestellt wird.

Manchmal erstellen Leute vorsignierte URLs mit der falschen Zeitzone (AWS verwendet UTC), also vergewissern Sie sich, dass die in der URL verwendete Zeit in UTC angegeben ist.


Beantwortet von –
John Rotenstein


Antwort geprüft von –
Marilyn (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like