当文件未加密(纯文本)服务器端时,以下代码有效。我尝试从同一个存储桶下载另一个文件,但此文件是通过KMS加密的。
我已经尝试了SSECustomerKey并添加了.withSSECustomerKey(myKey),但没有运气..有关如何修改此代码的任何想法,或者可以指出我正确的方向?
AmazonS3 s3bucket = AmazonS3ClientBuilder.standard().withRegion("us-east-2").build();
S3Object download = s3bucket.getObject("mybucket-bucket", "secretfile2.txt");
try
{
download = IOUtils.toString(download.getObjectContent());
}
catch (IOException e1)
{
e1.printStackTrace();
}
答案 0 :(得分:1)
首先创建一个关键对象:
SSECustomerKey sseKey = new SSECustomerKey(secretKey);
然后使用该密钥创建请求:
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(sseKey);
然后你检索对象:
s3client = new AmazonS3Client(...);
S3Object s3Object = s3client.getObject(getObjectRequest);
答案 1 :(得分:0)
如果还是个问题...... 我遇到了同样的问题,并且发现在下载文件时你不应该传递任何密钥,即
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName)
s3client.getObject(getObjectRequest)
由于您使用了服务器端加密,AWS会在发送之前自动解密文件。