Mentransfer file atau objek tertentu dengan menggunakan manifes - AWS DataSync

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

Mentransfer file atau objek tertentu dengan menggunakan manifes

Manifes adalah daftar file atau objek yang AWS DataSync ingin Anda transfer. Misalnya, alih-alih harus mentransfer semuanya dalam bucket S3 dengan jutaan objek yang berpotensi, hanya DataSync mentransfer objek yang Anda daftarkan dalam manifes Anda.

Manifes mirip dengan filter tetapi memungkinkan Anda mengidentifikasi dengan tepat file atau objek mana yang akan ditransfer alih-alih data yang cocok dengan pola filter.

Membuat manifes Anda

Manifes adalah file berformat value (CSV) yang dipisahkan koma yang mencantumkan file atau objek di lokasi sumber yang ingin Anda transfer. DataSync Jika sumber Anda adalah bucket S3, Anda juga dapat menyertakan versi objek mana yang akan ditransfer.

Pedoman

Gunakan panduan ini untuk membantu Anda membuat manifes yang berfungsi DataSync.

Do
  • Tentukan jalur lengkap setiap file atau objek yang ingin Anda transfer.

    Anda tidak dapat menentukan hanya direktori atau folder dengan maksud mentransfer semua isinya. Untuk situasi ini, pertimbangkan untuk menggunakan filter include alih-alih manifes.

  • Pastikan bahwa setiap file atau path objek relatif terhadap jalur mount, folder, direktori, atau awalan yang Anda tentukan saat mengonfigurasi lokasi DataSync sumber Anda.

    Misalnya, katakanlah Anda mengonfigurasi lokasi S3 dengan awalan bernama. photos Awalan itu mencakup objek my-picture.png yang ingin Anda transfer. Dalam manifes, Anda hanya perlu menentukan objek (my-picture.png) alih-alih awalan dan objek (photos/my-picture.png).

  • Untuk menentukan versi objek Amazon S3IDs, pisahkan path objek dan ID versi dengan menggunakan koma.

    Contoh berikut menunjukkan entri manifes dengan dua bidang. Bidang pertama mencakup objek bernamapicture1.png. Bidang kedua dipisahkan oleh koma dan menyertakan ID versi111111:

    picture1.png,111111
  • Gunakan tanda kutip dalam situasi berikut:

    • Ketika jalur berisi karakter khusus (koma, tanda kutip, dan akhiran baris):

      "filename,with,commas.txt"

    • Saat jalur mencakup beberapa baris:

      "this
      is
      a
      filename.txt"
    • Ketika sebuah jalur menyertakan tanda kutip:

      filename""with""quotes.txt

      Ini mewakili jalur bernamafilename"with"quotes.txt.

    Aturan kutipan ini juga berlaku untuk bidang ID versi. Secara umum, jika bidang manifes memiliki kutipan, Anda harus menghindarinya dengan kutipan lain.

  • Pisahkan setiap entri file atau objek dengan baris baru.

    Anda dapat memisahkan baris dengan menggunakan Linux (line feed atau carriage return) atau Windows (carriage return diikuti oleh line feed) style line break.

  • Simpan manifes Anda (misalnya, my-manifest.csv ataumy-manifest.txt).

  • Unggah manifes ke bucket S3 yang DataSync dapat diakses.

    Bucket ini tidak harus berada di akun yang sama Wilayah AWS atau di mana Anda menggunakan DataSync.

Don't
  • Tentukan hanya direktori atau folder dengan maksud mentransfer semua isinya.

    Manifes hanya dapat menyertakan jalur lengkap ke file atau objek yang ingin Anda transfer. Jika Anda mengonfigurasi lokasi sumber untuk menggunakan jalur pemasangan, folder, direktori, atau awalan tertentu, Anda tidak perlu menyertakannya dalam manifes Anda.

  • Tentukan jalur file atau objek yang melebihi 4.096 karakter.

  • Tentukan jalur file, jalur objek, atau ID versi objek Amazon S3 yang melebihi 1.024 byte.

  • Tentukan file duplikat atau jalur objek.

  • Sertakan ID versi objek jika lokasi sumber Anda bukan bucket S3.

  • Sertakan lebih dari dua bidang dalam entri manifes.

    Entri hanya dapat menyertakan file atau jalur objek dan (jika ada) ID versi objek Amazon S3.

  • Sertakan karakter yang tidak sesuai dengan UTF -8 encoding.

  • Sertakan spasi yang tidak disengaja di bidang entri Anda di luar tanda kutip.

Contoh manifes

Gunakan contoh ini untuk membantu Anda membuat manifes yang berfungsi DataSync.

Manifestasi dengan jalur file atau objek lengkap

Contoh berikut menunjukkan manifes dengan file lengkap atau jalur objek untuk mentransfer.

photos/picture1.png photos/picture2.png photos/picture3.png
Manifestasi hanya dengan kunci objek

Contoh berikut menunjukkan manifes dengan objek yang akan ditransfer dari lokasi sumber Amazon S3. Karena lokasi dikonfigurasi dengan awalanphotos, hanya kunci objek yang ditentukan.

picture1.png picture2.png picture3.png
Manifestasi dengan jalur objek dan versi IDs

Dua entri pertama dalam contoh manifes berikut menyertakan versi objek Amazon S3 tertentu untuk ditransfer.

photos/picture1.png,111111 photos/picture2.png,121212 photos/picture3.png
Manifestasi dengan UTF -8 karakter

Contoh berikut menunjukkan manifes dengan file yang menyertakan UTF -8 karakter.

documents/résumé1.pdf documents/résumé2.pdf documents/résumé3.pdf

Menyediakan DataSync akses ke manifes Anda

Anda memerlukan peran AWS Identity and Access Management (IAM) yang memberikan DataSync akses ke manifes Anda di bucket S3-nya. Peran ini harus menyertakan izin berikut:

  • s3:GetObject

  • s3:GetObjectVersion

Anda dapat menghasilkan peran ini secara otomatis di DataSync konsol atau membuat peran sendiri.

catatan

Jika manifes Anda berbeda Akun AWS, Anda harus membuat peran ini secara manual.

Saat membuat atau memulai tugas transfer di konsol, DataSync dapat membuat IAM peran untuk Anda dengan s3:GetObjectVersion izin s3:GetObject dan yang Anda perlukan untuk mengakses manifes Anda.

Izin yang diperlukan untuk membuat peran secara otomatis

Untuk membuat peran secara otomatis, pastikan peran yang Anda gunakan untuk mengakses DataSync konsol memiliki izin berikut:

  • iam:CreateRole

  • iam:CreatePolicy

  • iam:AttachRolePolicy

Anda dapat secara manual membuat IAM peran yang DataSync diperlukan untuk mengakses manifes Anda. Instruksi berikut mengasumsikan bahwa Anda berada di tempat yang sama dengan Akun AWS tempat yang Anda gunakan DataSync dan bucket S3 manifes Anda berada.

  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi kiri, di bawah Manajemen akses, pilih Peran, lalu pilih Buat peran.

  3. Pada halaman Pilih entitas tepercaya, untuk jenis entitas Tepercaya, pilih Layanan AWS.

  4. Untuk kasus Penggunaan, pilih DataSyncdi daftar dropdown dan pilih. DataSync Pilih Berikutnya.

  5. Pada halaman Tambahkan izin, pilih Berikutnya. Beri nama peran Anda dan pilih Buat peran.

  6. Pada halaman Peran, cari peran yang baru saja Anda buat dan pilih namanya.

  7. Pada halaman detail peran, pilih tab Izin. Pilih Tambahkan izin lalu Buat kebijakan sebaris.

  8. Pilih JSONtab dan tempelkan contoh kebijakan berikut ke editor kebijakan:

    { "Version": "2012-10-17", "Statement": [{ "Sid": "DataSyncAccessManifest", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::manifest-bucket/my-manifest.csv" }] }
  9. Dalam kebijakan sampel yang baru saja Anda tempelkan, ganti nilai berikut dengan milik Anda sendiri:

    1. Ganti manifest-bucket dengan nama bucket S3 yang menghosting manifes Anda.

    2. Ganti my-manifest.csv dengan nama file manifes Anda.

  10. Pilih Berikutnya. Beri nama kebijakan Anda dan pilih Buat kebijakan.

  11. (Disarankan) Untuk mencegah masalah wakil lintas layanan yang membingungkan, lakukan hal berikut:

    1. Pada halaman detail peran, pilih tab Trust relationship. Pilih Edit kebijakan kepercayaan.

    2. Perbarui kebijakan kepercayaan dengan menggunakan contoh berikut, yang mencakup kunci konteks kondisi aws:SourceAccount global aws:SourceArn dan global:

      { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:aws:datasync:region:account-id:*" } } }] }
      • Ganti setiap instance account-id dengan Akun AWS ID tempat Anda menggunakan DataSync.

      • Ganti region dengan Wilayah AWS tempat yang Anda gunakan DataSync.

    3. Pilih Perbarui kebijakan.

Anda telah membuat IAM peran yang memungkinkan DataSync untuk mengakses manifes Anda. Tentukan peran ini saat membuat atau memulai tugas Anda.

Jika manifes Anda berada di bucket S3 milik yang berbeda Akun AWS, Anda harus membuat IAM peran yang DataSync digunakan secara manual untuk mengakses manifes. Kemudian, di Akun AWS tempat manifes Anda berada, Anda harus menyertakan peran tersebut dalam kebijakan bucket S3.

Menciptakan peran

  1. Buka IAM konsol di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi kiri, di bawah Manajemen akses, pilih Peran, lalu pilih Buat peran.

  3. Pada halaman Pilih entitas tepercaya, untuk jenis entitas Tepercaya, pilih Layanan AWS.

  4. Untuk kasus Penggunaan, pilih DataSyncdi daftar dropdown dan pilih. DataSync Pilih Berikutnya.

  5. Pada halaman Tambahkan izin, pilih Berikutnya. Beri nama peran Anda dan pilih Buat peran.

  6. Pada halaman Peran, cari peran yang baru saja Anda buat dan pilih namanya.

  7. Pada halaman detail peran, pilih tab Izin. Pilih Tambahkan izin lalu Buat kebijakan sebaris.

  8. Pilih JSONtab dan tempelkan contoh kebijakan berikut ke editor kebijakan:

    { "Version": "2012-10-17", "Statement": [{ "Sid": "DataSyncAccessManifest", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::manifest-bucket/my-manifest.csv" }] }
  9. Dalam kebijakan sampel yang baru saja Anda tempelkan, ganti nilai berikut dengan milik Anda sendiri:

    1. Ganti manifest-bucket dengan nama bucket S3 yang menghosting manifes Anda.

    2. Ganti my-manifest.csv dengan nama file manifes Anda.

  10. Pilih Berikutnya. Beri nama kebijakan Anda dan pilih Buat kebijakan.

  11. (Disarankan) Untuk mencegah masalah wakil lintas layanan yang membingungkan, lakukan hal berikut:

    1. Pada halaman detail peran, pilih tab Trust relationship. Pilih Edit kebijakan kepercayaan.

    2. Perbarui kebijakan kepercayaan dengan menggunakan contoh berikut, yang mencakup kunci konteks kondisi aws:SourceAccount global aws:SourceArn dan global:

      { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "datasync.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "StringLike": { "aws:SourceArn": "arn:aws:datasync:region:account-id:*" } } }] }
      • Ganti setiap instance account-id dengan Akun AWS ID tempat Anda menggunakan DataSync.

      • Ganti region dengan Wilayah AWS tempat yang Anda gunakan DataSync.

    3. Pilih Perbarui kebijakan.

Anda membuat IAM peran yang dapat Anda sertakan dalam kebijakan bucket S3 Anda.

Memperbarui kebijakan bucket S3 Anda dengan peran

Setelah membuat IAM peran, Anda harus menambahkannya ke kebijakan bucket S3 di Akun AWS tempat lain tempat manifes Anda berada.

  1. Di dalam AWS Management Console, alihkan ke akun dengan ember S3 manfiest Anda.

  2. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  3. Pada halaman detail bucket, pilih tab Izin.

  4. Di bawah kebijakan Bucket, pilih Edit dan lakukan hal berikut untuk mengubah kebijakan bucket S3 Anda:

    1. Perbarui apa yang ada di editor untuk menyertakan pernyataan kebijakan berikut:

      { "Version": "2008-10-17", "Statement": [ { "Sid": "DataSyncAccessManifestBucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-id:role/datasync-role" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::manifest-bucket" } ] }
    2. Ganti account-id dengan Akun AWS ID untuk akun yang Anda gunakan DataSync .

    3. Ganti datasync-role dengan IAM peran yang baru saja Anda buat yang memungkinkan DataSync untuk mengakses manifes Anda.

    4. Ganti manifest-bucket dengan nama bucket S3 yang menghosting manifes Anda di bucket lainnya Akun AWS.

  5. Pilih Simpan perubahan.

Anda telah membuat IAM peran yang memungkinkan DataSync untuk mengakses manifes Anda di akun lain. Tentukan peran ini saat membuat atau memulai tugas Anda.

Menentukan manifes Anda saat membuat tugas

Anda dapat menentukan manifes yang DataSync ingin Anda gunakan saat membuat tugas.

  1. Buka AWS DataSync konsol di https://console.aws.amazon.com/datasync/.

  2. Di panel navigasi kiri, pilih Tugas, lalu pilih Buat tugas.

  3. Konfigurasikan lokasi sumber dan tujuan tugas Anda.

    Untuk informasi selengkapnya, silakan lihat Di mana saya dapat mentransfer data saya AWS DataSync?

  4. Agar Konten dapat dipindai, pilih File, objek, dan folder tertentu, lalu pilih Menggunakan manifes.

  5. Untuk S3 URI, pilih manifes yang di-host di bucket S3.

    Atau, Anda dapat memasukkan URI (misalnya,s3://bucket/prefix/my-manifest.csv).

  6. Untuk versi Object, pilih versi manifes yang DataSync ingin Anda gunakan.

    Secara default, DataSync menggunakan versi terbaru dari objek.

  7. Untuk peran akses Manifest, lakukan salah satu hal berikut:

    • Pilih Autogenerate DataSync untuk membuat IAM peran secara otomatis dengan izin yang diperlukan untuk mengakses manifes Anda di bucket S3-nya.

    • Pilih IAM peran yang ada yang dapat mengakses manifes Anda.

    Untuk informasi selengkapnya, lihat Menyediakan DataSync akses ke manifes Anda.

  8. Konfigurasikan pengaturan tugas lain yang Anda butuhkan, lalu pilih Berikutnya.

  9. Pilih Buat tugas.

  1. Salin create-task perintah berikut:

    aws datasync create-task \ --source-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-12345678abcdefgh \ --destination-location-arn arn:aws:datasync:us-east-1:123456789012:location/loc-abcdefgh12345678 \ --manifest-config { "Source": { "S3": { "ManifestObjectPath": "s3-object-key-of-manifest", "BucketAccessRoleArn": "bucket-iam-role", "S3BucketArn": "amzn-s3-demo-bucket", "ManifestObjectVersionId": "manifest-version-to-use" } } }
  2. Untuk --source-location-arn parameter, tentukan Amazon Resource Name (ARN) dari lokasi tempat Anda mentransfer data.

  3. Untuk --destination-location-arn parameter, tentukan ARN lokasi tempat Anda mentransfer data.

  4. Untuk --manifest-config parameter, lakukan hal berikut:

    • ManifestObjectPath— Tentukan kunci objek S3 dari manifes Anda.

    • BucketAccessRoleArn— Tentukan IAM peran yang memungkinkan DataSync untuk mengakses manifes Anda di bucket S3-nya.

      Untuk informasi selengkapnya, lihat Menyediakan DataSync akses ke manifes Anda.

    • S3BucketArn— Tentukan ARN bucket S3 yang menghosting manifes Anda.

    • ManifestObjectVersionId— Tentukan versi manifes yang DataSync ingin Anda gunakan.

      Secara default, DataSync menggunakan versi terbaru dari objek.

  5. Jalankan create-task perintah untuk membuat tugas Anda.

Ketika Anda siap, Anda dapat memulai tugas transfer Anda.

Menentukan manifes Anda saat memulai tugas

Anda dapat menentukan manifes yang DataSync ingin Anda gunakan saat menjalankan tugas.

  1. Buka AWS DataSync konsol di https://console.aws.amazon.com/datasync/.

  2. Di panel navigasi kiri, pilih Tugas, lalu pilih tugas yang ingin Anda mulai.

  3. Di halaman ikhtisar tugas, pilih Mulai, lalu pilih Mulai dengan opsi utama.

  4. Agar Konten dapat dipindai, pilih File, objek, dan folder tertentu, lalu pilih Menggunakan manifes.

  5. Untuk S3 URI, pilih manifes yang di-host di bucket S3.

    Atau, Anda dapat memasukkan URI (misalnya,s3://bucket/prefix/my-manifest.csv).

  6. Untuk versi Object, pilih versi manifes yang DataSync ingin Anda gunakan.

    Secara default, DataSync menggunakan versi terbaru dari objek.

  7. Untuk peran akses Manifest, lakukan salah satu hal berikut:

    • Pilih Autogenerate DataSync untuk membuat IAM peran secara otomatis untuk mengakses manifes Anda di bucket S3-nya.

    • Pilih IAM peran yang ada yang dapat mengakses manifes Anda.

    Untuk informasi selengkapnya, lihat Menyediakan DataSync akses ke manifes Anda.

  8. Pilih Mulai untuk memulai transfer Anda.

  1. Salin start-task-execution perintah berikut:

    aws datasync start-task-execution \ --task-arn arn:aws:datasync:us-east-1:123456789012:task/task-12345678abcdefgh \ --manifest-config { "Source": { "S3": { "ManifestObjectPath": "s3-object-key-of-manifest", "BucketAccessRoleArn": "bucket-iam-role", "S3BucketArn": "amzn-s3-demo-bucket", "ManifestObjectVersionId": "manifest-version-to-use" } } }
  2. Untuk --task-arn parameter, tentukan Amazon Resource Name (ARN) dari tugas yang Anda mulai.

  3. Untuk --manifest-config parameter, lakukan hal berikut:

    • ManifestObjectPath— Tentukan kunci objek S3 dari manifes Anda.

    • BucketAccessRoleArn— Tentukan IAM peran yang memungkinkan DataSync untuk mengakses manifes Anda di bucket S3-nya.

      Untuk informasi selengkapnya, lihat Menyediakan DataSync akses ke manifes Anda.

    • S3BucketArn— Tentukan ARN bucket S3 yang menghosting manifes Anda.

    • ManifestObjectVersionId— Tentukan versi manifes yang DataSync ingin Anda gunakan.

      Secara default, DataSync menggunakan versi terbaru dari objek.

  4. Jalankan start-task-execution perintah untuk memulai transfer Anda.

Batasan

  • Anda tidak dapat menggunakan manifes bersama dengan filter.

  • Anda tidak dapat menentukan hanya direktori atau folder dengan maksud mentransfer semua isinya. Untuk situasi ini, pertimbangkan untuk menggunakan filter include alih-alih manifes.

  • Anda tidak dapat menggunakan opsi tugas Simpan file yang dihapus (PreserveDeletedFilesdalam API) untuk memelihara file atau objek di tujuan yang tidak ada di sumbernya. DataSync hanya mentransfer apa yang tercantum dalam manifes Anda dan tidak menghapus apa pun di tujuan.

Pemecahan Masalah

Jika Anda mentransfer objek dengan versi tertentu IDs dari bucket S3, Anda mungkin melihat kesalahan terkait HeadObject dengan atau. GetObjectTagging Misalnya, berikut adalah kesalahan yang terkait denganGetObjectTagging:

[WARN] Failed to read metadata for file /picture1.png (versionId: 111111): S3 Get Object Tagging Failed [ERROR] S3 Exception: op=GetObjectTagging photos/picture1.png, code=403, type=15, exception=AccessDenied, msg=Access Denied req-hdrs: content-type=application/xml, x-amz-api-version=2006-03-01 rsp-hdrs: content-type=application/xml, date=Wed, 07 Feb 2024 20:16:14 GMT, server=AmazonS3, transfer-encoding=chunked, x-amz-id-2=IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km, x-amz-request-id=79104EXAMPLEB723

Jika Anda melihat salah satu kesalahan ini, validasi bahwa IAM peran yang DataSync digunakan untuk mengakses lokasi sumber S3 Anda memiliki izin berikut:

  • s3:GetObjectVersion

  • s3:GetObjectVersionTagging

Jika Anda perlu memperbarui peran Anda dengan izin ini, lihatMembuat IAM peran DataSync untuk mengakses lokasi Amazon S3 Anda.

Langkah selanjutnya

Jika Anda belum melakukannya, mulailah tugas Anda. Jika tidak, pantau aktivitas tugas Anda.