View a markdown version of this page

Cara Deadline Cloud mengunggah file ke Amazon S3 - Awan Batas Waktu

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

Cara Deadline Cloud mengunggah file ke Amazon S3

Contoh ini menunjukkan bagaimana Deadline Cloud mengunggah file dari workstation atau host pekerja Anda ke Amazon S3 sehingga file tersebut dapat dibagikan. Ini menggunakan bundel pekerjaan sampel dari repositori deadline-cloud-sample di GitHub situs web dan Dead line Cloud CLI di situs web PyPI untuk mengirimkan pekerjaan.

Mulailah dengan mengkloning repositori deadline-cloud-sample ke AWS CloudShell lingkungan Anda, lalu salin bundel job_attachments_devguide pekerjaan ke direktori home Anda:

git clone https://github.com/aws-deadline/deadline-cloud-samples.git cp -r deadline-cloud-samples/job_bundles/job_attachments_devguide ~/

Instal Deadline Cloud CLI untuk mengirimkan bundel pekerjaan:

pip install deadline --upgrade

Bundel job_attachments_devguide pekerjaan memiliki satu langkah dengan tugas yang menjalankan skrip shell bash yang lokasi sistem file diteruskan sebagai parameter pekerjaan. Definisi parameter pekerjaan adalah:

... - name: ScriptFile type: PATH default: script.sh dataFlow: IN objectType: FILE ...

Nilai dataFlow properti IN memberi tahu lampiran pekerjaan bahwa nilai ScriptFile parameter adalah input ke pekerjaan. Nilai default properti adalah lokasi relatif ke direktori bundel pekerjaan, tetapi juga bisa menjadi jalur absolut. Definisi parameter ini mendeklarasikan script.sh file dalam direktori bundel pekerjaan sebagai file input yang diperlukan untuk menjalankan pekerjaan.

Selanjutnya, pastikan bahwa Deadline Cloud CLI tidak memiliki profil penyimpanan yang dikonfigurasi lalu kirimkan pekerjaan ke antrean: Q1

# Change the value of FARM_ID to your farm's identifier FARM_ID=farm-00112233445566778899aabbccddeeff # Change the value of QUEUE1_ID to queue Q1's identifier QUEUE1_ID=queue-00112233445566778899aabbccddeeff deadline config set settings.storage_profile_id '' deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/

Output dari Deadline Cloud CLI setelah perintah ini dijalankan terlihat seperti:

Submitting to Queue: Q1 ... Hashing Attachments [####################################] 100% Hashing Summary: Processed 1 file totaling 39.0 B. Skipped re-processing 0 files totaling 0.0 B. Total processing time of 0.0327 seconds at 1.19 KB/s. Uploading Attachments [####################################] 100% Upload Summary: Processed 1 file totaling 39.0 B. Skipped re-processing 0 files totaling 0.0 B. Total processing time of 0.25639 seconds at 152.0 B/s. Waiting for Job to be created... Submitted job bundle: job_attachments_devguide/ Job creation completed successfully job-74148c13342e4514b63c7a7518657005

Saat Anda mengirimkan pekerjaan, Deadline Cloud pertama-tama melakukan hash script.sh file dan kemudian mengunggahnya ke Amazon S3.

Deadline Cloud memperlakukan bucket S3 sebagai penyimpanan yang dapat dialamatkan konten. File diunggah ke objek S3. Nama objek berasal dari hash konten file. Jika dua file memiliki konten yang identik, mereka memiliki nilai hash yang sama terlepas dari di mana file berada atau apa namanya. Penyimpanan yang dapat dialamatkan konten ini memungkinkan Deadline Cloud untuk menghindari mengunggah file jika sudah tersedia.

Anda dapat menggunakan AWS CLI untuk melihat objek yang diunggah ke Amazon S3:

# The name of queue `Q1`'s job attachments S3 bucket Q1_S3_BUCKET=$( aws deadline get-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID \ --query 'jobAttachmentSettings.s3BucketName' | tr -d '"' ) aws s3 ls s3://$Q1_S3_BUCKET --recursive

Dua objek diunggah ke S3:

  • DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128— Isi dariscript.sh. Nilai 87cb19095dd5d78fcaf56384ef0e6241 dalam kunci objek adalah hash dari konten file, dan ekstensi xxh128 menunjukkan bahwa nilai hash dihitung sebagai hash 128 bit menggunakan algoritma xxHash di situs web xxHash.

  • DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input— Objek manifes untuk pengiriman pekerjaan. Nilai<farm-id>,<queue-id>, dan <guid> merupakan pengidentifikasi peternakan Anda, pengidentifikasi antrian, dan nilai heksidecimal acak. Nilai a1d221c7fd97b08175b3872a37428e8c dalam contoh ini adalah nilai hash yang dihitung dari string/home/cloudshell-user/job_attachments_devguide, direktori tempat script.sh berada.

Objek manifes berisi informasi untuk file input pada jalur root tertentu yang diunggah ke S3 sebagai bagian dari pengiriman pekerjaan. Unduh file manifes ini (aws s3 cp s3://$Q1_S3_BUCKET/<objectname>). Isinya mirip dengan:

{ "hashAlg": "xxh128", "manifestVersion": "2023-03-03", "paths": [ { "hash": "87cb19095dd5d78fcaf56384ef0e6241", "mtime": 1721147454416085, "path": "script.sh", "size": 39 } ], "totalSize": 39 }

Ini menunjukkan bahwa file telah script.sh diunggah, dan hash dari konten file itu adalah87cb19095dd5d78fcaf56384ef0e6241. Nilai hash ini cocok dengan nilai dalam nama objekDeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128. Ini digunakan oleh Deadline Cloud untuk mengetahui objek mana yang akan diunduh untuk konten file ini.

Untuk skema lengkap untuk file manifes, lihat repositori deadline-cloud-job-attachment di situs web. GitHub

Ketika Anda menggunakan CreateJob operasi, Anda dapat mengatur lokasi objek manifes. Anda dapat menggunakan GetJob operasi untuk melihat lokasi:

{ "attachments": { "file system": "COPIED", "manifests": [ { "inputManifestHash": "5b0db3d311805ea8de7787b64cbbe8b3", "inputManifestPath": "<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input", "rootPath": "/home/cloudshell-user/job_attachments_devguide", "rootPathFormat": "posix" } ] }, ... }