AWS S3文件交叉帐户未解密

时间:2016-10-04 19:10:04

标签: amazon-s3 aws-sdk aws-cli aws-kms

我正在尝试在另一个VPC中访问S3文件,我能够成功。但是当文件进来时,它们仍然是加密的。

我在VPC A中有机器正在尝试读取VPC B中的S3文件。这些文件在进入VPC B中的存储区时是服务器端加密的。我成功地承担了角色并且在VPC中有来自S3存储桶的文件B到VPC A.但是,我在VPC A中的机器中的文件应该以json的形式出现,但似乎仍然是加密的。

当我在VPC中有机器读取服务器端加密文件来自VPC A中的S3存储桶时,我没有这个问题。这些文件似乎是自动解密的。

CLI命令命令与此类似(在VPC A中):

aws sts assume-role --role-arn ROLEARN --role-session-name s3-cloudtrail-access
aws s3 cp s3://LOCATIONOFFILE.json.gz test.json.gz --profile crossaccountrole

使用Java SDK就像这样(在VPC A中):

ClientConfiguration config = new ClientConfiguration();
AWSSecurityTokenService securityTokenService = new AWSSecurityTokenServiceClient(config);
AssumeRoleResult assumeRoleResult = securityTokenService.assumeRole(new AssumeRoleRequest()
    .withRoleArn(roleArn).withDurationSeconds(3600)
    .withRoleSessionName("s3-cloudtrail-access"));
Credentials stsCredentials = assumeRoleResult.getCredentials();
System.out.println("stsCredentials: " + stsCredentials);
AWSSessionCredentials tempCredentials = new BasicSessionCredentials(
    stsCredentials.getAccessKeyId(), stsCredentials.getSecretAccessKey(),
    stsCredentials.getSessionToken()
);
AmazonS3 tempClient = new AmazonS3Client(tempCredentials, config);
tempClient.getObject(
    new GetObjectRequest(horizBucketName, horizFileNameInS3),
    new File("/home/ec2-user/test-horiz.json.gz")
);

关于如何确保文件在VPC之间解密的任何想法?

最佳, 可人

1 个答案:

答案 0 :(得分:1)

开个玩笑,我已经弄明白了。这些文件是json.gz文件,这意味着我需要解压缩它们。如果有人想使用它,上面的代码可用于获取S3文件的交叉帐户:)