2016-10-04 97 views
1

我目前正在嘗試訪問另一個VPC中的S3文件,並且我能夠成功。但是當文件進入時,它們全部仍然是加密的。AWS S3文件跨賬戶不解密

我有VPC A中的機器嘗試讀取VPC B中的S3文件。這些文件在VPC B中轉到存儲桶時進行了服務器端加密。我成功承擔了角色並讓文件來自S3存儲桶VPC B到VPC A.但是,我的機器中的VPC A中的文件應該以json形式進入,但似乎仍然是加密的。

當我有機器在VPC A讀取服務器端加密文件從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

開玩笑的,我已經想通了。這些文件是json.gz文件,這意味着我需要解壓縮它們。上面的代碼用於獲取S3文件交叉帳戶,如果任何人想要使用它:)