预签名的AWS S3 URL缓慢

时间:2019-04-10 11:26:25

标签: amazon-web-services amazon-s3

我正在尝试确保s3资源的安全,并且已经在使用bucket所在的同一区域中使用sts服务创建了临时证书。我正在使用这些凭据来创建一个预签名的URL,该URL将在一小时后过期。这些网址是图片,将显示在移动应用程序上。但是在实施之后,我们遇到了来自s3的响应变慢的问题。有没有人遇到过相同的行为?

这就是我生成预签名网址的方式

try {
    AmazonS3 s3Client = new AmazonS3Client(getTemporaryAwsCredentials());

    // Generate the pre signed URL.
    LOGGER.info("Generating pre-signed URL for " + unsignedUrl);
    GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, fileName).withMethod(HttpMethod.GET);

    URL url = s3Client.generatePresignedUrl(generatePresignedUrlRequest);

    LOGGER.info("Pre-Signed URL: " + url.toString());
    return url.toString();

} catch (Exception e) {
    LOGGER.error("Error while generating pre signed url ", e);
}
private AWSCredentials getTemporaryAwsCredentials() {

    AWSSecurityTokenServiceClient sts_client = new AWSSecurityTokenServiceClient(getCredentials());
    sts_client.setEndpoint("sts.us-west-2.amazonaws.com");

    GetSessionTokenRequest session_token_request = new GetSessionTokenRequest();
    session_token_request.setDurationSeconds(43200);

    GetSessionTokenResult session_token_result = sts_client.getSessionToken(session_token_request);

    Credentials session_creds = session_token_result.getCredentials();

    BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
        session_creds.getAccessKeyId(),
        session_creds.getSecretAccessKey(),
        session_creds.getSessionToken());

    return sessionCredentials;
}

0 个答案:

没有答案