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。
希望对您有所帮助。
我的网络服务器需要访问 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。
希望对您有所帮助。