

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

# Bagaimana Deadline Cloud mengunggah file ke Amazon S3
<a name="what-job-attachments-uploads-to-amazon-s3"></a>

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 GitHub dan Deadline Cloud CLI untuk mengirimkan pekerjaan.

 Mulailah dengan mengkloning [ GitHubrepositori sampel Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples) ke [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)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](https://pypi.org/project/deadline/) untuk mengirimkan bundel pekerjaan: 

```
pip install deadline --upgrade
```

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

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

 `IN`Nilai `dataFlow` properti memberi tahu lampiran pekerjaan bahwa nilai `ScriptFile` parameter adalah masukan 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 agar pekerjaan dapat dijalankan. 

 Selanjutnya, pastikan bahwa Deadline Cloud CLI tidak memiliki profil penyimpanan yang dikonfigurasi kemudian kirimkan pekerjaan ke antrian: `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 dari isi file. Jika dua file memiliki konten yang identik, mereka memiliki nilai hash yang sama terlepas dari di mana file tersebut 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 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 dari`script.sh`. [Nilai `87cb19095dd5d78fcaf56384ef0e6241` dalam kunci objek adalah hash dari isi file, dan ekstensi `xxh128` menunjukkan bahwa nilai hash dihitung sebagai 128 bit xxhash.](https://xxhash.com/) 
+  `DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input`— Objek manifes untuk pengajuan pekerjaan. Nilai`<farm-id>`,`<queue-id>`, dan `<guid>` merupakan pengidentifikasi pertanian Anda, pengidentifikasi antrian, dan nilai heksidesimal 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 `script.sh` telah diunggah, dan hash dari konten file itu. `87cb19095dd5d78fcaf56384ef0e6241` Nilai hash ini cocok dengan nilai dalam nama `DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128` objek. Ini digunakan oleh Deadline Cloud untuk mengetahui objek mana yang akan diunduh untuk konten file ini.

 Skema lengkap untuk file ini [tersedia di GitHub](https://github.com/aws-deadline/deadline-cloud/blob/mainline/src/deadline/job_attachments/asset_manifests/v2023_03_03/validate.py). 

Bila Anda menggunakan [CreateJob operasi](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateJob.html), Anda dapat mengatur lokasi objek manifes. Anda dapat menggunakan [GetJoboperasi](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_GetJob.html) 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"
            }
        ]
    },
    ...
}
```