Anda dapat menyiapkan akses ke bucket Amazon S3 menggunakan salah satu dari dua metode berikut:
Region yang didukung
Storage Transfer Service dapat mentransfer data dari region Amazon S3 berikut:af-south-1
, ap-east-1
, ap-northeast-1
,
ap-northeast-2
, ap-northeast-3
, ap-south-1
,
ap-south-2
, ap-southeast-1
, ap-southeast-2
,
ap-southeast-3
, ca-central-1
, eu-central-1
,
eu-central-2
, eu-north-1
, eu-south-1
,
eu-south-2
, eu-west-1
, eu-west-2
, {1/9/}, ap-northeast-1
, ap-northeast-1
, ap-northeast-1
, eu-west-2
, eu-west-3
,
me-central-1
me-south-1
sa-east-1
us-east-1
us-east-2
us-west-1
us-west-2
Izin yang diperlukan
Agar dapat menggunakan Storage Transfer Service untuk memindahkan data dari bucket Amazon S3, akun pengguna atau peran identitas gabungan Anda harus memiliki izin yang sesuai untuk bucket:
Izin | Deskripsi | Gunakan |
---|---|---|
s3:ListBucket |
Mengizinkan Storage Transfer Service untuk mencantumkan objek dalam bucket. | Selalu diperlukan. |
s3:GetObject |
Mengizinkan Storage Transfer Service membaca objek dalam bucket. | Wajib jika Anda mentransfer semua objek versi saat ini. Jika manifes Anda menentukan versi objek, gunakan s3:GetObjectVersion sebagai gantinya. |
s3:GetObjectVersion |
Mengizinkan Storage Transfer Service membaca versi objek tertentu dalam bucket. | Wajib jika manifes Anda menentukan versi objek. Jika tidak, gunakan s3:GetObject . |
s3:DeleteObject |
Mengizinkan Storage Transfer Service menghapus objek dalam bucket. | Wajib ada jika Anda menetapkan deleteObjectsFromSourceAfterTransfer ke true . |
Mengautentikasi menggunakan kredensial akses
Agar dapat menggunakan ID kunci akses dan kunci rahasia guna melakukan autentikasi ke AWS:
Buat pengguna AWS Identity and Access Management (AWS IAM) dengan nama yang dapat Anda kenali dengan mudah, seperti
transfer-user
.Untuk jenis akses AWS, pilih Access key - terprogram access.
Berikan salah satu peran berikut kepada pengguna:
- AmazonS3ReadOnlyAccess untuk memberikan akses hanya baca ke sumber. Hal ini memungkinkan transfer, tetapi tidak mendukung penghapusan objek di sumber setelah transfer selesai.
- AmazonS3FullAccess jika transfer Anda dikonfigurasi untuk menghapus objek di sumber.
Peran khusus dengan izin yang sesuai dari tabel Izin yang diperlukan di atas. JSON untuk izin minimum terlihat seperti contoh di bawah ini:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Catat ID kunci akses dan kunci akses rahasia jika pengguna berhasil dibuat.
Cara Anda meneruskan ID kunci akses dan kunci akses rahasia ke Storage Transfer Service bergantung pada antarmuka yang Anda gunakan untuk memulai transfer.
Cloud Console
Masukkan nilai secara langsung ke formulir pembuatan tugas transfer.
Lihat Membuat transfer untuk memulai.
gcloud CLI
Buat file JSON dengan format berikut:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Teruskan lokasi file ke perintah gcloud transfer jobs create
menggunakan flag source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
REST API
Objek transferSpec
Anda harus berisi info kunci sebagai bagian dari
objek awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Library klien
Lihat contohnya di halaman Membuat transfer.
Menyimpan kredensial akses Anda di Secret Manager
Secret Manager adalah layanan aman yang menyimpan dan mengelola data sensitif seperti sandi. Cloud Armor menggunakan enkripsi yang kuat, kontrol akses berbasis peran, dan logging audit untuk melindungi secret Anda.
Storage Transfer Service dapat memanfaatkan Secret Manager untuk melindungi kredensial akses AWS Anda. Anda memuat kredensial ke Secret Manager, lalu meneruskan nama resource rahasia ke Storage Transfer Service.
Mengaktifkan API
Aktifkan API Secret Manager.
Mengonfigurasi izin tambahan
Izin pengguna
Pengguna yang membuat rahasia memerlukan peran berikut:
- Secret Manager Admin (
roles/secretmanager.admin
)
Pelajari cara memberikan peran.
Izin agen layanan
Agen layanan Storage Transfer Service memerlukan peran IAM berikut:
- Aksesor Rahasia Secret Manager (
roles/secretmanager.secretAccessor
)
Untuk memberikan peran kepada agen layanan Anda:
Cloud Console
Ikuti petunjuk untuk mengambil email agen layanan.
Buka halaman IAM di Konsol Google Cloud.
Klik Berikan akses.
Di kotak teks New principals, masukkan email agen layanan.
Di menu drop-down Select a role, telusuri dan pilih Secret Manager Secret Accessor.
Klik Simpan.
gcloud
Gunakan perintah gcloud projects add-iam-policy-binding
untuk menambahkan peran IAM ke agen layanan Anda.
Ikuti petunjuk untuk mengambil email agen layanan.
Dari command line, masukkan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Membuat secret
Buat secret dengan Secret Manager:
Cloud Console
Buka halaman Secret Manager di konsol Google Cloud.
Klik Create secret.
Masukkan nama.
Di kotak teks Secret value, masukkan kredensial Anda dalam format berikut:
{ "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" }
Klik Create secret.
Setelah secret dibuat, catat nama resource lengkap rahasia:
Pilih tab Ringkasan.
Salin nilai Resource ID. Kode ini menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
gcloud
Untuk membuat secret baru menggunakan alat command line gcloud, teruskan kredensial berformat JSON ke perintah gcloud secrets create
:
printf '{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Ambil nama resource lengkap secret:
gcloud secrets describe SECRET_NAME
Perhatikan nilai name
dalam respons. Kode ini menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
Untuk mengetahui detail selengkapnya tentang cara membuat dan mengelola secret, lihat dokumentasi Secret Manager.
Teruskan rahasia Anda ke perintah pembuatan tugas
Penggunaan Secret Manager dengan Storage Transfer Service memerlukan penggunaan REST API untuk membuat tugas transfer.
Teruskan nama resource Secret Manager sebagai nilai kolom transferSpec.awsS3DataSource.credentialsSecret
:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_BUCKET_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Mengautentikasi menggunakan identitas gabungan
Untuk menggunakan identitas gabungan guna melakukan autentikasi ke AWS:
Membuat peran IAM baru di AWS.
Pilih Kebijakan kepercayaan kustom sebagai jenis entitas tepercaya.
Salin dan tempel kebijakan kepercayaan berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Ganti SUBJECT_ID dengan
subjectID
akun layanan yang dikelola Google yang dibuat secara otomatis saat Anda mulai menggunakan Storage Transfer Service. Untuk mengambilsubjectID
:Buka halaman referensi
googleServiceAccounts.get
.Panel interaktif akan terbuka, berjudul Coba metode ini.
Di panel, di bagian Parameter permintaan, masukkan project ID Anda. Project yang Anda tentukan di sini harus merupakan project yang digunakan untuk mengelola Storage Transfer Service.
Klik Jalankan.
subjectId
disertakan dalam respons.
Berikan salah satu kebijakan izin berikut ke peran tersebut:
- AmazonS3ReadOnlyAccess menyediakan akses hanya baca ke sumber. Hal ini memungkinkan transfer, tetapi tidak mendukung penghapusan objek di sumber setelah transfer selesai.
- AmazonS3FullAccess jika transfer Anda dikonfigurasi untuk menghapus objek di sumber.
Peran khusus dengan izin yang sesuai dari tabel Izin yang diperlukan di atas. JSON untuk izin minimum terlihat seperti contoh di bawah ini:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Tetapkan nama pada peran dan buat peran tersebut.
Setelah dibuat, lihat detail peran untuk mengambil Amazon Resource Name (ARN). Catat nilai ini; nilai ini memiliki format
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Cara meneruskan ARN ke Storage Transfer Service bergantung pada antarmuka yang Anda gunakan untuk memulai transfer.
Cloud Console
Masukkan ARN secara langsung ke formulir pembuatan tugas transfer.
Lihat Membuat transfer untuk memulai.
gcloud CLI
Buat file JSON dengan format berikut:
{
"roleArn": "ARN"
}
Teruskan lokasi file ke perintah gcloud transfer jobs create
menggunakan flag source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
REST API
Objek transferSpec
Anda harus berisi info ARN sebagai bagian dari
objek awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Library klien
Lihat contohnya di halaman Membuat transfer.
Pembatasan IP
Jika project AWS Anda menggunakan pembatasan IP untuk akses ke penyimpanan, Anda harus menambahkan rentang IP yang digunakan oleh pekerja Storage Transfer Service ke daftar IP yang diizinkan.
Karena rentang IP ini dapat berubah, kami memublikasikan nilai saat ini sebagai file JSON di alamat permanen:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Saat rentang baru ditambahkan ke file, kita akan menunggu setidaknya 7 hari sebelum menggunakan rentang tersebut untuk permintaan dari Storage Transfer Service.
Sebaiknya ambil data dari dokumen ini minimal setiap minggu agar konfigurasi keamanan Anda selalu yang terbaru. Untuk mengetahui contoh skrip Python yang mengambil rentang IP dari file JSON, lihat artikel ini dari dokumentasi Virtual Private Cloud.
Untuk menambahkan rentang ini sebagai IP yang diizinkan, gunakan kolom Condition
dalam kebijakan bucket, seperti yang dijelaskan dalam dokumentasi AWS S3:
Mengelola akses berdasarkan alamat IP tertentu.