Memecahkan masalah replikasi - Amazon Simple Storage Service

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

Memecahkan masalah replikasi

Bagian ini mencantumkan tips pemecahan masalah untuk Replikasi Amazon S3 dan informasi tentang kesalahan Replikasi Batch S3.

Kiat pemecahan masalah untuk Replikasi S3

Jika replika objek tidak muncul di bucket tujuan setelah Anda mengonfigurasi replikasi, gunakan kiat pemecahan masalah ini untuk mengidentifikasi dan memperbaiki masalah.

  • Mayoritas objek bereplikasi dalam 15 menit. Waktu yang dibutuhkan Amazon S3 untuk mereplikasi suatu objek tergantung pada beberapa faktor, termasuk pasangan Wilayah sumber dan tujuan, serta ukuran objek. Untuk objek besar, replikasi dapat memakan waktu hingga beberapa jam. Untuk visibilitas waktu replikasi, Anda dapat menggunakan Kontrol Waktu Replikasi S3 (S3 RTC).

    Jika objek yang direplikasi berukuran besar, tunggu beberapa saat sebelum memeriksa apakah objek tersebut muncul di tempat tujuan. Anda juga dapat memeriksa status replikasi objek sumber. Jika status replikasi objek adalah PENDING, Amazon S3 belum menyelesaikan replikasi. Jika status replikasi objek adalah FAILED, periksa konfigurasi replikasi yang ditetapkan pada bucket sumber. Selain itu, untuk menerima informasi tentang kegagalan selama replikasi, Anda dapat mengatur replikasi Notifikasi Peristiwa Amazon S3 agar menerima peristiwa kegagalan. Untuk informasi lebih lanjut, lihat Menerima peristiwa kegagalan replikasi dengan Notifikasi Peristiwa Amazon S3.

  • Anda dapat memanggil operasi HeadObject API untuk memeriksa status replikasi suatu objek. Operasi HeadObject API mengembalikan PENDING,COMPLETED, atau status FAILED replikasi objek. Sebagai respons terhadap panggilan API HeadObject, status replikasi dikembalikan dalam elemen x-amz-replication-status.

    catatan

    Untuk menjalankan HeadObject, Anda harus memiliki akses baca ke objek yang Anda minta. Permintaan HEAD memiliki opsi yang sama dengan permintaan GET, tanpa melakukan operasi GET. Misalnya, untuk menjalankan permintaan HeadObject dengan menggunakan AWS Command Line Interface (AWS CLI), Anda dapat menjalankan perintah berikut. Ganti user input placeholders dengan informasi Anda sendiri.

    aws s3api head-object --bucket my-bucket --key index.html
  • Setelah HeadObject mengembalikan objek dengan status replikasi FAILED, Anda dapat menggunakan Replikasi Batch S3 untuk mereplikasi objek yang gagal tersebut. Atau, Anda dapat mengunggah ulang objek yang gagal ke bucket sumber, yang akan memulai replikasi untuk objek baru.

  • Dalam konfigurasi replikasi pada bucket sumber, verifikasi hal berikut:

    • Amazon Resource Name (ARN) dari bucket tujuan sudah benar.

    • Prefiks nama kunci sudah benar. Misalnya, jika Anda mengatur konfigurasi agar mereplikasi objek dengan awalan Tax, hanya objek dengan nama kunci seperti Tax/document1 atau Tax/document2 yang direplikasi. Objek dengan nama kunci document3 tidak direplikasi.

    • Status dari aturan replikasi adalah Enabled.

  • Verifikasi bahwa versioning belum ditangguhkan pada bucket mana pun dalam konfigurasi replikasi. Bucket sumber dan tujuan harus memiliki versioning yang diaktifkan.

  • Jika aturan replikasi disetel ke Ubah kepemilikan objek ke pemilik bucket tujuan, maka peran AWS Identity and Access Management (IAM) yang digunakan untuk replikasi harus memiliki izin s3:ObjectOwnerOverrideToBucketOwner. Izin ini diberikan pada sumber daya (dalam hal ini, bucket tujuan). Misalnya, pernyataan Resource berikut menunjukkan cara memberikan izin ini di bucket tujuan:

    { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::DestinationBucket/*" }
  • Jika bucket tujuan dimiliki oleh akun lain, pemilik bucket tujuan juga harus memberikan izin s3:ObjectOwnerOverrideToBucketOwner kepada pemilik bucket sumber melalui kebijakan bucket tujuan. Untuk menggunakan kebijakan bucket contoh berikut, ganti user input placeholders dengan informasi Anda sendiri:

    { "Version": "2012-10-17", "Id": "Policy1644945280205", "Statement": [ { "Sid": "Stmt1644945277847", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-replication-role" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateTags", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::DestinationBucket/*" } ] }
    catatan

    Jika setelan kepemilikan objek bucket tujuan menyertakan Diberlakukan oleh pemilik bucket, maka Anda tidak perlu memperbarui setelan ke Ubah kepemilikan objek ke pemilik bucket tujuan dalam aturan replikasi. Perubahan kepemilikan objek akan terjadi secara default. Untuk informasi selengkapnya tentang mengubah kepemilikan replika, lihat Mengubah pemilik replika.

  • Jika Anda menyetel konfigurasi replikasi dalam skenario lintas akun, di mana bucket sumber dan tujuan dimiliki oleh yang berbedaAkun AWS, bucket tujuan tidak dapat dikonfigurasi sebagai bucket Requester Pays. Untuk informasi selengkapnya, lihat Menggunakan bucket Pembayaran Pemohon untuk transfer dan penggunaan penyimpanan.

  • Jika objek sumber bucket dienkripsi dengan kunci AWS Key Management Service (AWS KMS), maka aturan replikasi harus dikonfigurasi untuk menyertakan objek yang dienkripsi AWS KMS. Pastikan untuk memilih Replikasi objek yang dienkripsi AWS KMS di bawah pengaturan Enkripsi Anda di konsol Amazon S3. Kemudian, pilih kunci AWS KMS untuk mengenkripsi objek tujuan.

    catatan

    Jika bucket tujuan berada di akun yang berbeda, tentukan kunci yang dikelola pelanggan AWS KMS yang dimiliki oleh akun tujuan. Jangan gunakan kunci terkelola Amazon S3 default (aws/s3). Menggunakan kunci default akan mengenkripsi objek dengan kunci terkelola Amazon S3 yang dimiliki oleh akun sumber, sehingga mencegah objek dibagikan dengan akun lain. Akibatnya, akun tujuan tidak akan dapat mengakses objek di bucket tujuan.

    Untuk menggunakan kunci AWS KMS milik akun tujuan untuk mengenkripsi objek tujuan, akun tujuan harus memberikan izin kms:GenerateDataKey dan kms:Encrypt untuk peran replikasi dalam kebijakan kunci KMS. Untuk menggunakan contoh pernyataan berikut ini dalam kebijakan kunci KMS Anda, ganti user input placeholders dengan informasi Anda sendiri:

    { "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-replication-role" }, "Action": ["kms:GenerateDataKey", "kms:Encrypt"], "Resource": "*" }

    Jika Anda menggunakan tanda bintang (*) untuk pernyataan Resource dalam kebijakan kunci AWS KMS, kebijakan akan memberikan izin untuk menggunakan kunci KMS hanya pada peran replikasi. Kebijakan ini tidak mengizinkan peran replikasi untuk meningkatkan izinnya.

    Secara default, kebijakan kunci KMS memberikan izin penuh kepada pengguna root ke kunci tersebut. Izin ini dapat didelegasikan ke pengguna lain di akun yang sama. Kecuali terdapat pernyataan Deny dalam kebijakan kunci KMS sumber, menggunakan kebijakan IAM untuk memberikan izin peran replikasi ke kunci KMS sumber sudah cukup.

    catatan

    Kebijakan kunci KMS yang membatasi akses ke rentang CIDR tertentu, titik akhir VPC, atau titik akses S3 dapat menyebabkan replikasi gagal.

    Jika kunci KMS sumber atau tujuan memberikan izin berdasarkan konteks enkripsi, konfirmasikan bahwa Kunci Bucket Amazon S3 diaktifkan untuk bucket. Jika bucket mengaktifkan Kunci Bucket S3, konteks enkripsi harus berupa sumber daya tingkat bucket, seperti ini:

    "kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::SOURCE_BUCKET_NAME" ] "kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::DESTINATION_BUCKET_NAME" ]

    Selain izin yang diberikan oleh kebijakan kunci KMS, akun sumber harus menambahkan izin minimum berikut ke kebijakan IAM peran replikasi:

    { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "SourceKmsKeyArn" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": [ "DestinationKmsKeyArn" ] }

    Untuk informasi selengkapnya tentang cara mereplikasi objek yang dienkripsi dengan AWS KMS, lihat Mereplikasi objek terenkripsi.

  • Jika bucket tujuan dimiliki oleh Akun AWS lain, verifikasi bahwa pemilik bucket memiliki kebijakan bucket tujuan yang memungkinkan pemilik bucket sumber mereplikasi objek. Sebagai contoh, silakan lihat Mengonfigurasi replikasi ketika bucket sumber dan tujuan dimiliki oleh akun yang berbeda.

  • Jika objek Anda masih tidak bereplikasi setelah Anda memvalidasi izin, periksa pernyataan Deny eksplisit di lokasi berikut:

    • Pernyataan Deny dalam kebijakan bucket sumber atau tujuan. Replikasi gagal jika kebijakan bucket menghalangi akses ke peran replikasi untuk tindakan-tindakan berikut:

      Bucket sumber:

      "s3:GetReplicationConfiguration", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging"

      Bucket tujuan:

      "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags"
    • Pernyataan atau batas izin Deny yang dilampirkan pada peran IAM dapat menyebabkan replikasi gagal.

    • Pernyataan Deny dalam kebijakan kontrol layanan AWS Organizations yang dilampirkan pada akun sumber atau tujuan dapat menyebabkan replikasi gagal.

  • Jika replika objek tidak muncul di bucket tujuan, masalah berikut mungkin dapat mencegah replikasi:

    • Amazon S3 tidak mereplikasi objek dalam bucket sumber yang merupakan replika yang dibuat oleh konfigurasi replikasi lain. Misalnya, jika Anda mengatur konfigurasi replikasi dari bucket A ke bucket B ke bucket C, Amazon S3 tidak mereplikasi replika objek di bucket B ke bucket C.

    • Pemilik bucket sumber dapat memberikan izin Akun AWS lainnya untuk mengunggah objek. Secara default, pemilik bucket sumber tidak memiliki izin untuk objek yang dibuat oleh akun lain. Konfigurasi replikasi hanya mereplikasi objek yang izin aksesnya dimiliki pemilik bucket sumber. Pemilik bucket sumber dapat memberikan izin Akun AWS lainnya untuk membuat objek secara kondisional, yang memerlukan izin akses eksplisit pada objek tersebut. Untuk contoh kebijakan, lihat Berikan izin lintas akun untuk unggah objek sekaligus memastikan bahwa pemilik bucket memiliki kendali penuh.

  • Misalkan bahwa dalam konfigurasi replikasi, Anda menambahkan aturan untuk mereplikasi subset objek yang memiliki tag tertentu. Dalam kasus ini, Anda harus menetapkan kunci dan nilai tag spesifik pada saat objek dibuat agar Amazon S3 mereplikasi objek. Jika Anda membuat objek terlebih dahulu lalu menambahkan tag ke objek yang sudah ada, Amazon S3 tidak akan mereplikasi objek.

  • Gunakan Notifikasi Peristiwa Amazon S3 untuk memberi tahu Anda tentang instans saat objek tidak bereplikasi ke Wilayah AWS tujuannya. Notifikasi peristiwa Amazon S3 tersedia melalui Amazon Simple Queue Service (Amazon SQS), Amazon Simple Notiļ¬cation Service (Amazon SNS), atau AWS Lambda. Untuk informasi selengkapnya, lihat Menerima peristiwa kegagalan replikasi dengan Notifikasi Peristiwa Amazon S3.

    Anda juga dapat melihat alasan kegagalan replikasi dengan menggunakan Notifikasi Peristiwa Amazon S3. Untuk meninjau daftar alasan kegagalan, lihat Alasan kegagalan replikasi Amazon S3.

Kesalahan Replikasi Batch

Untuk memecahkan masalah objek yang tidak bereplikasi ke bucket tujuan, periksa berbagai jenis izin untuk bucket, peran replikasi, dan peran IAM yang digunakan untuk membuat pekerjaan Replikasi Batch. Selain itu, pastikan untuk memeriksa pengaturan akses publik dan pengaturan kepemilikan bucket.

Saat menggunakan Replikasi Batch, Anda mungkin akan menjumpai salah satu kesalahan berikut:

  • Status operasi batch gagal karena alasan: Laporan pekerjaan tidak dapat ditulis ke bucket laporan Anda.

    Kesalahan ini terjadi jika peran IAM yang digunakan untuk pekerjaan Operasi Batch tidak dapat menempatkan laporan penyelesaian ke lokasi yang ditentukan saat Anda membuat pekerjaan. Untuk mengatasi kesalahan ini, periksa apakah peran IAM memiliki izin PutObject untuk bucket tempat Anda ingin menyimpan laporan penyelesaian Operasi Batch. Ini adalah praktik terbaik untuk mengirimkan laporan ke bucket yang berbeda dari bucket sumber.

  • Operasi Batch selesai dengan kegagalan dan Total gagal bukan 0.

    Kesalahan ini terjadi jika terdapat masalah izin objek yang tidak memadai dengan pekerjaan Replikasi Batch yang sedang berjalan. Jika Anda menggunakan aturan replikasi untuk pekerjaan Replikasi Batch, pastikan bahwa peran IAM yang digunakan untuk replikasi memiliki izin yang tepat untuk mengakses objek baik dari bucket sumber atau tujuan. Anda juga dapat memeriksa Laporan penyelesaian Replikasi Batch untuk meninjau alasan kegagalan replikasi Amazon S3 tertentu.

  • Pekerjaan batch berhasil berjalan tetapi jumlah objek yang diharapkan di bucket tujuan tidak sama.

    Kesalahan ini terjadi ketika ada ketidakcocokan antara objek yang tercantum dalam manifes yang disediakan dalam tugas Replikasi Batch dan filter yang Anda pilih saat membuat pekerjaan. Anda mungkin juga menerima pesan ini jika objek di bucket sumber Anda tidak cocok dengan aturan replikasi apa pun dan tidak disertakan dalam manifes yang dihasilkan.