View a markdown version of this page

Salin data dari bucket Amazon 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 Amazon 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) sumber di akun ke bucket Amazon S3 tujuan di AWS AWS akun lain, baik di wilayah yang sama maupun di Wilayah yang berbeda. Wilayah AWS

Bucket Amazon S3 sumber 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 Amazon S3 sumber ke bucket Amazon S3 tujuan.

Akun memiliki objek yang mereka unggah ke ember Amazon 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.

Awas

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 dalam dokumentasi IAM.

Prasyarat dan batasan

Prasyarat

  • Dua aktif Akun AWS dalam hal yang sama atau berbeda Wilayah AWS.

  • Bucket Amazon 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 lebih lanjut, lihat artikel AWS re:Post tentang topik ini.

  • Keakraban dengan izin lintas akun.

Batasan

  • 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 Amazon S3.

  • Pola ini menggunakan kredenal sesi (AccessKeyId,SecretAccessKey, danSessionToken) yang bersifat sementara dan tidak persisten. Stempel waktu kedaluwarsa dalam output menunjukkan kapan kredensil ini kedaluwarsa. Peran dikonfigurasi dengan durasi sesi maksimum. Pekerjaan penyalinan akan dibatalkan jika sesi berakhir.

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 Konsol Manajemen AWS dan buat pengguna IAM yang memiliki akses terprogram. Untuk petunjuk terperinci, 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 akses kunci dalam AWS dokumentasi.

AWS DevOps

Buat kebijakan berbasis identitas IAM.

Buat kebijakan berbasis identitas IAM yang diberi nama menggunakan izin S3MigrationPolicy berikut. 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. Untuk petunjuk terperinci, lihat Membuat kebijakan IAM dalam dokumentasi IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:ListObjectsV2", "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:ListObjectsV2", "s3:GetObjectVersion", "s3:GetObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amazon-s3-demo-destination-bucket", "arn:aws:s3:::amazon-s3-demo-destination-bucket/*" ] } ] }
AWS DevOps

Buat peran IAM.

Buat peran IAM bernama S3MigrationRole dengan menggunakan kebijakan kepercayaan berikut. 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. Lampirkan yang dibuat sebelumnyaS3MigrationPolicy. 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": {} } ] }
AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Buat dan lampirkan kebijakan bucket Amazon S3.

  1. Masuk ke akun sumber Anda dan buka konsol Amazon S3. Konsol Manajemen AWS

  2. Pilih bucket Amazon S3 sumber Anda, lalu pilih Izin.

  3. Di Bawah Kebijakan bucket, pilih Edit.

  4. Tempelkan kebijakan bucket berikut. Pastikan Anda menyertakan Akun AWS ID untuk akun tujuan dan mengonfigurasi templat kebijakan bucket sesuai dengan kebutuhan Anda. Kebijakan berbasis sumber daya ini memungkinkan peran tujuan mengakses objek S3MigrationRole Amazon S3 di akun sumber.

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

Administrator awan
TugasDeskripsiKeterampilan yang dibutuhkan

Buat bucket Amazon S3 tujuan.

  1. Masuk ke akun Konsol Manajemen AWS untuk tujuan Anda, dan buka konsol Amazon S3.

  2. Pilih Buat bucket.

  3. Buat bucket Amazon S3 sesuai dengan kebutuhan Anda. Untuk informasi selengkapnya, lihat Membuat bucket di dokumentasi Amazon S3. 

Administrator awan
TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan AWS CLI dengan kredensil pengguna yang baru dibuat.

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

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

AWS DevOps

Asumsikan peran migrasi Amazon S3.

  1. Gunakan AWS CLI untuk mengasumsikanS3MigrationRole:

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

    Perintah ini mengeluarkan beberapa informasi. Di dalam blok kredensil Anda membutuhkanAccessKeyId,SecretAccessKey, dan. SessionToken Contoh ini menggunakan variabel lingkunganRoleAccessKeyID,RoleSecretKey, danRoleSessionToken. : Kredensi sesi (AccessKeyId,SecretAccessKey, danSessionToken) bersifat sementara dan tidak persisten. Stempel waktu kedaluwarsa dalam output menunjukkan kapan kredensil ini kedaluwarsa. Peran dikonfigurasi dengan durasi sesi maksimum. Jika kredensil kedaluwarsa, Anda harus menelepon sts:AssumeRole lagi untuk mendapatkan kredensil sementara yang baru.

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

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

    aws sts get-caller-identity

Untuk informasi selengkapnya, lihat Bagaimana cara menggunakan AWS CLI untuk mengambil peran IAM?

Administrator AWS

Menyalin dan menyinkronkan data dari bucket sumber ke bucket tujuan.

Ketika Anda telah mengambil peran, S3MigrationRole Anda dapat menyalin data menggunakan perintah copy (cp) atau synchronize (sync).

Salin:

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:

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

  1. Pastikan Anda telah mengambil peran tersebutS3MigrationRole.

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

Sumber daya terkait