Halaman ini menjelaskan cara melakukan migrasi sepenuhnya dari Amazon Simple Storage Service (Amazon S3) ke Cloud Storage untuk pengguna yang mengirim permintaan menggunakan API. Setelah bermigrasi sepenuhnya, Anda dapat menggunakan semua fitur Cloud Storage, termasuk beberapa project dan OAuth 2.0 untuk autentikasi.
Jika ingin mulai menggunakan Cloud Storage dengan cepat, Anda dapat memilih migrasi sederhana, yang hanya memerlukan beberapa perubahan sederhana pada alat dan library yang saat ini Anda gunakan dengan Amazon S3.
Bermigrasi dari Amazon S3 ke Cloud Storage
Untuk bermigrasi sepenuhnya dari Amazon S3 ke Cloud Storage, Anda perlu menyelesaikan langkah-langkah berikut:
- Ubah header
x-amz-*
yang ada menjadi headerx-goog-*
yang sesuai. - Ubah XML AWS Access Control List (ACL) ke XML ACL Cloud Storage yang sesuai (lihat Membuat dan mengelola daftar kontrol akses).
- Tetapkan header x-goog-project-id dalam permintaan Anda.
Siapkan untuk menggunakan autentikasi OAuth 2.0 seperti yang dijelaskan dalam Autentikasi OAuth 2.0. Langkah pertama adalah mendaftarkan aplikasi Anda (tempat Anda akan mengajukan permintaan) ke Google. Menggunakan OAuth 2.0 berarti header
Authorization
Anda terlihat seperti ini:Authorization: Bearer OAUTH2_TOKEN
OAuth 2.0 mengandalkan SSL untuk keamanan, bukan mengharuskan aplikasi Anda melakukan penandatanganan kriptografis secara langsung dan lebih mudah diterapkan. Dengan OAuth, aplikasi Anda dapat meminta akses ke data yang terkait dengan akun pengguna, dan akses dapat dicakup ke beberapa tingkat, termasuk hanya baca, baca-tulis, dan kontrol penuh. Untuk informasi selengkapnya, lihat Cakupan OAuth 2.0 Cloud Storage dan Mengakses data atas nama pengguna.
Kontrol akses
Bagian ini menampilkan beberapa contoh kontrol akses untuk membantu Anda bermigrasi dari Amazon S3 ke Cloud Storage. Untuk ringkasan kontrol akses di Cloud Storage, lihat Kontrol Akses.
Di Cloud Storage, ada beberapa cara untuk menerapkan ACL ke bucket dan objek (baca Membuat dan mengelola daftar kontrol akses). Dua cara untuk menentukan ACL serupa dengan yang Anda lakukan di Amazon S3:
- Parameter string kueri
acl
memungkinkan Anda menerapkan ACL untuk cakupan tertentu. - Header permintaan
x-goog-acl
memungkinkan Anda menerapkan ACL standar, yang terkadang dikenal sebagai ACL bawaan.
Menggunakan parameter string kueri acl
Anda dapat menggunakan parameter string kueri acl
untuk permintaan Cloud Storage dengan cara yang sama persis seperti saat Anda menggunakannya untuk permintaan Amazon S3. Parameter acl
digunakan bersama dengan metode PUT
untuk menerapkan ACL ke hal berikut: objek yang sudah ada, bucket yang sudah ada, atau bucket yang Anda buat. Saat menggunakan parameter string kueri acl
dalam permintaan PUT
, Anda harus melampirkan dokumen XML (menggunakan sintaksis ACL Cloud Storage) ke isi permintaan Anda. Dokumen XML berisi setiap entri ACL yang ingin Anda terapkan ke bucket atau objek.
Contoh berikut menunjukkan permintaan PUT
ke Amazon S3 yang menggunakan parameter
string kueri acl
. ACL ditetapkan dalam dokumen XML yang dikirim dalam isi permintaan. Permintaan PUT
mengubah ACL pada objek bernama europe/france/paris.jpg
yang ada di bucket bernama my-travel-maps
. ACL
memberikan izin FULL_CONTROL
ke jane@gmail.com.
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>
Berikut adalah permintaan yang sama ke 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>
Perhatikan bahwa Cloud Storage tidak mewajibkan elemen <Owner/>
dalam dokumen XML ACL. Untuk mengetahui informasi selengkapnya, lihat Kepemilikan bucket dan objek.
Anda juga dapat mengambil ACL bucket dan objek menggunakan parameter string kueri acl
dengan metode GET
. ACL dijelaskan dalam dokumen XML, yang dilampirkan ke isi respons. Anda harus memiliki izin FULL_CONTROL
untuk menerapkan atau mengambil ACL pada sebuah objek atau bucket.
Menerapkan ACL dengan header permintaan ekstensi
Anda dapat menggunakan header x-goog-acl
dalam permintaan Cloud Storage untuk menerapkan ACL standar ke bucket dan objek dengan cara yang sama persis seperti saat Anda menggunakan header x-amz-acl
dalam permintaan Amazon S3. Anda biasanya menggunakan header x-goog-acl
(x-amz-acl
) untuk menerapkan ACL standar ke bucket atau objek saat Anda membuat atau mengupload bucket atau objek. ACL Cloud Storage standar serupa dengan ACL Bawaan Amazon S3, termasuk pribadi, baca publik, baca tulis publik, serta lainnya. Untuk mengetahui daftar ACL Cloud Storage standar, lihat ACL Standar.
Contoh berikut menunjukkan permintaan Objek PUT
yang menerapkan
ACL public-read
ke objek bernama europe/france/paris.jpg
yang
diupload ke bucket bernama my-travel-maps
di Amazon S3.
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>
Berikut adalah permintaan yang sama ke 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>
Anda juga dapat menggunakan header x-goog-acl
untuk menerapkan ACL standar ke bucket atau objek yang ada. Untuk melakukannya, sertakan parameter string kueri acl
dalam permintaan Anda, tetapi jangan sertakan dokumen XML dalam permintaan Anda. Menerapkan ACL standar ke objek atau bucket yang ada berguna jika Anda ingin beralih dari satu ACL standar ke ACL standar sebelumnya, atau Anda ingin mengupdate ACL kustom ke ACL standar. Misalnya, permintaan Objek PUT
berikut menerapkan private
ACL standar ke objek bernama europe/france/paris.jpg
yang ada di bucket bernama my-travel-maps
.
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>
Untuk informasi selengkapnya tentang cara mengelola ACL, lihat Membuat dan mengelola daftar kontrol akses.
Bermigrasi dari metode permintaan Amazon S3 ke Cloud Storage
Cloud Storage mendukung metode permintaan HTTP standar yang sama untuk membaca dan menulis data ke bucket Anda, seperti yang didukung di Amazon S3. Oleh karena itu, sebagian besar alat dan library yang saat ini Anda gunakan dengan Amazon S3, berfungsi sebagaimana mestinya dengan Cloud Storage. Cloud Storage mendukung metode permintaan berikut:
- Permintaan layanan untuk
GET
. - Permintaan bucket, termasuk
PUT
,GET
,DELETE
. - Permintaan objek, termasuk
GET
,POST
,PUT
,HEAD
, danDELETE
.
Untuk mengetahui informasi selengkapnya, lihat Metode Referensi XML API. Perlu diingat bahwa saat mengirim permintaan ke Cloud Storage, Anda perlu mengubah isi permintaan, jika memungkinkan, untuk menggunakan sintaksis Cloud Storage yang sesuai. Misalnya, saat Anda membuat konfigurasi siklus proses untuk bucket, gunakan XML siklus proses Cloud Storage, yang berbeda dengan XML siklus proses Amazon S3.
Ada beberapa perbedaan antara Cloud Storage XML API dan Amazon S3 yang dirangkum di bawah ini:
Fungsi Amazon S3 | Fungsi Cloud Storage XML API |
---|---|
Saat menggunakan kunci enkripsi yang disediakan pelanggan dalam upload multibagian, permintaan terakhir tidak menyertakan kunci enkripsi yang disediakan pelanggan. | Di Cloud Storage XML API, semua permintaan dalam upload multibagian, termasuk permintaan akhir, mengharuskan Anda menyediakan kunci enkripsi yang disediakan pelanggan yang sama. Persyaratan ini ada karena Cloud Storage tidak menyimpan informasi kunci enkripsi saat menunggu permintaan menyelesaikan upload, tetapi memerlukan kunci tersebut untuk menghitung checksum objek yang sudah selesai. |
Di Amazon S3, tanda tangan V4 dapat digunakan untuk mengautentikasi upload yang menggunakan potongan encoding transfer. | Dalam Cloud Storage XML API, potongan encoding transfer dan tanda tangan V4 saat ini tidak dapat digunakan secara bersamaan. Beberapa alat Amazon S3 menggunakan potongan encoding transfer beserta tanda tangan secara default. Dalam kasus semacam ini, Anda harus menonaktifkan potongan encoding transfer. |
Parameter string kueri bucket GET/POST:
|
Alternatif:
|
Penghapusan beberapa objek. POST /?delete |
Gunakan Konsol Google Cloud untuk menghapus beberapa objek dengan mudah. Atau, JSON API mendukung pengiriman permintaan batch untuk mengurangi jumlah koneksi HTTP yang dibuat klien Anda. |
Bermigrasi dari header Amazon S3 ke Cloud Storage
Cloud Storage menggunakan beberapa header HTTP standar serta beberapa header HTTP kustom (ekstensi). Jika beralih dari Amazon S3 ke Cloud Storage, Anda dapat mengonversi header Amazon S3 kustom menjadi header kustom Cloud Storage yang setara atau fungsi yang serupa seperti yang ditunjukkan pada tabel di bawah ini.
Untuk sebagian besar header Amazon S3, Anda hanya perlu mengganti awalan x-amz
dengan x-goog
:
Header Amazon S3 | Header Cloud Storage |
---|---|
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 |
Beberapa header berbeda atau tidak berlaku di Cloud Storage:
Header Amazon S3 | Header Cloud Storage |
---|---|
x-amz-server-side-encryption |
Tidak diperlukan. Cloud Storage otomatis mengenkripsi semua data sebelum ditulis ke disk. Untuk mengetahui informasi selengkapnya, lihat Enkripsi. |
x-amz-grant-* |
x-goog-acl dengan nilai ACL standar. |
x-amz-version-id |
x-goog-generation |
x-amz-mfa |
Gunakan Autentikasi OAuth 2.0. |
x-amz-decoded-content-length |
Tidak didukung sebagai header x-goog |
x-amz-website-redirect-location , x-amz-copy-source-range |
t/a |
Lihat Header HTTP dan parameter string kueri untuk XML API untuk referensi ke header Cloud Storage.
Langkah berikutnya
- Merencanakan migrasi dari Amazon S3.
- Mentransfer data Anda ke Cloud Storage dari sumber eksternal, seperti Amazon S3 dan Microsoft Azure Blob Storage, menggunakan Storage Transfer Service.
- Membuat transfer berbasis peristiwa yang menggunakan Notifikasi Peristiwa Amazon S3 untuk menjaga agar bucket Cloud Storage tetap sinkron dengan Amazon S3.