AWS .NET SDK:无法从 S3 端点访问 S3

AWS .NET SDK: cannot access S3 from S3 endpoint

我的网络服务器需要访问 S3。当我将它们放在 public 子网中,或将它们放在私有子网中并使用 NAT 网关时,一切正常:

IAmazonS3 client = new AmazonS3Client("myaccesskey", "mysecretkey", enRegion);
PutObjectRequest putReq = new PutObjectRequest();
putReq.FilePath = "c:\temp\myphoto.jpg";
putReq.BucketName = "MyBucket";
putReq.Key = "myphoto.jpg";
PutObjectResponse putResp = client.PutObject(putReq);

现在我尝试将 Web 服务器放在带有 S3 端点的私有子网中,我的代码无法再访问 S3。我需要更改代码吗?

仅供参考 VPC 是真正私有的。只有您明确允许的流量才能通过 VPC 的边界。

因此,在 VPC 内部,需要访问外部资源的实例需要分配一个 EIP(在这种情况下它们可以使用 AWS 的基础设施访问外部资源),或者您需要提供一个 NAT 主机(在这种情况下所有流量都通过您自己的 NAT 离开 VPC。

截至 2015 年 5 月 11 日,AWS 已发布 "VPC Endpoint" for S3,它允许直接从 VPC 访问 S3,而无需通过代理主机或 NAT 实例

您可以创建端点,选择所需的 VPC,并自定义访问策略(如果需要):

详情请参考AWS Blog Post

希望对您有所帮助。