Bei Übertragungen von Amazon S3 kann eine Amazon CloudFront-Distribution als Pfad für ausgehenden Traffic verwendet werden.
Bei Datenübertragungen über CloudFront können im Vergleich zur direkten Übertragung von S3 niedrigere AWS-Kosten für ausgehenden Traffic anfallen. Weitere Informationen finden Sie unter CloudFront-Preise und S3-Gebühren für ausgehenden Traffic.Wenn Sie CloudFront als Pfad für ausgehenden Traffic verwenden, werden Ihre S3-Objekte nicht öffentlich zugänglich gemacht. Weitere Informationen finden Sie unter Macht die Verwendung von CloudFront meine Objekte öffentlich zugänglich?
Übersicht
Wenn Sie S3-Daten über CloudFront übertragen möchten, müssen Sie die folgenden Schritte ausführen:
- IAM-Berechtigungen konfigurieren
- Zugriff auf Ihren S3-Bucket konfigurieren
- CloudFront-Distribution für Ihren S3-Bucket erstellen
- Übertragungsjob erstellen
IAM-Berechtigungen konfigurieren
Folgen Sie der Anleitung unter Berechtigungen für Übertragungen ohne Agenten, um die erforderlichen Google Cloud-Berechtigungen zu erteilen.
Zugriff auf Ihren 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 Ihren S3-Bucket erstellen
- Rufen Sie in Ihrem AWS-Konto CloudFront auf.
- Klicken Sie auf CloudFront-Distribution erstellen.
- Wählen Sie unter Ursprungsdomain Ihren S3-Bucket aus.
- Das Feld Ursprungspfad muss leer bleiben.
- Übernehmen Sie den automatisch ausgefüllten Ursprungsnamen oder geben Sie einen eigenen Wert an.
- Wählen Sie im Bereich Ursprungszugriff die Option Öffentlich aus. Dadurch wird Ihr Bucket nicht öffentlich zugänglich gemacht. Stattdessen wird CloudFront mitgeteilt, dass kein Zugriffsmechanismus konfiguriert werden soll.
- Im Bereich Cache-Schlüssel- und Ursprungsanforderungen :
- Wählen Sie für Cache-Richtlinie die Option CachingDisabled aus. Dadurch wird verhindert, dass CloudFront Anfragen im Cache speichert und sie für nicht authentifizierte Nutzer bereitstellt.
- Wählen Sie für Ursprungsanforderungsrichtlinie die Option AllViewerExceptHostHeader aus. Dadurch kann CloudFront Authentifizierungsheader an S3 weiterleiten, sodass Storage Transfer Service mit Ihren sicheren Anmeldedaten auf Ihren Bucket zugreifen kann.
- Wählen Sie im Bereich Web Application Firewall (WAF) die Option Nicht aktivieren aus.
- Optional können Sie eine Preisklasse auswählen. Storage Transfer Service wählt Worker-Pools basierend auf der Region des Quell-Buckets aus. Die CloudFront-Preise fallen also in dieser Region an. Um die niedrigsten Preise zu erzielen, muss sich Ihr Quell-Bucket entweder in den USA oder in Europa befinden. Alternativ können Sie in CloudFront als Preisklasse die Option Nur Nordamerika und Europa verwenden auswählen.
Klicken Sie auf CloudFront-Distribution erstellen.
Nachdem die Distribution erfolgreich erstellt wurde, wird die Detailseite der CloudFront-Distribution angezeigt.
Notieren Sie sich den Domainnamen der Distribution. Beispiel:
https://dy1h2n3l4ob56.cloudfront.net. Wenn die Detailseite das Protokollhttps://nicht vor dem Domainnamen der Distribution enthält, 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 sichtbar gemacht werden.Google Cloud Console
Folgen Sie der Anleitung unter Übertragung erstellen, um eine Übertragung mit der Google Cloud Console zu erstellen.
Geben Sie bei Aufforderung zur Eingabe der CloudFront-Domain den Domainnamen der Distribution
ein, den Sie im vorherigen Abschnitt notiert haben. Sie finden diesen Wert auch im CloudFront-Bereich der Amazon Web Services-Console. Er hat das Format https://dy1h2n3l4ob56.cloudfront.net.
REST API
Folgen Sie dem Beispiel auf der Seite Übertragungen erstellen, um eine Übertragung mit der REST API zu erstellen.
Geben Sie den Domainnamen der Distribution 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"
}
},
...
}
Fehlerbehebung
Fehler „AuthorizationHeaderMalformed“
Wenn der Fehler AuthorizationHeaderMalformed auftritt und eine
Regionsabweichung angegeben wird (z. B. the region 'Location A' is wrong; expecting
'Location B'), liegt das wahrscheinlich an einer nicht unterstützten CloudFront-Konfiguration.
Dieser Fehler tritt auf, wenn Sie eine einzelne CloudFront-Distribution verwenden, um mehrere S3-Buckets zu verwalten, die sich in verschiedenen AWS-Regionen befinden.
Achten Sie darauf, dass jede CloudFront-Distribution nur S3-Buckets in einer einzigen AWS-Region verwaltet. Wenn Sie S3-Buckets in verschiedenen Regionen haben, erstellen Sie für jede Region eine separate CloudFront-Distribution.
Häufig gestellte Fragen
Macht die Verwendung von CloudFront meine Objekte ö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 auf Ihre Objekte zuzugreifen (wenn Ihr Bucket privat ist). - Storage Transfer Service signiert Anfragen an CloudFront mit den Anmeldedaten, die Sie im Übertragungsjob angegeben haben. So können wir Ihre Objekte sicher herunterladen, als würden wir sie direkt von S3 herunterladen. Das funktioniert aufgrund der Einstellung für die Headerweiterleitung
AllViewerExceptHostHeader.