

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

# Deadline Cloud がアップロードするファイルを選択する方法
<a name="how-job-attachments-decides-what-to-upload-to-amazon-s3"></a>

 ジョブアタッチメントが Amazon S3 へのアップロードをジョブへの入力と見なすファイルとディレクトリは次のとおりです。
+  `IN` または の値を持つジョブバンドルのジョブテンプレートで定義されたすべての `PATH`タイプのジョブパラメータ`dataFlow`の値`INOUT`。
+  ジョブバンドルのアセットリファレンスファイルの入力としてリストされているファイルとディレクトリ。

 ストレージプロファイルのないジョブを送信すると、アップロードの対象となるすべてのファイルがアップロードされます。ストレージプロファイルを使用してジョブを送信する場合、ファイルは、キューに必要なファイルシステムの場所であるストレージプロファイルの `SHARED`タイプのファイルシステムの場所にある場合、Amazon S3 にアップロードされません。これらの場所は、ジョブを実行するワーカーホストで使用できることが予想されるため、S3 にアップロードする必要はありません。

 この例では、AWS CloudShell 環境で `WSAll`に`SHARED`ファイルシステムの場所を作成し、それらのファイルシステムの場所にファイルを追加します。以下のコマンドを使用します。

```
# Change the value of WSALL_ID to the identifier of the WSAll storage profile
WSALL_ID=sp-{{00112233445566778899aabbccddeeff}}

sudo mkdir -p /shared/common /shared/projects/project1 /shared/projects/project2
sudo chown -R cloudshell-user:cloudshell-user /shared

for d in /shared/common /shared/projects/project1 /shared/projects/project2; do
  echo "File contents for $d" > ${d}/file.txt
done
```

 次に、ジョブの入力として作成したすべてのファイルを含むアセット参照ファイルをジョブバンドルに追加します。以下のコマンドを使用します。

```
cat > ${HOME}/job_attachments_devguide/asset_references.yaml << EOF
assetReferences:
  inputs:
    filenames:
    - /shared/common/file.txt
    directories:
    - /shared/projects/project1
    - /shared/projects/project2
EOF
```

 次に、`WSAll`ストレージプロファイルを使用してジョブを送信するように Deadline Cloud CLI を設定し、ジョブバンドルを送信します。

```
# 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}}
# Change the value of WSALL_ID to the identifier of the WSAll storage profile
WSALL_ID=sp-{{00112233445566778899aabbccddeeff}}

deadline config set settings.storage_profile_id $WSALL_ID

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

Deadline Cloud は、ジョブを送信するときに 2 つのファイルを Amazon S3 にアップロードします。ジョブのマニフェストオブジェクトを S3 からダウンロードして、アップロードされたファイルを表示できます。

```
for manifest in $( \
  aws deadline get-job --farm-id $FARM_ID --queue-id $QUEUE1_ID --job-id $JOB_ID \
    --query 'attachments.manifests[].inputManifestPath' \
    | jq -r '.[]'
); do
  echo "Manifest object: $manifest"
  aws s3 cp --quiet s3://$Q1_S3_BUCKET/DeadlineCloud/Manifests/$manifest /dev/stdout | jq .
done
```

 この例では、次の内容のマニフェストファイルが 1 つあります。

```
{
    "hashAlg": "xxh128",
    "manifestVersion": "2023-03-03",
    "paths": [
        {
            "hash": "87cb19095dd5d78fcaf56384ef0e6241",
            "mtime": 1721147454416085,
            "path": "home/cloudshell-user/job_attachments_devguide/script.sh",
            "size": 39
        },
        {
            "hash": "af5a605a3a4e86ce7be7ac5237b51b79",
            "mtime": 1721163773582362,
            "path": "shared/projects/project2/file.txt",
            "size": 44
        }
    ],
    "totalSize": 83
}
```

 マニフェストの [GetJob オペレーション](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_GetJob.html)を使用して、 `rootPath`が「/」であることを確認します。

```
aws deadline get-job --farm-id $FARM_ID --queue-id $QUEUE1_ID --job-id $JOB_ID --query 'attachments.manifests[*]'
```

 入力ファイルのセットのルートパスは、常にそれらのファイルの最長の共通サブパスです。Windows ジョブが から送信され、異なるドライブにあったために共通のサブパスを持たない入力ファイルがある場合、各ドライブに個別のルートパスが表示されます。マニフェスト内のパスは常にマニフェストのルートパスを基準にしているため、アップロードされた入力ファイルは次のとおりです。
+  `/home/cloudshell-user/job_attachments_devguide/script.sh` – ジョブバンドル内のスクリプトファイル。
+  `/shared/projects/project2/file.txt` – キュー に必要な`SHARED`ファイルシステムの場所のリストに含まれ**ていない**`WSAll`ストレージプロファイル内のファイルシステムの場所にあるファイル`Q1`。

ファイルシステムの場所 `FSCommon` (`/shared/common/file.txt`) と `FS1` (`/shared/projects/project1/file.txt`) のファイルはリストにありません。これは、これらのファイルシステムの場所が`WSAll`ストレージプロファイル`SHARED`にあり、どちらもキュー の必要なファイルシステムの場所のリストにあるためです`Q1`。

[GetStorageProfileForQueue オペレーション](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_GetStorageProfileForQueue.html)を使用して、特定のストレージプロファイルで送信されたジョブ`SHARED`について考慮されたファイルシステムの場所を確認できます。キューのストレージプロファイル`WSAll`をクエリするには、次のコマンド`Q1`を使用します。

```
aws deadline get-storage-profile --farm-id $FARM_ID --storage-profile-id $WSALL_ID

aws deadline get-storage-profile-for-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID --storage-profile-id $WSALL_ID
```