我目前正在尝试访问另一个 VPC 中的 S3 文件,并且我能够成功。但是当文件进来时,它们仍然是加密的。
我在 VPC A 中有机器试图读取 VPC B 中的 S3 文件。当文件进入 VPC B 中的存储桶时,这些文件是服务器端加密的。我成功承担了角色,并且文件来自 VPC B 中的 S3 存储桶到 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 之间传递的任何想法?
最好的,克伦