このプロジェクトでは、Amazon Webサービスを設定しました。 Androidアプリケーション側では、サーバーからイメージを取得するためにs3 urlを生成する必要があります。以下のコードを使用すると、イメージを取得しようとしていますが、署名が失敗した場合やその他の例外が発生するたびに、S3 URLを生成してAndroidで画像を取得する
//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を読み込もうとすると、Signatureエラーが発生します。
問題はすべて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