

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

# ジョブでのファイルの使用
<a name="using-files-in-your-jobs"></a>

 AWS Deadline Cloud に送信するジョブの多くは、入力ファイルと出力ファイルがあります。入力ファイルと出力ディレクトリは、共有ファイルシステムとローカルドライブの組み合わせにある場合があります。ジョブは、それらの場所にあるコンテンツを見つける必要があります。Deadline Cloud には、[ジョブのアタッチメント](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-job-attachments.html)と[ストレージプロファイル](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-shared.html)の 2 つの機能があり、ジョブが連携して必要なファイルを見つけるのに役立ちます。

ジョブアタッチメントにはいくつかの利点があります
+ Amazon S3 を使用してホスト間でファイルを移動する
+ ワークステーションからワーカーホストにファイルを転送する、またはその逆
+ この機能を有効にするキュー内のジョブで使用可能
+ 主にサービスマネージドフリートで使用されますが、カスタマーマネージドフリートとも互換性があります。

 ストレージプロファイルを使用して、ワークステーションとワーカーホスト上の共有ファイルシステムの場所のレイアウトをマッピングします。このマッピングは、 ベースのワークステーションと Windowsベースのワーカーホストを使用したクロスプラットフォーム設定など、ワークステーションとワーカーホストで場所が異なる場合に、ジョブが共有ファイルやディレクトリを見つけるのに役立ちますLinux。ファイルシステム設定のストレージプロファイルのマップは、Amazon S3 を介してホスト間で転送する必要があるファイルを識別するために、ジョブアタッチメントによっても使用されます。

 ジョブアタッチメントを使用しておらず、ワークステーションとワーカーホスト間でファイルとディレクトリの場所を再マッピングする必要がない場合は、ストレージプロファイルを使用してファイル共有をモデル化する必要はありません。

**Topics**
+ [サンプルプロジェクトインフラストラクチャ](sample-project-infrastructure.md)
+ [ストレージプロファイルとパスマッピング](storage-profiles-and-path-mapping.md)

# サンプルプロジェクトインフラストラクチャ
<a name="sample-project-infrastructure"></a>

ジョブアタッチメントとストレージプロファイルの使用をデモンストレーションするには、2 つの異なるプロジェクトでテスト環境を設定します。Deadline Cloud コンソールを使用して、テストリソースを作成できます。

1. まだ作成していない場合は、テストファームを作成します。ファームを作成するには、[「ファームの作成](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/farms.html)」の手順に従います。

1. 2 つのプロジェクトのそれぞれで、ジョブ用に 2 つのキューを作成します。キューを作成するには、[「キューの作成](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue.html)」の手順に従います。

   1. という名前の最初のキューを作成します**Q1**。次の設定を使用して、他のすべての項目にデフォルトを使用します。
      + ジョブアタッチメントで、**新しい Amazon S3 バケットを作成する**を選択します。
      + **カスタマーマネージドフリートとの関連付けを有効にする**を選択します。
      + ユーザーとして実行する場合は、POSIX ユーザーとグループ**jobuser**の両方に を入力します。
      + キューサービスロールに、 という名前の新しいロールを作成します。 **AssetDemoFarm-Q1-Role**
      + デフォルトの conda キュー環境チェックボックスをオフにします。

   1. という名前の 2 番目のキューを作成します**Q2**。次の設定を使用して、他のすべての項目にデフォルトを使用します。
      + ジョブアタッチメントで、**新しい Amazon S3 バケットを作成する**を選択します。
      + **カスタマーマネージドフリートとの関連付けを有効にする**を選択します。
      + ユーザーとして実行する場合は、POSIX ユーザーとグループ**jobuser**の両方に を入力します。
      + キューサービスロールに、 という名前の新しいロールを作成します。 **AssetDemoFarm-Q2-Role**
      + デフォルトの conda キュー環境チェックボックスをオフにします。

1. 両方のキューからジョブを実行する単一のカスタマーマネージドフリートを作成します。フリートを作成するには、[「カスタマーマネージドフリートを作成する](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-a-cmf.html)」の手順に従います。次の設定を使用します。
   + **名前**には、 を使用します**DemoFleet**。
   + **フリートタイプ** **カスタマーマネージド** を選択する
   + **フリートサービスロール**には、**AssetDemoFarm-Fleet-Role** という名前の新しいロールを作成します。
   + フリートをキューに関連付けないでください。

テスト環境では、ネットワークファイル共有を使用してホスト間で共有されているファイルシステムが 3 つあることを前提としています。この例では、ロケーションの名前は次のとおりです。
+ `FSCommon` - 両方のプロジェクトに共通の入力ジョブアセットが含まれます。
+ `FS1` - プロジェクト 1 の入力ジョブアセットと出力ジョブアセットが含まれます。
+ `FS2` - プロジェクト 2 の入力ジョブアセットと出力ジョブアセットが含まれます。

テスト環境では、次のように 3 つのワークステーションがあることも前提としています。
+ `WSAll` - 開発者がすべてのプロジェクトで使用する Linuxベースのワークステーション。共有ファイルシステムの場所は次のとおりです。
  + `FSCommon`: `/shared/common`
  + `FS1`: `/shared/projects/project1`
  + `FS2`: `/shared/projects/project2`
+ `WS1` - プロジェクト 1 に使用される Windowsベースのワークステーション。共有ファイルシステムの場所は次のとおりです。
  + `FSCommon`: `S:\`
  + `FS1`: `Z:\`
  + `FS2`: 利用できません
+ `WS1` - プロジェクト 2 に使用される macOSベースのワークステーション。共有ファイルシステムの場所は次のとおりです。
  + `FSCommon`: `/Volumes/common`
  + `FS1`: 利用できません
  + `FS2`: `/Volumes/projects/project2`

最後に、フリート内のワーカーの共有ファイルシステムの場所を定義します。以下の例では、この設定を と呼んでいます`WorkerConfig`。共有場所は次のとおりです。
+ `FSCommon`: `/mnt/common`
+ `FS1`: `/mnt/projects/project1`
+ `FS2`: `/mnt/projects/project2`

 この設定に一致する共有ファイルシステム、ワークステーション、またはワーカーをセットアップする必要はありません。デモンストレーションのために共有場所が存在する必要はありません。

# ストレージプロファイルとパスマッピング
<a name="storage-profiles-and-path-mapping"></a>

ストレージプロファイルを使用して、ワークステーションとワーカーホストのファイルシステムをモデル化します。各ストレージプロファイルは、いずれかのシステム設定のオペレーティングシステムとファイルシステムのレイアウトを記述します。このトピックでは、Deadline Cloud がジョブのパスマッピングルールを生成できるように、ストレージプロファイルを使用してホストのファイルシステム設定をモデル化する方法と、それらのパスマッピングルールをストレージプロファイルから生成する方法について説明します。

Deadline Cloud にジョブを送信するときに、ジョブのオプションのストレージプロファイル ID を指定できます。このストレージプロファイルは、送信するワークステーションのファイルシステムを記述します。ジョブテンプレートのファイルパスが使用する元のファイルシステム設定について説明します。

ストレージプロファイルをフリートに関連付けることもできます。ストレージプロファイルは、フリート内のすべてのワーカーホストのファイルシステム設定を記述します。ファイルシステム設定が異なるワーカーがある場合は、それらのワーカーをファーム内の別のフリートに割り当てる必要があります。

 パスマッピングルールは、ジョブで指定されたパスからワーカーホスト上のパスの実際の場所にパスを再マッピングする方法を説明します。Deadline Cloud は、ジョブのストレージプロファイルで説明されているファイルシステム設定と、ジョブを実行しているフリートのストレージプロファイルを比較して、これらのパスマッピングルールを取得します。

**Topics**
+ [ストレージプロファイルを使用して共有ファイルシステムの場所をモデル化する](modeling-your-shared-filesystem-locations-with-storage-profiles.md)
+ [フリートのストレージプロファイルを設定する](configuring-storage-profiles-for-fleets.md)
+ [キューのストレージプロファイルを設定する](storage-profiles-for-queues.md)
+ [ストレージプロファイルからパスマッピングルールを取得する](deriving-path-mapping-rules-from-storage-profiles.md)

# ストレージプロファイルを使用して共有ファイルシステムの場所をモデル化する
<a name="modeling-your-shared-filesystem-locations-with-storage-profiles"></a>

 ストレージプロファイルは、ホスト設定のいずれかのファイルシステム設定をモデル化します。[サンプルプロジェクトインフラストラクチャ]()には 4 つの異なるホスト設定があります。この例では、それぞれに個別のストレージプロファイルを作成します。ストレージプロファイルは、次のいずれかを使用して作成できます。
+ [CreateStorageProfile API](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateStorageProfile.html)
+ [AWS::Deadline::StorageProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-deadline-storageprofile.html) CloudFormation リソース
+ [AWS コンソール](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-shared.html#storage-profile)

 ストレージプロファイルは、ファイルシステムの場所のリストで構成され、それぞれがホストから送信されたジョブまたはホストで実行されたジョブに関連するファイルシステムの場所とタイプを Deadline Cloud に指示します。ストレージプロファイルは、ジョブに関連する場所のみをモデル化する必要があります。たとえば、共有`FSCommon`場所は `WS1` のワークステーションにあるため`S:\`、対応するファイルシステムの場所は次のとおりです。

```
{
    "name": "FSCommon",
    "path": "S:\\",
    "type": "SHARED"
}
```

 次のコマンドを使用して、ワークステーション設定 `WS1`、`WS2`、`WS3`および [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)の `WorkerConfig`を使用してワーカー設定のストレージプロファイルを作成します[AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)。

```
# Change the value of FARM_ID to your farm's identifier
FARM_ID=farm-00112233445566778899aabbccddeeff

aws deadline create-storage-profile --farm-id $FARM_ID \
  --display-name WSAll \
  --os-family LINUX \
  --file-system-locations \
  '[
      {"name": "FSCommon", "type":"SHARED", "path":"/shared/common"},
      {"name": "FS1", "type":"SHARED", "path":"/shared/projects/project1"},
      {"name": "FS2", "type":"SHARED", "path":"/shared/projects/project2"}
  ]'

aws deadline create-storage-profile --farm-id $FARM_ID \
  --display-name WS1 \
  --os-family WINDOWS \
  --file-system-locations \
  '[
      {"name": "FSCommon", "type":"SHARED", "path":"S:\\"},
      {"name": "FS1", "type":"SHARED", "path":"Z:\\"}
   ]'

aws deadline create-storage-profile --farm-id $FARM_ID \
  --display-name WS2 \
  --os-family MACOS \
  --file-system-locations \
  '[
      {"name": "FSCommon", "type":"SHARED", "path":"/Volumes/common"},
      {"name": "FS2", "type":"SHARED", "path":"/Volumes/projects/project2"}
  ]'

aws deadline create-storage-profile --farm-id $FARM_ID \
  --display-name WorkerCfg \
  --os-family LINUX \
  --file-system-locations \
  '[
      {"name": "FSCommon", "type":"SHARED", "path":"/mnt/common"},
      {"name": "FS1", "type":"SHARED", "path":"/mnt/projects/project1"},
      {"name": "FS2", "type":"SHARED", "path":"/mnt/projects/project2"}
  ]'
```

**注記**  
ファーム内のすべてのストレージプロファイルで `name`プロパティに同じ値を使用して、ストレージプロファイル内のファイルシステムの場所を参照する必要があります。Deadline Cloud は名前を比較して、パスマッピングルールを生成するときに、異なるストレージプロファイルのファイルシステムの場所が同じ場所を参照しているかどうかを確認します。

# フリートのストレージプロファイルを設定する
<a name="configuring-storage-profiles-for-fleets"></a>

フリート内のすべてのワーカーのファイルシステムの場所をモデル化するストレージプロファイルを含めるようにフリートを設定できます。フリート内のすべてのワーカーのホストファイルシステム設定は、フリートのストレージプロファイルと一致する必要があります。ファイルシステム設定が異なるワーカーは、別々のフリートに存在する必要があります。

`WorkerConfig` ストレージプロファイルを使用するようにフリートの設定を設定するには、 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) で を使用します[AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)。

```
# Change the value of FARM_ID to your farm's identifier
FARM_ID=farm-00112233445566778899aabbccddeeff
# Change the value of FLEET_ID to your fleet's identifier
FLEET_ID=fleet-00112233445566778899aabbccddeeff
# Change the value of WORKER_CFG_ID to your storage profile named WorkerConfig
WORKER_CFG_ID=sp-00112233445566778899aabbccddeeff

FLEET_WORKER_MODE=$( \
  aws deadline get-fleet --farm-id $FARM_ID --fleet-id $FLEET_ID \
   --query '.configuration.customerManaged.mode' \
)
FLEET_WORKER_CAPABILITIES=$( \
  aws deadline get-fleet --farm-id $FARM_ID --fleet-id $FLEET_ID \
   --query '.configuration.customerManaged.workerCapabilities' \
)

aws deadline update-fleet --farm-id $FARM_ID --fleet-id $FLEET_ID \
  --configuration \
  "{
    \"customerManaged\": {
      \"storageProfileId\": \"$WORKER_CFG_ID\",
      \"mode\": $FLEET_WORKER_MODE,
      \"workerCapabilities\": $FLEET_WORKER_CAPABILITIES
    }
  }"
```

# キューのストレージプロファイルを設定する
<a name="storage-profiles-for-queues"></a>

 キューの設定には、キューに送信されたジョブがアクセスする必要がある共有ファイルシステムの場所の大文字と小文字を区別する名前のリストが含まれます。たとえば、キューに送信されたジョブにはファイルシステムの場所`FSCommon`と `Q1`が必要です`FS1`。キューに送信されるジョブには、ファイルシステムの場所 `FSCommon` と `Q2`が必要です`FS2`。

これらのファイルシステムの場所を要求するようにキューの設定を設定するには、次のスクリプトを使用します。

```
# 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 QUEUE2_ID to queue Q2's identifier
QUEUE2_ID=queue-00112233445566778899aabbccddeeff

aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID \
  --required-file-system-location-names-to-add FSComm FS1

aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE2_ID \
  --required-file-system-location-names-to-add FSComm FS2
```

 キューの設定には、そのキューに送信されたジョブと、そのキューに関連付けられたフリートに適用される許可されたストレージプロファイルのリストも含まれます。キューに必要なすべてのファイルシステムの場所のファイルシステムの場所を定義するストレージプロファイルのみが、キューの許可されたストレージプロファイルのリストで許可されます。

キューの許可されたストレージプロファイルのリストにないストレージプロファイルでジョブを送信すると、ジョブは失敗します。ストレージプロファイルのないジョブをキューにいつでも送信できます。とラベル付けされたワークステーション設定には`WSAll`、キュー に必要なファイルシステムの場所 (`FSCommon` と `FS1`) `WS1`があります`Q1`。キューへのジョブの送信を許可する必要があります。同様に、ワークステーション設定 `WSAll`と `WS2`はキュー の要件を満たしています`Q2`。ジョブをそのキューに送信することを許可する必要があります。両方のキュー設定を更新して、次のスクリプトを使用して、これらのストレージプロファイルでジョブを送信できるようにします。

```
# Change the value of WSALL_ID to the identifier of the WSAll storage profile
WSALL_ID=sp-00112233445566778899aabbccddeeff
# Change the value of WS1 to the identifier of the WS1 storage profile
WS1_ID=sp-00112233445566778899aabbccddeeff
# Change the value of WS2 to the identifier of the WS2 storage profile
WS2_ID=sp-00112233445566778899aabbccddeeff

aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID \
  --allowed-storage-profile-ids-to-add $WSALL_ID $WS1_ID

aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE2_ID \
  --allowed-storage-profile-ids-to-add $WSALL_ID $WS2_ID
```

 `WS2` ストレージプロファイルをキューの許可されたストレージプロファイルのリストに追加する`Q1`と、失敗します。

```
$ aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID \
  --allowed-storage-profile-ids-to-add $WS2_ID

An error occurred (ValidationException) when calling the UpdateQueue operation: Storage profile id: sp-00112233445566778899aabbccddeeff does not have required file system location: FS1
```

 これは、`WS2`ストレージプロファイルに、キュー`FS1`が`Q1`必要とする という名前のファイルシステムの場所の定義が含まれていないためです。

 キューの許可されたストレージプロファイルのリストに含まれていないストレージプロファイルに設定されたフリートの関連付けも失敗します。例えば、次のようになります。

```
$ aws deadline create-queue-fleet-association --farm-id $FARM_ID \
   --fleet-id $FLEET_ID \
   --queue-id $QUEUE1_ID

An error occurred (ValidationException) when calling the CreateQueueFleetAssociation operation: Mismatch between storage profile ids.
```

エラーを修正するには、 という名前のストレージプロファイル`WorkerConfig`をキュー`Q1`とキューの両方の許可されたストレージプロファイルのリストに追加します`Q2`。次に、フリートのワーカーが両方のキューからジョブを実行できるように、フリートをこれらのキューに関連付けます。

```
# Change the value of FLEET_ID to your fleet's identifier
FLEET_ID=fleet-00112233445566778899aabbccddeeff
# Change the value of WORKER_CFG_ID to your storage profile named WorkerCfg
WORKER_CFG_ID=sp-00112233445566778899aabbccddeeff

aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE1_ID \
  --allowed-storage-profile-ids-to-add $WORKER_CFG_ID

aws deadline update-queue --farm-id $FARM_ID --queue-id $QUEUE2_ID \
  --allowed-storage-profile-ids-to-add $WORKER_CFG_ID

aws deadline create-queue-fleet-association --farm-id $FARM_ID \
  --fleet-id $FLEET_ID \
  --queue-id $QUEUE1_ID

aws deadline create-queue-fleet-association --farm-id $FARM_ID \
  --fleet-id $FLEET_ID \
  --queue-id $QUEUE2_ID
```

# ストレージプロファイルからパスマッピングルールを取得する
<a name="deriving-path-mapping-rules-from-storage-profiles"></a>

 パスマッピングルールは、ジョブからワーカーホスト上のパスの実際の場所にパスを再マッピングする方法を説明します。タスクがワーカーで実行されている場合、ジョブのストレージプロファイルがワーカーのフリートのストレージプロファイルと比較され、タスクのパスマッピングルールが取得されます。

 Deadline Cloud は、キューの設定に必要なファイルシステムの場所ごとにマッピングルールを作成します。たとえば、`WSAll`ストレージプロファイルを使用してキューに送信されたジョブ`Q1`には、パスマッピングルールがあります。
+  `FSComm`: `/shared/common -> /mnt/common` 
+  `FS1`: `/shared/projects/project1 -> /mnt/projects/project1` 

 Deadline Cloud は、 `FSComm`と `FS1` ファイルシステムの場所のルールを作成しますが、 `WSAll`と の両方の`WorkerConfig`ストレージプロファイルが を定義している場合でも、`FS2`ファイルシステムの場所は作成しません`FS2`。これは、キュー`Q1`の必要なファイルシステムの場所のリストが であるためです`["FSComm", "FS1"]`。

 オープンジョブ[の説明のパスマッピングルールファイルを出力するジョブを送信し、ジョブの完了後にセッションログを読み取ることで、特定のストレージプロファイルで送信されたジョブで使用できるパスマッピングルール](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run#path-mapping)を確認できます。

```
# 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

aws deadline create-job --farm-id $FARM_ID --queue-id $QUEUE1_ID \
  --priority 50 \
  --storage-profile-id $WSALL_ID \
  --template-type JSON --template \
  '{
    "specificationVersion": "jobtemplate-2023-09",
    "name": "DemoPathMapping",
    "steps": [
      {
        "name": "ShowPathMappingRules",
        "script": {
          "actions": {
            "onRun": {
              "command": "/bin/cat",
              "args": [ "{{Session.PathMappingRulesFile}}" ]
            }
          }
        }
      }
    ]
  }'
```

 [Deadline Cloud CLI](https://pypi.org/project/deadline/) を使用してジョブを送信する場合、その`settings.storage_profile_id`設定により、CLI で送信されたジョブが持つストレージプロファイルが設定されます。`WSAll` ストレージプロファイルを使用してジョブを送信するには、以下を設定します。

```
deadline config set settings.storage_profile_id $WSALL_ID
```

 サンプルインフラストラクチャで実行されているかのようにカスタマーマネージドワーカーを実行するには、*Deadline Cloud ユーザーガイド*の[「ワーカーエージェントを実行する](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/run-worker.html)」の手順に従ってワーカーを実行します AWS CloudShell。以前にこれらの指示に従った場合は、まず `~/demoenv-logs`および `~/demoenv-persist` ディレクトリを削除します。また、指示が参照する `DEV_FARM_ID`および `DEV_CMF_ID` 環境変数の値を次のように設定してから、設定します。

```
DEV_FARM_ID=$FARM_ID
DEV_CMF_ID=$FLEET_ID
```

 ジョブの実行後、ジョブのログファイルにパスマッピングルールが表示されます。

```
cat demoenv-logs/${QUEUE1_ID}/*.log
...
JJSON log results (see below)
...
```

ログには、 `FS1`と `FSComm` ファイルシステムの両方のマッピングが含まれています。読みやすいように再フォーマットされたログエントリは次のようになります。

```
{
    "version": "pathmapping-1.0",
    "path_mapping_rules": [
        {
            "source_path_format": "POSIX",
            "source_path": "/shared/projects/project1",
            "destination_path": "/mnt/projects/project1"
        },
        {
            "source_path_format": "POSIX",
            "source_path": "/shared/common",
            "destination_path": "/mnt/common"
        }
    ]
```

 異なるストレージプロファイルを持つジョブを送信して、パスマッピングルールがどのように変化するかを確認できます。