Auf dieser Seite wird beschrieben, wie Nutzer, die Anfragen über eine API senden, vollständig von Amazon Simple Storage Service (Amazon S3) zu Cloud Storage migrieren. Nach einer vollständigen Migration können Sie alle Features von Cloud Storage verwenden, einschließlich mehrerer Projekte und OAuth 2.0 zur Authentifizierung.
Wenn Sie schnell mit Cloud Storage beginnen möchten, können Sie eine einfache Migration auswählen, die nur wenige simple Änderungen an den Tools und Bibliotheken erfordert, die Sie aktuell mit Amazon S3 verwenden.
Von Amazon S3 zu Cloud Storage migrieren
Für eine vollständige Migration von Amazon S3 zu Cloud Storage müssen Sie folgende Schritte ausführen:
- Ändern Sie alle vorhandenen Header des Typs
x-amz-*
in die entsprechenden Header des Typsx-goog-*
. - Ändern Sie den ACL-XML-Code von AWS in den entsprechenden ACL-XML-Code von Cloud Storage (siehe Access Control Lists (ACLs) erstellen und verwalten).
- Geben Sie in Ihren Anfragen den Header x-goog-project-id an.
Richten Sie wie unter Authentifizierung mit OAuth 2.0 beschrieben die Verwendung der Authentifizierung mit OAuth 2.0 ein. Der erste Schritt besteht darin, Ihre Anwendung, von der Sie Anfragen senden werden, bei Google anzumelden. Bei Verwendung von OAuth 2.0 sieht Ihr
Authorization
-Header so aus:Authorization: Bearer OAUTH2_TOKEN
OAuth 2.0 greift für die Sicherheit auf SSL zurück und ist leichter zu implementieren. Ihre Anwendung muss also keine direkte kryptografische Signierung vornehmen. Mit OAuth kann Ihre Anwendung Zugriff auf Daten anfordern, die mit dem Konto eines Nutzer verknüpft sind. Der Zugriff kann mehrere Ebenen wie read-only, read-write und full-control umfassen. Weitere Informationen finden Sie unter OAuth 2.0-Bereiche für Cloud Storage und Anmeldedaten für Nutzerkonten.
Zugriffssteuerung
In diesem Abschnitt finden Sie einige Beispiele für die Zugriffssteuerung, die Ihnen die Migration von Amazon S3 zu Cloud Storage erleichtern sollen. Eine Übersicht über die Zugriffssteuerung in Cloud Storage finden Sie unter Zugriffssteuerungsoptionen.
In Cloud Storage gibt es mehrere Möglichkeiten, ACLs auf Buckets und Objekte anzuwenden (siehe Access Control Lists (ACLs) erstellen und verwalten). Zwei dieser Möglichkeiten zum Festlegen der ACLs entsprechen dem Vorgehen in Amazon S3:
- Mit dem Abfragestringparameter
acl
können Sie ACLs für bestimmte Bereiche anwenden. - Der Anfrageheader
x-goog-acl
zum Anwenden vordefinierter ACLs, die auch als gespeicherte ACLs bekannt sind
Abfragestringparameter "acl" verwenden
Sie können den Abfragestringparameter acl
für eine Cloud Storage-Anfrage genau auf dieselbe Weise wie für eine Amazon S3-Anfrage verwenden. Der acl
-Parameter wird in Verbindung mit der PUT
-Methode verwendet, um ACLs auf ein vorhandenes Objekt, einen vorhandenen Bucket oder einen Bucket, den Sie gerade erstellen, anzuwenden. Wenn Sie den Abfragestringparameter acl
als Teil einer PUT
-Anfrage verwenden, müssen Sie mithilfe der ACL-Syntax von Cloud Storage an den Anfragetext ein XML-Dokument anhängen. Das XML-Dokument enthält die einzelnen ACL-Einträge, die Sie auf den Bucket oder das Objekt anwenden möchten.
Das folgende Beispiel veranschaulicht eine PUT
-Anfrage an Amazon S3, bei der der Abfragestringparameter acl
verwendet wird. Die ACLs sind in einem XML-Dokument definiert, das mit dem Anfragetext gesendet wird. Die PUT
-Anfrage ändert die ACLs für ein Objekt mit dem Namen europe/france/paris.jpg
, das sich in einem Bucket namens my-travel-maps
befindet. Die ACL gewährt jane@gmail.com die Berechtigung FULL_CONTROL
.
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.s3.amazonaws.com Date: Wed, 06 Nov 2013 19:28:18 GMT Content-Length: 598 Content-Type: application/xml Authorization: AWS4-HMAC-SHA256 Credential=AWS-ACCESS-KEY/20131106/us-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;date;host, Signature=4c45f25bb679fdab0de5a287625d6a143414728d93c9aeb9f4cc91c33a1c45fg <?xml version='1.0' encoding='utf-8'?> <AccessControlPolicy> <Owner> <ID>5a6557ba40f7c86496ffceae789fcd888abc1b62a7149873a0fe12c0f60a7d95</ID> <DisplayName>ownerEmail@example.com</DisplayName> </Owner> <AccessControlList> <Grant> <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"> <ID>fd447671d60b979f78ee6fcec7b22afc80e6b26a4db16eed01afb8064047949b</ID> <DisplayName>jane@gmail.com</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> </AccessControlList> </AccessControlPolicy>
Hier die gleiche Anfrage an Cloud Storage:
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Wed, 06 Nov 2013 19:37:33 GMT Content-Length: 268 Content-Type: application/xml Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <?xml version='1.0' encoding='utf-8'?> <AccessControlList> <Entries> <Entry> <Permission>FULL_CONTROL</Permission> <Scope type="UserByEmail"> <EmailAddress>jane@gmail.com</EmailAddress> </Scope> </Entry> </Entries> </AccessControlList>
Beachten Sie, dass Cloud Storage im ACL-XML-Dokument kein <Owner/>
-Element benötigt. Weitere Informationen finden Sie unter Bucket- und Objektinhaberschaft.
Sie können auch Bucket- und Objekt-ACLs abrufen, indem Sie den Abfragestringparameter acl
mit der GET
-Methode verwenden. Die ACLs sind im XML-Dokument beschrieben, das an den Antworttext angehängt ist. Sie müssen die Berechtigung FULL_CONTROL
haben, um ACLs auf ein Objekt oder ein Bucket anzuwenden oder sie abzurufen.
ACLs mit einem Erweiterungsanfrageheader anwenden
Sie können bei einer Cloud Storage-Anfrage den Header x-goog-acl
genau auf dieselbe Weise wie den Header x-amz-acl
bei einer Amazon S3-Anfrage verwenden, um vordefinierte ACLs auf Buckets und Objekte anzuwenden. Normalerweise verwenden Sie den Header x-goog-acl
(x-amz-acl
), um eine vordefinierte ACL auf einen Bucket oder ein Objekt anzuwenden, wenn Sie den Bucket oder das Objekt erstellen oder hochladen. Die vordefinierten ACLs von Cloud Storage sind den gespeicherten ACLs von Amazon S3 ähnlich, beispielsweise "private", "public-read", "public-read-write" und anderen. Eine Liste der vordefinierten ACLs für Cloud Storage finden Sie unter Vordefinierte ACLs.
Das folgende Beispiel zeigt eine PUT
-Anfrage für ein Objekt, bei der die ACL public-read
auf ein Objekt mit dem Namen europe/france/paris.jpg
angewendet wird. Dieses Objekt wird in einen Bucket namens my-travel-maps
in Amazon S3 hochgeladen.
PUT europe/france/paris.jpg HTTP/1.1 Host: my-travel-maps.s3.amazonaws.com Date: Wed, 06 Nov 2013 20:48:42 GMT Content-Length: 888814 Content-Type: image/jpg x-amz-acl: public-read Authorization: AWS4-HMAC-SHA256 Credential=AWS-ACCESS-KEY/20131106/us-east-1/s3/aws4_request, SignedHeaders=content-length;content-type;date;host, Signature=808150c37dbd1b425b2398421d6fc3dd6d4942dfaae9e519fd5835aa62fd62ab <888814 bytes in entity body>
Hier die gleiche Anfrage an Cloud Storage:
PUT europe/france/paris.jpg HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Wed, 06 Nov 2013 20:49:57 GMT Content-Length: 888814 Content-Type: image/jpg x-goog-acl: public-read Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <888814 bytes in entity body>
Sie können auch den Header x-goog-acl
verwenden, um eine vordefinierte ACL auf einen vorhandenen Bucket oder ein vorhandenes Objekt anzuwenden. Hierfür muss Ihre Anfrage den Abfragestringparameter acl
enthalten, darf jedoch kein XML-Dokument umfassen. Die Anwendung einer vordefinierten ACL auf ein vorhandenes Objekt oder einen vorhandenen Bucket ist nützlich, wenn Sie zwischen zwei vordefinierten ACLs wechseln oder benutzerdefinierte ACLs durch vordefinierte ACLs ersetzen möchten. Bei der folgenden PUT
-Anfrage für ein Objekt wird beispielsweise die vordefinierte ACL private
auf ein Objekt mit dem Namen europe/france/paris.jpg
angewendet, das sich in einem Bucket namens my-travel-maps
befindet.
PUT europe/france/paris.jpg?acl HTTP/1.1 Host: my-travel-maps.storage.googleapis.com Date: Wed, 06 Nov 2013 00:26:36 GMT Content-Length: 0 x-goog-acl: private Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg <empty entity body>
Weitere Informationen zum Verwalten von ACLs finden Sie unter Access Control Lists (ACLs) erstellen und verwalten.
Anfragemethoden für die Migration von Amazon S3 zu Cloud Storage
Cloud Storage unterstützt die gleichen standardmäßigen HTTP-Anfragemethoden zum Lesen und Schreiben von Daten in Ihren Buckets wie Amazon S3. Der Großteil Ihrer Tools und Bibliotheken, die Sie aktuell in Amazon S3 verwenden, funktioniert daher unverändert in Cloud Storage. Cloud Storage unterstützt die folgenden Anfragemethoden:
- Dienstanfragen für
GET
- Bucket-Anfragen wie
PUT
,GET
undDELETE
- Objektanfragen wie
GET
,POST
,PUT
,HEAD
undDELETE
Weitere Informationen finden Sie unter Referenzmethoden der XML API. Beachten Sie, dass Sie gegebenenfalls den Anfragetext ändern müssen, wenn Sie Anfragen an Cloud Storage senden, damit die richtige Syntax von Cloud Storage verwendet wird. Wenn Sie beispielsweise eine Lebenszykluskonfiguration für einen Bucket erstellen, sollten Sie den Lebenszyklus-XML-Code von Cloud Storage verwenden, der sich vom Lebenszyklus-XML-Code von Amazon S3 unterscheidet.
Zwischen der Cloud Storage XML API und Amazon S3 gibt es einige Unterschiede:
Funktionalität bei Amazon S3 | Funktionalität der XML API von Google Cloud Storage |
---|---|
Wenn Sie vom Kunden bereitgestellte Verschlüsselungsschlüssel in einem mehrteiligen Upload verwenden, enthält die letzte Anfrage den vom Kunden bereitgestellten Verschlüsselungsschlüssel nicht. | In der XML API von Cloud Storage müssen Sie bei allen Anfragen in einem mehrteiligen Upload, einschließlich der letzten Anfrage, den gleichen vom Kunden bereitgestellten Verschlüsselungsschlüssel angeben. Diese Voraussetzung ist, dass Cloud Storage Ihre Verschlüsselungsschlüsselinformationen nicht speichert, während es auf den Abschluss des Uploads wartet. Der Schlüssel erfordert jedoch, dass die Prüfsumme für das fertige Objekt berechnet wird. |
In Amazon S3 können V4-Signaturen zur Authentifizierung von Uploads verwendet werden, die eine aufgeteilte Transferverschlüsselung verwenden. | In der Cloud Storage XML API können die aufgeteilte Transferverschlüsselung und V4-Signaturen derzeit nicht gleichzeitig verwendet werden. Einige Amazon S3-Tools verwenden standardmäßig die aufgeteilte Transferverschlüsselung zusammen mit Signaturen. In solchen Fällen sollten Sie die aufgeteilte Transferverschlüsselung deaktivieren. |
GET/POST-Abfragestringparameter für einen Bucket:
|
Alternativen:
|
Mehrere Objekte löschen POST /?delete |
Mit der Google Cloud Console können Sie problemlos mehrere Objekte entfernen. Alternativ unterstützt die JSON API das Senden von Batchanfragen, sodass sich die Anzahl der HTTP-Verbindungen verringert, die Ihr Client herstellt. |
Header für die Migration von Amazon S3 zu Cloud Storage
Cloud Storage verwendet mehrere Standard-HTTP-Header sowie mehrere benutzerdefinierte (Erweiterungs-)HTTP-Header. Wenn Sie von Amazon S3 auf Cloud Storage umsteigen, können Sie Ihre benutzerdefinierten Header von Amazon S3 in die benutzerdefinierten Header von Cloud Storage mit gleicher oder ähnlicher Funktionalität umwandeln (siehe Tabelle unten).
Bei vielen Amazon S3-Headern muss einfach das Präfix x-amz
durch x-goog
ersetzt werden:
Amazon S3-Header | Cloud Storage-Header |
---|---|
x-amz-storage-class |
x-goog-storage-class |
x-amz-acl |
x-goog-acl |
x-amz-date |
x-goog-date |
x-amz-meta-* |
x-goog-meta-* |
x-amz-copy-source |
x-goog-copy-source |
x-amz-metadata-directive |
x-goog-metadata-directive |
x-amz-copy-source-if-match |
x-goog-copy-source-if-match |
x-amz-copy-source-if-none-match |
x-goog-copy-source-if-none-match |
x-amz-copy-source-if-unmodified-since |
x-goog-copy-source-if-unmodified-since |
x-amz-copy-source-if-modified-since |
x-goog-copy-source-if-modified-since |
Mehrere Header unterscheiden sich oder gelten nicht in Cloud Storage:
Amazon S3-Header | Cloud Storage-Header |
---|---|
x-amz-server-side-encryption |
Nicht erforderlich. Cloud Storage verschlüsselt automatisch alle Daten, bevor sie auf ein Laufwerk geschrieben werden. Weitere Informationen finden Sie unter Verschlüsselung. |
x-amz-grant-* |
x-goog-acl mit einem vordefinierten ACL-Wert. |
x-amz-mfa |
Verwenden Sie die Authentifizierung mit OAuth 2.0. |
x-amz-website-redirect-location , x-amz-copy-source-range |
– |
Unter HTTP-Header und Abfragestringparameter für die XML API finden Sie eine Referenz zu Cloud Storage-Headern.
Nächste Schritte
- Migration von Amazon S3 planen
- Übertragen Sie Ihre Daten von externen Quellen wie Amazon S3 und Microsoft Azure Blob Storage in Cloud Storage mit dem Storage Transfer Service.
- Erstellen Sie ereignisgesteuerte Übertragungen, die Amazon S3-Ereignisbenachrichtigungen verwenden, um einen Cloud Storage-Bucket mit Amazon S3 zu synchronisieren.