Übertragung von S3 über CloudFront

Übertragungen von Amazon S3 können eine Amazon CloudFront-Verteilung als Ausgangspfad verwenden.

Datenübertragungen über CloudFront können von niedrigeren Kosten für ausgehenden AWS-Traffic im Vergleich zur direkten Übertragung von S3 profitieren. Weitere Informationen finden Sie unter CloudFront-Preise und Gebühren für ausgehenden S3-Traffic.

Wenn Sie CloudFront als Pfad für ausgehenden Traffic verwenden, sind Ihre S3-Objekte nicht öffentlich zugänglich. Weitere Informationen finden Sie unter Werden meine Objekte durch die Verwendung von CloudFront öffentlich zugänglich gemacht?

Überblick

So übertragen Sie S3-Daten über CloudFront:

IAM-Berechtigungen konfigurieren

Folgen Sie der Anleitung unter Übertragungsberechtigungen ohne Agent, um die erforderlichen Google Cloud-Berechtigungen zu gewähren.

Zugriff auf den S3-Bucket konfigurieren

Folgen Sie der Anleitung unter Zugriff auf eine Quelle konfigurieren: Amazon S3, um den Zugriff auf Ihre Daten in Amazon S3 zu konfigurieren.

CloudFront-Distribution für einen S3-Bucket erstellen

  1. Rufen Sie in Ihrem AWS-Konto CloudFront auf.
  2. Klicken Sie auf CloudFront-Distribution erstellen.
  3. Wählen Sie unter Ursprungsdomain Ihren S3-Bucket aus.
  4. Origin Path muss leer bleiben.
  5. Akzeptieren Sie das automatisch ausgefüllte Feld Name des Abflugorts oder geben Sie einen eigenen Wert an.
  6. Wählen Sie im Bereich Ursprungszugriff die Option Öffentlich aus. Der Bucket wird dadurch nicht öffentlich. Stattdessen wird CloudFront mitgeteilt, dass kein Zugriffsmechanismus konfiguriert werden sollte.
  7. Gehen Sie im Abschnitt Cache-Schlüssel und Ursprungsanfragen so vor:
    1. Wählen Sie für die Cache-Richtlinie die Option CachingDisabled aus. Dadurch wird verhindert, dass CloudFront Anfragen im Cache speichert und für nicht authentifizierte Betrachter bereitstellt.
    2. Wählen Sie für die Richtlinie für Ursprungsanfragen AllViewerExceptHostHeader aus. Dadurch kann CloudFront Authentifizierungsheader an S3 weiterleiten, sodass Storage Transfer Service mit Ihren sicheren Anmeldedaten auf Ihren Bucket zugreifen kann.
  8. Wählen Sie im Abschnitt Web Application Firewall (WAF) die Option Nicht aktivieren aus.
  9. Wählen Sie optional eine Preisklasse aus. Storage Transfer Service wählt Worker-Pools anhand der Region des Quell-Buckets aus, sodass CloudFront-Preise in dieser Region berechnet werden. Achten Sie darauf, dass sich Ihr Quell-Bucket in den USA oder Europa befindet, oder wählen Sie in CloudFront als Preisklasse Nur Nordamerika und Europa verwenden aus, um die niedrigsten Preise zu erhalten.
  10. Klicken Sie auf CloudFront-Distribution erstellen.

    Nach der erfolgreichen Erstellung wird die Seite mit den CloudFront-Distributionsdetails angezeigt.

  11. Notieren Sie sich den Domainnamen für die Verteilung. Beispiel: https://dy1h2n3l4ob56.cloudfront.net. Wenn auf der Detailseite das Protokoll https:// nicht vor dem Namen der Distributionsdomain angegeben ist, müssen Sie es beim Erstellen des Übertragungsjobs selbst hinzufügen.

Übertragungsjob erstellen

Die Übertragung über eine CloudFront-Distribution wird in der Google Cloud Console und der REST API unterstützt.

Der Name des Übertragungsjobs darf keine vertraulichen Informationen wie personenidentifizierbare Informationen oder Sicherheitsdaten enthalten. Ressourcennamen können an die Namen anderer Google Cloud-Ressourcen weitergegeben und für Google-interne Systeme außerhalb Ihres Projekts bereitgestellt werden.

Google Cloud Console

Wenn Sie eine Übertragung mit der Google Cloud Console erstellen möchten, folgen Sie der Anleitung unter Übertragung erstellen.

Wenn Sie zur Eingabe der CloudFront-Domain aufgefordert werden, geben Sie den Namen der Distributionsdomain ein, den Sie sich im vorherigen Abschnitt notiert haben. Dieser Wert wird auch im CloudFront-Abschnitt der Amazon Web Services-Konsole aufgeführt. Sie hat das Format https://dy1h2n3l4ob56.cloudfront.net.

REST API

Um eine Übertragung mit der REST API zu erstellen, folgen Sie dem Beispiel auf der Seite Übertragungen erstellen.

Geben Sie den Namen der Distributionsdomain als Wert des Felds transferSpec.awsS3DataSource.cloudfrontDomain an:

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net",
    "awsAccessKey": {
      "accessKeyId": "AWS_ACCESS_KEY_ID",
      "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
    }
  },
  ...
}

Häufig gestellte Fragen

Sind meine Objekte durch die Verwendung von CloudFront öffentlich zugänglich?

Nein. Wenn Sie die Konfigurationsschritte auf dieser Seite ausgeführt haben, sind Ihre Objekte nicht öffentlich zugänglich.

  • Cloudfront hat keinen direkten Zugriff auf Ihre S3-Objekte.
  • Nutzer erhalten den Fehler permission denied, wenn sie versuchen, direkt oder über CloudFront (wenn Ihr Bucket privat ist) auf Ihre Objekte zuzugreifen.
  • Storage Transfer Service signiert Anfragen an CloudFront mit den Anmeldedaten, die Sie im Übertragungsjob angegeben haben. Dadurch können wir Ihre Objekte sicher herunterladen, so als würden sie direkt von S3 herunterladen. Dies funktioniert aufgrund der Einstellung für die Headerweiterleitung AllViewerExceptHostHeader.