【发布时间】:2016-12-31 16:32:18
【问题描述】:
我有以下 S3 存储桶
- “client1”
- “client2”
- ...
- “clientX”
我们的客户通过 jar 应用程序将数据上传到他们的存储桶(client1 到存储桶 client1 等)。这是和平的代码:
BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3client = new AmazonS3Client(credentials);
s3client.setRegion(Region.getRegion(Regions.US_EAST_1));
File file = new File(OUTPUT_DIRECTORY + '/' + fileName);
s3client.putObject(new PutObjectRequest(bucketName, datasource + '/' + fileName, file));
问题是,他们有用于输出流量的防火墙。他们必须在防火墙中允许 URL .amazonaws.com。是否可以将端点设置为我们的域 storage.domain.com ?
我们预计将来会更改区域,但我们所有的客户现在都被锁定到 amazonaws.com = US_EAST_1 区域 -> 我们所有的客户都需要更改防火墙中的规则。
如果端点是 storage.domain.com - 一切都会好的 :)
预期客户 URL 示例
- client1 会将数据放到 URL client1.storage.domain.com
- client2 会将数据放到 URL client2.storage.domain.com
- clientX 会将数据放到 URL clientX.storage.domain.com
我们知道 CloudFront 中的设置,但它是按存储桶设置的。我们正在寻找一种全球 AWS 设置的解决方案。我们该怎么做?
非常感谢
【问题讨论】:
-
部分答案很大程度上取决于您是否将使用 HTTPS。几乎不可想象你不会,但这是我们需要知道的一个细节。另外,为什么客户端需要打开您的整个域或整个子域,而不是客户端的特定域?而且,那些根据 IP 地址而不是主机名列入白名单的客户端呢?
-
是的,我们将使用 HTTPS。我们希望所有客户端都有一个端点——一个上传点——防火墙中所有客户端的相同规则。易于管理。
标签: amazon-web-services amazon-s3 aws-sdk amazon-cloudfront