如何让CloudFront访问某些S3?

时间:2013-03-29 19:59:42

标签: amazon-web-services amazon-s3 amazon-cloudfront

我是AWS的新手。现在我想写一个java代码来使用CloudFront来访问s3。

我创建了一个S3存储桶。但我不知道如何使用S3凭证获取cloudfront对象。

我阅读了AWS JAVA API,似乎代码应采用以下形式:

AmazonCloudFrontClient cloudfront = new AmazonCloudFrontClient(credentials);
CreateCloudFrontOriginAccessIdentityRequest originRequest = new CreateCloudFrontOriginAccessIdentityRequest();
originRequest.setRequestCredentials(credentials);

cloudfront.createCloudFrontOriginAccessIdentity(originRequest);

但我没有看到S3ID或其他东西将S3设置为云端。

1 个答案:

答案 0 :(得分:1)

如果您想使用CloudFront提供S3文件,通常意味着您希望S3存储桶可公开使用。您可以通过S3接口(Web控制台,API或第三方工具CloudBerryBucket Explorer)将对象和存储桶定义为公共对象。

您也可以使用Java SDK

进行设置
Statement allowPublicReadStatement = new Statement(Effect.Allow)
         .withPrincipals(Principal.AllUsers)
         .withActions(S3Actions.GetObject)
         .withResources(new S3ObjectResource(myBucketName, "*"));

Policy policy = new Policy()
         .withStatements(allowPublicReadStatement);

AmazonS3 s3 = new AmazonS3Client(myAwsCredentials);
s3.setBucketPolicy(myBucketName, policy.toJson());

如果您要提供私人文件,可以在此处查看文档:{​​{3}}