0

当文件未加密(纯文本)服务器端时,下面的代码有效。我正在尝试从同一个存储桶下载另一个文件,但这个文件是通过 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();
    }
4

2 回答 2

1

如果它仍然是一个问题......我遇到了同样的问题并发现你在下载文件时不应该传递任何密钥,即

GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName)    
s3client.getObject(getObjectRequest)

由于您使用了服务器端加密,AWS 将在发送前自动解密文件。

于 2017-12-15T13:09:31.947 回答
1

您首先创建一个关键对象:

SSECustomerKey sseKey = new SSECustomerKey(secretKey);

然后您使用该密钥创建一个请求:

GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, keyName).withSSECustomerKey(sseKey);

然后你检索对象:

s3client = new AmazonS3Client(...);
S3Object s3Object = s3client.getObject(getObjectRequest);
于 2017-09-26T08:02:04.150 回答