2017-09-26 2 views
0

nicht auf S3 zugreifen, mein Webserver muss auf S3 zugreifen. Als ich sie in den öffentlichen Subnetzen platzieren, oder sie in den privaten Subnetzen platzieren und NAT-Gateways verwenden, funktioniert alles einwandfrei:AWS .NET SDK: S3 kann vom S3-Endpunkt

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); 

Jetzt habe ich versucht, den Web-Server im privaten Subnetz mit S3-Endpunkten zu platzieren, mein Code kann nicht mehr auf S3 zugreifen. Muss ich den Code ändern?

+1

Haben Sie die Routentabelle für die Verwendung des S3 VPC-Endpunkts konfiguriert? Versuchen Sie, auf einen Bucket in derselben Region wie Ihre VPC oder in einer anderen Region zuzugreifen? Welche Fehlermeldung erhalten Sie? (Fühlen Sie sich frei, Ihre Frage zu bearbeiten, um Details hinzuzufügen.) –

Antwort

1

Nur ein FYI VPC's sind wirklich privat. Nur Verkehr, den Sie explizit zulassen, kann die Grenzen der VPC durchlaufen. Innerhalb einer VPC müssen Instanzen, die Zugriff auf externe Ressourcen benötigen, entweder eine EIP zugewiesen werden (in diesem Fall können sie mithilfe der Infrastruktur von AWS auf externe Ressourcen zugreifen), oder Sie müssen einen NAT-Host bereitstellen (in diesem Fall alle) der Verkehr leitet die VPC über Ihre eigene NAT).

Ab dem 11. Mai 2015 hat AWS eine "VPC Endpoint" für S3 freigegeben, die ohne von einem VPC direkt Zugriff auf S3 ermöglicht über einen Proxy-Host oder NAT-Instanz gehen

You Can Erstellen Sie einen Endpunkt, wählen Sie die gewünschte VPC und passen Sie die Zugriffsrichtlinie an (wenn Sie möchten):

Siehe bitte AWS Blog Post Für Details.

Hoffe, das hilft.