【问题标题】:Generate S3 URL to fetch image in Android生成 S3 URL 以在 Android 中获取图像
【发布时间】:2017-07-15 19:28:38
【问题描述】:

在我们的项目中,我们已经配置了亚马逊网络服务。在 Android 应用程序端,它需要生成 s3 url 以从服务器获取图像。通过使用下面的代码,我正在尝试获取图像,但每次我面临签名失败或任何其他异常。

 //Set the google token in map
            Map<String, String> logins = new HashMap<>();
            logins.put(AppConstants.GOOGLE_CONSTANT, token);

            //Initialize amazon cognito credentials provider
            CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
                    activity, // Context
                    AppConstants.IDENTITY_POOL_ID, // Identity Pool ID
                    Regions.US_EAST_1 // Region
            );

            //Set the google credentials
            credentialsProvider.setLogins(logins);

AmazonS3 s3client = new AmazonS3Client(credentialsProvider); 

java.util.Date expiration = new java.util.Date();
long msec = expiration.getTime();
msec += 1000 * 60 * 60; // 1 hour.
expiration.setTime(msec);

GeneratePresignedUrlRequest generatePresignedUrlRequest = 
          new GeneratePresignedUrlRequest(bucketName, objectKey);
generatePresignedUrlRequest.setMethod(HttpMethod.GET); // Default.
generatePresignedUrlRequest.setExpiration(expiration);

URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest); 

当我尝试在浏览器中加载接收 URL 时,它会抛出签名错误。

问题是,所有的帮助都是针对 Java 的。我没有找到任何针对 Android 的具体帮助。

我参考了以下网站 https://aws.amazon.com/blogs/developer/generating-amazon-s3-pre-signed-urls-with-sse-kms-part-2/ http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html

【问题讨论】:

    标签: android amazon-web-services amazon-s3 aws-lambda


    【解决方案1】:

    您可以使用以下代码获取预签名的获取网址。

    URL presignedUrl = s3.generatePresignedUrl(
                 bucketName, key, new Date(new Date().getTime() + 1000 * 60 * 60));
    System.out.println(presignedUrl.toExternalForm());
    
    HttpURLConnection connection = connectToPresignedUrl(
                 s3, new GeneratePresignedUrlRequest(bucketName, key));
    assertEquals(200, connection.getResponseCode());
    

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2015-05-30
      • 2018-01-25
      • 2021-04-27
      • 2016-03-28
      相关资源
      最近更新 更多