1

我目前正在尝试访问另一个 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 之间传递的任何想法?

最好的,克伦

4

1 回答 1

1

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

于 2016-10-04T19:20:16.013 回答