我的Web服务器需要访问S3。当我将它们放在公共子网中,或将它们放在私人子网中并使用NAT网关时,一切正常:
IAmazonS3 client = new AmazonS3Client("myaccesskey", "mysecretkey", enRegion);
PutObjectRequest putReq = new PutObjectRequest();
putReq.FilePath = "c:tempmyphoto.jpg";
putReq.BucketName = "MyBucket";
putReq.Key = "myphoto.jpg";
PutObjectResponse putResp = client.PutObject(putReq);
现在,我尝试将Web服务器放置在带有S3端点的私有子网中,我的代码无法再访问S3。我需要更改代码吗?
只是FYI VPC是真正的私人。只有您明确允许的流量才能传输VPC的边界。
因此,在VPC内部,需要访问外部资源的实例要么需要分配EIP(在这种情况下,他们可以使用AWS的基础架构访问外部资源),或者您需要提供NAT主机(在这种情况下流量通过您自己的NAT出口VPC)。
截至2015年5月11日,AWS已发布了S3的" VPC端点",该端点允许直接从VPC访问S3,而无需通过代理主机或NAT实例
您可以创建端点,选择所需的VPC并自定义访问策略(如果需要):
:请参阅AWS博客文章以获取详细信息。
希望这会有所帮助。