我正在尝试在另一个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之间解密的任何想法?
最佳, 可人
答案 0 :(得分:1)
开个玩笑,我已经弄明白了。这些文件是json.gz文件,这意味着我需要解压缩它们。如果有人想使用它,上面的代码可用于获取S3文件的交叉帐户:)