Salin data dari bucket S3 ke akun dan Wilayah lain dengan menggunakan AWS CLI - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Salin data dari bucket S3 ke akun dan Wilayah lain dengan menggunakan AWS CLI

Appasaheb Bagali dan Purushotham G K, Amazon Web Services

Ringkasan

Pola ini menjelaskan cara memigrasikan data dari bucket Amazon Simple Storage Service (Amazon S3) di akun sumber AWS ke bucket S3 tujuan di akun AWS lain, baik di Wilayah AWS yang sama atau di Wilayah lain.

Bucket sumber S3 memungkinkan akses AWS Identity and Access Management (IAM) dengan menggunakan kebijakan sumber daya terlampir. Pengguna di akun tujuan harus mengambil peran yang memiliki PutObject dan GetObject izin untuk bucket sumber. Terakhir, Anda menjalankan copy dan sync memerintahkan untuk mentransfer data dari bucket S3 sumber ke bucket S3 tujuan.

Akun memiliki objek yang mereka unggah ke bucket S3. Jika Anda menyalin objek di seluruh akun dan Wilayah, Anda memberikan kepemilikan akun tujuan atas objek yang disalin. Anda dapat mengubah kepemilikan objek dengan mengubah daftar kontrol akses (ACL) menjadibucket-owner-full-control. Namun, kami menyarankan Anda memberikan izin lintas akun terprogram ke akun tujuan karena mungkin ACLs sulit dikelola untuk beberapa objek.

Peringatan: Skenario ini mengharuskan pengguna IAM dengan akses terprogram dan kredensil jangka panjang, yang menghadirkan risiko keamanan. Untuk membantu mengurangi risiko ini, kami menyarankan agar Anda memberikan pengguna ini hanya izin yang mereka perlukan untuk melakukan tugas dan menghapus pengguna ini ketika mereka tidak lagi diperlukan. Kunci akses dapat diperbarui jika perlu. Untuk informasi selengkapnya, lihat Memperbarui kunci akses di Panduan Pengguna IAM.

Pola ini mencakup migrasi satu kali. Untuk skenario yang memerlukan migrasi objek baru secara terus menerus dan otomatis dari bucket sumber ke bucket tujuan, Anda dapat menggunakan Replikasi Batch S3 sebagai gantinya, seperti yang dijelaskan dalam pola Salin data dari bucket S3 ke akun dan Wilayah lain menggunakan Replikasi Batch S3.

Prasyarat dan batasan

  • Dua akun AWS aktif di Wilayah AWS yang sama atau berbeda.

  • Bucket S3 yang ada di akun sumber. 

  • Jika bucket Amazon S3 sumber atau tujuan Anda mengaktifkan enkripsi default, Anda harus mengubah izin kunci AWS Key Management Service (AWS KMS). Untuk informasi selengkapnya, lihat artikel AWS re:Post tentang topik ini.

  • Keakraban dengan izin lintas akun.

Arsitektur

Menyalin data Amazon S3 ke akun atau Wilayah lain

Alat

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat pengguna IAM dan dapatkan kunci akses.

  1. Masuk ke AWS Management Console dan buat pengguna IAM yang memiliki akses terprogram. Untuk langkah-langkah rinci, lihat Membuat pengguna IAM dalam dokumentasi IAM. Tidak perlu melampirkan kebijakan apa pun untuk pengguna ini.

  2. Hasilkan kunci akses dan kunci rahasia untuk pengguna ini. Untuk petunjuk, lihat Akun AWS dan Kunci Akses dalam dokumentasi AWS.

AWS DevOps

Buat kebijakan berbasis identitas IAM.

Buat kebijakan berbasis Identitas IAM bernama menggunakan izin S3MigrationPolicy berikut. Untuk langkah-langkah rinci, lihat Membuat kebijakan IAM dalam dokumentasi IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket", "arn:aws:s3:::amazon-s3-demo-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-destination-bucket", "arn:aws:s3:::amazon-s3-demo-destination-bucket/*" ] } ] }
catatan

Ubah nama bucket sumber dan tujuan sesuai dengan kasus penggunaan Anda.

Kebijakan berbasis identitas ini memungkinkan pengguna yang mengambil peran ini untuk mengakses bucket sumber dan bucket tujuan.

AWS DevOps

Buat peran IAM.

Buat peran IAM bernama S3MigrationRole menggunakan kebijakan kepercayaan berikut, lalu lampirkan yang dibuat S3MigrationPolicy sebelumnya. Untuk langkah-langkah mendetail, lihat Membuat peran untuk mendelegasikan izin ke pengguna IAM dalam dokumentasi IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<destination_account>:user/<user_name>" }, "Action": "sts:AssumeRole", "Condition": {} } ] }
catatan

Ubah Nama Sumber Daya Amazon (ARN) peran IAM tujuan atau nama pengguna dalam kebijakan kepercayaan sesuai dengan kasus penggunaan Anda.

Kebijakan kepercayaan ini memungkinkan pengguna IAM yang baru dibuat untuk berasumsiS3MigrationRole.

AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat dan lampirkan kebijakan bucket S3.

Masuk ke AWS Management Console untuk akun sumber Anda dan buka konsol Amazon S3. Pilih bucket S3 sumber Anda dan kemudian pilih Izin. Di bawah Kebijakan Bucket, pilih Edit lalu tempel kebijakan bucket berikut. Pilih Simpan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegateS3Access", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"}, "Action": ["s3:ListBucket", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-source-bucket/*", "arn:aws:s3:::amazon-s3-demo-source-bucket" ] } ] }
catatan

Pastikan Anda menyertakan ID akun AWS untuk akun tujuan dan mengonfigurasi templat kebijakan bucket sesuai dengan kebutuhan Anda.

Kebijakan berbasis sumber daya ini memungkinkan peran S3MigrationRole tujuan mengakses objek S3 di akun sumber.

Administrator awan
TugasDeskripsiKeterampilan yang dibutuhkan

Buat bucket S3 tujuan.

Masuk ke AWS Management Console untuk akun tujuan Anda, buka konsol Amazon S3, lalu pilih Buat bucket. Buat bucket S3 sesuai dengan kebutuhan Anda. Untuk informasi selengkapnya, lihat Membuat bucket di dokumentasi Amazon S3. 

Administrator awan
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan AWS CLI dengan kredenal pengguna yang baru dibuat.

  1. Instal rilis terbaru AWS CLI. Untuk petunjuk, lihat Menginstal atau memperbarui AWS CLI versi terbaru dalam dokumentasi AWS CLI.

  2. Jalankan $ aws configure dan perbarui CLI dengan kunci akses AWS dari pengguna yang Anda buat. Untuk informasi selengkapnya, lihat Konfigurasi dan pengaturan file kredensi dalam dokumentasi AWS CLI.

AWS DevOps

Asumsikan peran migrasi S3.

  1. Gunakan AWS CLI untuk mengasumsikan: S3MigrationRole

    aws sts assume-role \ --role-arn "arn:aws:iam::<destination_account>:role/S3MigrationRole" \ --role-session-name AWSCLI-Session

    Perintah ini mengeluarkan beberapa informasi. Di dalam blok kredensil Anda membutuhkanAccessKeyId,SecretAccessKey, dan. SessionToken Contoh ini menggunakan variabel lingkunganRoleAccessKeyID,RoleSecretKey, danRoleSessionToken. Perhatikan bahwa stempel waktu bidang kedaluwarsa berada di zona waktu UTC. Stempel waktu menunjukkan kapan kredensi sementara peran IAM berakhir. Jika kredensil sementara kedaluwarsa, Anda harus memanggil API lagi. sts:AssumeRole

  2. Buat tiga variabel lingkungan untuk mengasumsikan peran IAM. Variabel lingkungan ini diisi dengan output berikut:

    # Linux export AWS_ACCESS_KEY_ID=RoleAccessKeyID export AWS_SECRET_ACCESS_KEY=RoleSecretKey export AWS_SESSION_TOKEN=RoleSessionToken # Windows set AWS_ACCESS_KEY_ID=RoleAccessKeyID set AWS_SECRET_ACCESS_KEY=RoleSecretKey set AWS_SESSION_TOKEN=RoleSessionToken
  3. Verifikasi bahwa Anda mengambil peran IAM dengan menjalankan perintah berikut:

    aws sts get-caller-identity

Untuk informasi selengkapnya, lihat Pusat Pengetahuan AWS.

Administrator AWS

Salin dan sinkronisasi data dari bucket S3 sumber ke bucket S3 tujuan.

Ketika Anda telah mengambil peran, S3MigrationRole Anda dapat menyalin data menggunakan perintah salin (cp) atau sinkronisasi (sinkronisasi).

Salin (lihat Referensi Perintah AWS CLI untuk detailnya):

aws s3 cp s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

Sinkronisasi (lihat Referensi Perintah AWS CLI untuk detailnya):

aws s3 sync s3://amazon-s3-demo-source-bucket/ \ s3://amazon-s3-demo-destination-bucket/ \ --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
Administrator awan

Pemecahan Masalah

IsuSolusi

Terjadi kesalahan (AccessDenied) saat memanggil ListObjects operasi: Akses Ditolak

  • Pastikan Anda telah mengambil peran tersebutS3MigrationRole.

  • Jalankan aws sts get-caller-identity untuk memeriksa peran yang digunakan. Jika output tidak menampilkan ARN untukS3MigrationRole, ambil peran lagi dan coba lagi.

Sumber daya terkait