

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Deadline Cloud が Amazon S3 にファイルをアップロードする方法
<a name="what-job-attachments-uploads-to-amazon-s3"></a>

この例では、Deadline Cloud がワークステーションまたはワーカーホストから Amazon S3 にファイルをアップロードして共有できるようにする方法を示します。GitHub と Deadline Cloud CLI のサンプルジョブバンドルを使用してジョブを送信します。

 まず、[Deadline Cloud サンプル GitHub リポジトリ](https://github.com/aws-deadline/deadline-cloud-samples)を[AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)環境にクローンし、`job_attachments_devguide`ジョブバンドルをホームディレクトリにコピーします。

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

 [Deadline Cloud CLI ](https://pypi.org/project/deadline/)をインストールしてジョブバンドルを送信します。

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

 `job_attachments_devguide` ジョブバンドルには、ファイルシステムの場所がジョブパラメータとして渡される bash シェルスクリプトを実行するタスクを含む 1 つのステップがあります。ジョブパラメータの定義は次のとおりです。

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

 `dataFlow` プロパティの`IN`値は、 `ScriptFile`パラメータの値がジョブへの入力であることをジョブアタッチメントに伝えます。`default` プロパティの値は、ジョブバンドルの ディレクトリに対する相対的な場所ですが、絶対パスにすることもできます。このパラメータ定義は、ジョブバンドルの ディレクトリにある `script.sh` ファイルを、ジョブの実行に必要な入力ファイルとして宣言します。

 次に、Deadline Cloud 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-{{00112233445566778899aabbccddeeff}}

deadline config set settings.storage_profile_id ''

deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/
```

 このコマンドの実行後の Deadline Cloud 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
```

ジョブを送信すると、Deadline Cloud はまず`script.sh`ファイルをハッシュし、Amazon S3 にアップロードします。

Deadline Cloud は、S3 バケットをコンテンツアドレス可能なストレージとして扱います。ファイルは S3 オブジェクトにアップロードされます。オブジェクト名は、ファイルの内容のハッシュから派生します。2 つのファイルに同じコンテンツがある場合、ファイルの場所や名前に関係なく、ハッシュ値は同じです。このコンテンツアドレス可能なストレージにより、Deadline Cloud はファイルがすでに利用可能な場合、ファイルのアップロードを回避できます。

 [AWS CLI ](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)を使用して、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
```

 2 つのオブジェクトが S3 にアップロードされました。
+  `DeadlineCloud/Data/87cb19095dd5d78fcaf56384ef0e6241.xxh128` – の内容`script.sh`。オブジェクトキー`87cb19095dd5d78fcaf56384ef0e6241`の値はファイルの内容のハッシュであり、拡張子はハッシュ値が 128 ビット [xx ハッシュ](https://xxhash.com/)として計算された`xxh128`ことを示します。
+  `DeadlineCloud/Manifests/<farm-id>/<queue-id>/Inputs/<guid>/a1d221c7fd97b08175b3872a37428e8c_input` – ジョブ送信のマニフェストオブジェクト。値 `<farm-id>`、`<queue-id>`、 `<guid>`はファーム識別子、キュー識別子、ランダムな 16 進値です。この例`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 で入手できます](https://github.com/aws-deadline/deadline-cloud/blob/mainline/src/deadline/job_attachments/asset_manifests/v2023_03_03/validate.py)。

[CreateJob オペレーション](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateJob.html)を使用すると、マニフェストオブジェクトの場所を設定できます。[GetJob オペレーション](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_GetJob.html)を使用して、場所を確認できます。

```
{
    "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"
            }
        ]
    },
    ...
}
```