本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Deadline Cloud 如何將檔案上傳至 Amazon S3
此範例顯示 Deadline Cloud 如何將檔案從工作站或工作者主機上傳至 Amazon S3,以便共用這些檔案。它使用來自 GitHub 和截止日期雲端 CLI 的範例任務套件來提交任務。
首先將截止期限雲端範例 GitHub 儲存庫job_attachments_devguide任務套件複製到您的主目錄:
git clone https://github.com/aws-deadline/deadline-cloud-samples.git cp -r deadline-cloud-samples/job_bundles/job_attachments_devguide ~/
安裝截止日期雲端 CLI
pip install deadline --upgrade
job_attachments_devguide 任務套件具有單一步驟,其中包含執行 bash shell 指令碼的任務,其檔案系統位置會以任務參數傳遞。任務參數的定義為:
...
- name: ScriptFile
type: PATH
default: script.sh
dataFlow: IN
objectType: FILE
... dataFlow 屬性IN的值會告知任務附件, ScriptFile 參數的值是任務的輸入。default 屬性的值是任務套件目錄的相對位置,但也可以是絕對路徑。此參數定義會將任務套件目錄中script.sh的檔案宣告為執行任務所需的輸入檔案。
接下來,請確定截止日期雲端 CLI 未設定儲存設定檔,然後將任務提交至佇列 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-00112233445566778899aabbccddeeffdeadline config set settings.storage_profile_id '' deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/
在此命令執行後,來自截止日期雲端 CLI 的輸出如下所示:
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
當您提交任務時,截止日期雲端會先雜湊script.sh檔案,然後將其上傳至 Amazon S3。
Deadline Cloud 會將 S3 儲存貯體視為內容可定址儲存體。檔案會上傳至 S3 物件。物件名稱衍生自檔案內容的雜湊。如果兩個檔案具有相同的內容,則無論檔案位於何處或名稱為何,它們都具有相同的雜湊值。此內容可定址儲存可讓 Deadline Cloud 在檔案已可用時避免上傳檔案。
您可以使用 AWS CLI 來查看上傳至 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
兩個物件已上傳至 S3:
-
DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128– 的內容script.sh。物件金鑰87cb19095dd5d78fcaf56384ef0e6241中的值是檔案內容的雜湊,副檔xxh128名表示雜湊值計算為 128 位元 xxhash。 -
DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input– 任務提交的資訊清單物件。值<farm-id>、<queue-id>和<guid>是您的陣列識別符、佇列識別符和隨機十六進位值。a1d221c7fd97b08175b3872a37428e8c此範例中的值是從字串 計算的雜湊值/home/cloudshell-user/job_attachments_devguide,即script.sh所在的目錄。
資訊清單物件包含作為任務提交的一部分上傳至 S3 之特定根路徑上的輸入檔案資訊。下載此資訊清單檔案 (aws s3 cp s3://$Q1_S3_BUCKET/<objectname>)。其內容類似:
{ "hashAlg": "xxh128", "manifestVersion": "2023-03-03", "paths": [ { "hash": "87cb19095dd5d78fcaf56384ef0e6241", "mtime": 1721147454416085, "path": "script.sh", "size": 39 } ], "totalSize": 39 }
這表示檔案script.sh已上傳,且該檔案內容的雜湊為 87cb19095dd5d78fcaf56384ef0e6241。此雜湊值符合物件名稱 中的值DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128。Deadline Cloud 會使用它來知道要為此檔案的內容下載哪個物件。
此檔案的完整結構描述可在 GitHub 中取得
當您使用 CreateJob 操作時,您可以設定資訊清單物件的位置。您可以使用 GetJob 操作來查看位置:
{ "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" } ] }, ... }