

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

# Deadline Cloud リソースの開始方法
<a name="getting-started"></a>

 AWS Deadline Cloud のカスタムソリューションの作成を開始するには、 リソースを設定する必要があります。これには、ファーム、ファーム用の少なくとも 1 つのキュー、キューを処理するための少なくとも 1 つのワーカーフリートが含まれます。Deadline Cloud コンソールを使用してリソースを作成することも、 を使用することもできます AWS Command Line Interface。

このチュートリアルでは、 AWS CloudShell を使用してシンプルなデベロッパーファームを作成し、ワーカーエージェントを実行します。その後、パラメータとアタッチメントを使用してシンプルなジョブを送信して実行し、サービスマネージドフリートを追加し、完了したらファームリソースをクリーンアップできます。

以下のセクションでは、Deadline Cloud のさまざまな機能と、それらの機能および連携方法について説明します。これらのステップに従うことは、新しいワークロードとカスタマイズの開発とテストに役立ちます。

コンソールを使用してファームを設定する手順については、*「Deadline Cloud ユーザーガイド*」の[「開始方法](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/getting-started.html)」を参照してください。

**Topics**
+ [Deadline Cloud ファームを作成する](create-a-farm.md)
+ [Deadline Cloud ワーカーエージェントを実行する](run-worker.md)
+ [Deadline Cloud で送信する](submit-a-job.md)
+ [Deadline Cloud でジョブアタッチメントを使用してジョブを送信する](run-jobs-job-attachments.md)
+ [Deadline Cloud のデベロッパーファームにサービスマネージドフリートを追加する](service-managed-fleet.md)
+ [Deadline Cloud でファームリソースをクリーンアップする](cleaning-up.md)

# Deadline Cloud ファームを作成する
<a name="create-a-farm"></a>

 AWS Deadline Cloud でデベロッパーファームとキューリソースを作成するには、次の手順に示すように AWS Command Line Interface (AWS CLI) を使用します。また、 AWS Identity and Access Management (IAM) ロールとカスタマーマネージドフリート (CMF) を作成し、フリートをキューに関連付けます。次に、 を設定し AWS CLI 、ファームが指定されたとおりに設定され、動作していることを確認します。

このファームを使用して Deadline Cloud の機能を調べ、新しいワークロード、カスタマイズ、パイプライン統合を開発してテストできます。

**ファームを作成するには**

1. [セッションを開きます AWS CloudShell](https://console.aws.amazon.com/cloudshell/home?region=us-west-2)。CloudShell ウィンドウを使用して AWS Command Line Interface (AWS CLI) コマンドを入力し、このチュートリアルの例を実行します。CloudShell ウィンドウを開いたままにします。

1. ファームの名前を作成し、そのファーム名を に追加します`~/.bashrc`。これにより、他のターミナルセッションで利用できるようになります。

   ```
   echo "DEV_FARM_NAME=DeveloperFarm" >> ~/.bashrc
   source ~/.bashrc
   ```

1. ファームリソースを作成し、そのファーム ID を に追加します`~/.bashrc`。

   ```
   aws deadline create-farm \
       --display-name "$DEV_FARM_NAME"
   
   echo "DEV_FARM_ID=\$(aws deadline list-farms \
           --query \"farms[?displayName=='\$DEV_FARM_NAME'].farmId \
           | [0]\" --output text)" >> ~/.bashrc
   source ~/.bashrc
   ```

1. キューリソースを作成し、キュー ID を に追加する `~/.bashrc.`

   ```
   aws deadline create-queue \
       --farm-id $DEV_FARM_ID \
       --display-name "$DEV_FARM_NAME Queue" \
       --job-run-as-user '{"posix": {"user": "job-user", "group": "job-group"}, "runAs":"QUEUE_CONFIGURED_USER"}'
   
   echo "DEV_QUEUE_ID=\$(aws deadline list-queues \
           --farm-id \$DEV_FARM_ID \
           --query \"queues[?displayName=='\$DEV_FARM_NAME Queue'].queueId \
           | [0]\" --output text)" >> ~/.bashrc
   source ~/.bashrc
   ```

1. フリートの IAM ロールを作成します。このロールは、フリートのワーカーホストに、キューからジョブを実行するために必要なセキュリティ認証情報を提供します。

   ```
   aws iam create-role \
       --role-name "${DEV_FARM_NAME}FleetRole" \
       --assume-role-policy-document \
           '{
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "credentials.deadline.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           }'
   aws iam put-role-policy \
       --role-name "${DEV_FARM_NAME}FleetRole" \
       --policy-name WorkerPermissions \
       --policy-document \
           '{
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Effect": "Allow",
                       "Action": [
                           "deadline:AssumeFleetRoleForWorker",
                           "deadline:UpdateWorker",
                           "deadline:DeleteWorker",
                           "deadline:UpdateWorkerSchedule",
                           "deadline:BatchGetJobEntity",
                           "deadline:AssumeQueueRoleForWorker"
                       ],
                       "Resource": "*",
                       "Condition": {
                           "StringEquals": {
                               "aws:PrincipalAccount": "${aws:ResourceAccount}"
                           }
                       }
                   },
                   {
                       "Effect": "Allow",
                       "Action": [
                           "logs:CreateLogStream"
                       ],
                       "Resource": "arn:aws:logs:*:*:*:/aws/deadline/*",
                       "Condition": {
                           "StringEquals": {
                               "aws:PrincipalAccount": "${aws:ResourceAccount}"
                           }
                       }
                   },
                   {
                       "Effect": "Allow",
                       "Action": [
                           "logs:PutLogEvents",
                           "logs:GetLogEvents"
                       ],
                       "Resource": "arn:aws:logs:*:*:*:/aws/deadline/*",
                       "Condition": {
                           "StringEquals": {
                               "aws:PrincipalAccount": "${aws:ResourceAccount}"
                           }
                       }
                   }
               ]
           }'
   ```

1. カスタマーマネージドフリート (CMF) を作成し、そのフリート ID を に追加します`~/.bashrc`。

   ```
   FLEET_ROLE_ARN="arn:aws:iam::$(aws sts get-caller-identity \
           --query "Account" --output text):role/${DEV_FARM_NAME}FleetRole"
   aws deadline create-fleet \
       --farm-id $DEV_FARM_ID \
       --display-name "$DEV_FARM_NAME CMF" \
       --role-arn $FLEET_ROLE_ARN \
       --max-worker-count 5 \
       --configuration \
           '{
               "customerManaged": {
                   "mode": "NO_SCALING",
                   "workerCapabilities": {
                       "vCpuCount": {"min": 1},
                       "memoryMiB": {"min": 512},
                       "osFamily": "linux",
                       "cpuArchitectureType": "x86_64"
                   }
               }
           }'
   
   echo "DEV_CMF_ID=\$(aws deadline list-fleets \
           --farm-id \$DEV_FARM_ID \
           --query \"fleets[?displayName=='\$DEV_FARM_NAME CMF'].fleetId \
           | [0]\" --output text)" >> ~/.bashrc
   source ~/.bashrc
   ```

1. CMF をキューに関連付けます。

   ```
   aws deadline create-queue-fleet-association \
       --farm-id $DEV_FARM_ID \
       --queue-id $DEV_QUEUE_ID \
       --fleet-id $DEV_CMF_ID
   ```

1. Deadline Cloud コマンドラインインターフェイスをインストールします。

   ```
   pip install deadline
   ```

1. デフォルトのファームをファーム ID に設定し、キューを前に作成したキュー ID に設定するには、次のコマンドを使用します。

   ```
   deadline config set defaults.farm_id $DEV_FARM_ID
   deadline config set defaults.queue_id $DEV_QUEUE_ID
   ```

1. (オプション) ファームが仕様に従って設定されていることを確認するには、次のコマンドを使用します。
   + すべてのファームを一覧表示する – **deadline farm list**
   + デフォルトファーム内のすべてのキューを一覧表示する – **deadline queue list**
   + デフォルトファーム内のすべてのフリートを一覧表示する – **deadline fleet list**
   + デフォルトのファームを取得する – **deadline farm get**
   + デフォルトのキューを取得する – **deadline queue get**
   + デフォルトキューに関連付けられているすべてのフリートを取得する – **deadline fleet get**

## 次のステップ
<a name="gs-create-farm-next"></a>

ファームを作成したら、フリートのホストで Deadline Cloud ワーカーエージェントを実行してジョブを処理できます。「[Deadline Cloud ワーカーエージェントを実行する](run-worker.md)」を参照してください。

# Deadline Cloud ワーカーエージェントを実行する
<a name="run-worker"></a>

デベロッパーファームのキューに送信するジョブを実行する前に、ワーカーホストでデベロッパーモードで Deadline Cloud AWS ワーカーエージェントを実行する必要があります。

このチュートリアルの残りの部分では、2 つの AWS CloudShell タブを使用して開発者ファームで AWS CLI オペレーションを実行します。最初のタブでは、ジョブを送信できます。2 番目のタブでは、ワーカーエージェントを実行できます。

**注記**  
CloudShell セッションを 20 分以上アイドル状態にすると、ワーカーエージェントはタイムアウトして停止します。ワーカーエージェントを再起動するには、以下の手順に従います。

ワーカーエージェントを起動する前に、Deadline Cloud ファーム、キュー、フリートを設定する必要があります。「[Deadline Cloud ファームを作成する](create-a-farm.md)」を参照してください。

**デベロッパーモードでワーカーエージェントを実行するには**

1. ファームを最初の CloudShell タブで開いたままにして、2 番目の CloudShell タブを開き、 `demoenv-logs`および `demoenv-persist` ディレクトリを作成します。

   ```
   mkdir ~/demoenv-logs 
   mkdir ~/demoenv-persist
   ```

1. PyPI から Deadline Cloud ワーカーエージェントパッケージをダウンロードしてインストールします。
**注記**  
ではWindows、エージェントファイルが Python のグローバル site-packages ディレクトリにインストールされている必要があります。Python 仮想環境は現在サポートされていません。

   ```
   python -m pip install deadline-cloud-worker-agent
   ```

1. ワーカーエージェントがジョブを実行するための一時ディレクトリを作成できるようにするには、 ディレクトリを作成します。

   ```
   sudo mkdir /sessions
   sudo chmod 750 /sessions
   sudo chown cloudshell-user /sessions
   ```

1. Deadline Cloud ワーカーエージェントを、 に追加`DEV_CMF_ID`した変数 `DEV_FARM_ID`と を使用して開発者モードで実行します`~/.bashrc`。

   ```
   deadline-worker-agent \
       --farm-id $DEV_FARM_ID \
       --fleet-id $DEV_CMF_ID \
       --run-jobs-as-agent-user \
       --logs-dir ~/demoenv-logs \
       --persistence-dir ~/demoenv-persist
   ```

   ワーカーエージェントが初期化して `UpdateWorkerSchedule` API オペレーションをポーリングすると、次の出力が表示されます。

   ```
   INFO    Worker Agent starting
   [2024-03-27 15:51:01,292][INFO    ] 👋 Worker Agent starting
   [2024-03-27 15:51:01,292][INFO    ] AgentInfo 
   Python Interpreter: /usr/bin/python3
   Python Version: 3.9.16 (main, Sep  8 2023, 00:00:00)  - [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)]
   Platform: linux
   ...
   [2024-03-27 15:51:02,528][INFO    ] 📥 API.Resp 📥 [deadline:UpdateWorkerSchedule](200) params={'assignedSessions': {}, 'cancelSessionActions': {}, 'updateIntervalSeconds': 15} ...
   [2024-03-27 15:51:17,635][INFO    ] 📥 API.Resp 📥 [deadline:UpdateWorkerSchedule](200) params=(Duplicate removed, see previous response) ...
   [2024-03-27 15:51:32,756][INFO    ] 📥 API.Resp 📥 [deadline:UpdateWorkerSchedule](200) params=(Duplicate removed, see previous response) ...
   ...
   ```

1. 最初の CloudShell タブを選択し、フリート内のワーカーを一覧表示します。

   ```
   deadline worker list --fleet-id $DEV_CMF_ID
   ```

   次のような出力が表示されます。

   ```
   Displaying 1 of 1 workers starting at 0
   
   - workerId: worker-8c9af877c8734e89914047111f
     status: STARTED
     createdAt: 2023-12-13 20:43:06+00:00
   ```

本番稼働用設定では、Deadline Cloud ワーカーエージェントは、ホストマシンの管理ユーザーとして複数のユーザーと設定ディレクトリを設定する必要があります。アクセス可能な独自の開発ファームでジョブを実行しているため、これらの設定を上書きできます。

## 次のステップ
<a name="gs-run-worker-agent-next"></a>

ワーカーホストでワーカーエージェントが実行されたので、ワーカーにジョブを送信できます。次のようにできます：
+ [Deadline Cloud で送信する](submit-a-job.md) シンプルな OpenJD ジョブバンドルを使用する。
+ [Deadline Cloud でジョブアタッチメントを使用してジョブを送信する](run-jobs-job-attachments.md) 異なるオペレーティングシステムを使用してワークステーション間でファイルを共有する 。

# Deadline Cloud で送信する
<a name="submit-a-job"></a>

ワーカーホストで Deadline Cloud ジョブを実行するには、Open Job Description (OpenJD) ジョブバンドルを作成して使用してジョブを設定します。バンドルは、ジョブの入力ファイルとジョブの出力を書き込む場所を指定するなどして、ジョブを設定します。このトピックでは、ジョブバンドルを設定する方法の例を示します。

このセクションの手順を実行する前に、以下を完了する必要があります。
+ [Deadline Cloud ファームを作成する](create-a-farm.md)
+ [Deadline Cloud ワーカーエージェントを実行する](run-worker.md)

 AWS Deadline Cloud を使用してジョブを実行するには、次の手順を使用します。最初の AWS CloudShell タブを使用して、デベロッパーファームにジョブを送信します。2 番目の CloudShell タブを使用して、ワーカーエージェントの出力を表示します。

**Topics**
+ [simple\$1job サンプルを送信する](#submit-a-simplejob-sample)
+ [パラメータsimple\$1jobを使用して を送信する](#submit-with-parameter)
+ [ファイル I/O を使用して simple\$1file\$1job ジョブバンドルを作成する](#create-job-bundle-with-file-io)
+ [次の手順](#submit-a-job-next)

## simple\$1job サンプルを送信する
<a name="submit-a-simplejob-sample"></a>

ファームを作成してワーカーエージェントを実行したら、simple\$1jobサンプルを Deadline Cloud に送信できます。

**Deadline Cloud にsimple\$1jobサンプルを送信するには**

1. 最初の CloudShell タブを選択します。

1. GitHub からサンプルをダウンロードします。

   ```
   cd ~
   git clone https://github.com/aws-deadline/deadline-cloud-samples.git
   ```

1. ジョブバンドルサンプルディレクトリに移動します。

   ```
   cd ~/deadline-cloud-samples/job_bundles/
   ```

1. simple\$1job サンプルを送信します。

   ```
   deadline bundle submit simple_job
   ```

1. 2 番目の CloudShell タブを選択すると、 の呼び出し`BatchGetJobEntities`、セッションの取得、セッションアクションの実行に関するログ記録出力が表示されます。

   ```
   ...
   [2024-03-27 16:00:21,846][INFO    ] 🔷 Session.Starting 🔷 [session-053d77cef82648fe2] Starting new Session. [queue-3ba4ff683ff54db09b851a2ed8327d7b/job-d34cc98a6e234b6f82577940ab4f76c6]
   [2024-03-27 16:00:21,853][INFO    ] 📤 API.Req 📤 [deadline:BatchGetJobEntity] resource={'farm-id': 'farm-3e24cfc9bbcd423e9c1b6754bc1', 'fleet-id': 'fleet-246ee60f46d44559b6cce010d05', 'worker-id': 'worker-75e0fce9c3c344a69bff57fcd83'} params={'identifiers': [{'jobDetails': {'jobId': 'job-d34cc98a6e234b6f82577940ab4'}}]} request_url=https://scheduling.deadline.us-west-2.amazonaws.com/2023-10-12/farms/farm-3e24cfc9bbcd423e /fleets/fleet-246ee60f46d44559b1 /workers/worker- 75e0fce9c3c344a69b /batchGetJobEntity
   [2024-03-27 16:00:22,013][INFO    ] 📥 API.Resp 📥 [deadline:BatchGetJobEntity](200) params={'entities': [{'jobDetails': {'jobId': 'job-d34cc98a6e234b6f82577940ab6', 'jobRunAsUser': {'posix': {'user': 'job-user', 'group': 'job-group'}, 'runAs': 'QUEUE_CONFIGURED_USER'}, 'logGroupName': '/aws/deadline/farm-3e24cfc9bbcd423e9c1b6754bc1/queue-3ba4ff683ff54db09b851a2ed83', 'parameters': '*REDACTED*', 'schemaVersion': 'jobtemplate-2023-09'}}], 'errors': []} request_id=a3f55914-6470-439e-89e5-313f0c6
   [2024-03-27 16:00:22,013][INFO    ] 🔷 Session.Add 🔷 [session-053d77cef82648fea9c69827182] Appended new SessionActions. (ActionIds: ['sessionaction-053d77cef82648fea9c69827182-0']) [queue-3ba4ff683ff54db09b851a2ed8b/job-d34cc98a6e234b6f82577940ab6]
   [2024-03-27 16:00:22,014][WARNING ] 🔷 Session.User 🔷 [session-053d77cef82648fea9c69827182] Running as the Worker Agent's user. (User: cloudshell-user) [queue-3ba4ff683ff54db09b851a2ed8b/job-d34cc98a6e234b6f82577940ac6]
   [2024-03-27 16:00:22,015][WARNING ] 🔷 Session.AWSCreds 🔷 [session-053d77cef82648fea9c69827182] AWS Credentials are not available: Queue has no IAM Role. [queue-3ba4ff683ff54db09b851a2ed8b/job-d34cc98a6e234b6f82577940ab6]
   [2024-03-27 16:00:22,026][INFO    ] 🔷 Session.Logs 🔷 [session-053d77cef82648fea9c69827182] Logs streamed to: AWS CloudWatch Logs. (LogDestination: /aws/deadline/farm-3e24cfc9bbcd423e9c1b6754bc1/queue-3ba4ff683ff54db09b851a2ed83/session-053d77cef82648fea9c69827181) [queue-3ba4ff683ff54db09b851a2ed83/job-d34cc98a6e234b6f82577940ab4]
   [2024-03-27 16:00:22,026][INFO    ] 🔷 Session.Logs 🔷 [session-053d77cef82648fea9c69827182] Logs streamed to: local file. (LogDestination: /home/cloudshell-user/demoenv-logs/queue-3ba4ff683ff54db09b851a2ed8b/session-053d77cef82648fea9c69827182.log) [queue-3ba4ff683ff54db09b851a2ed83/job-d34cc98a6e234b6f82577940ab4]
   ...
   ```
**注記**  
ワーカーエージェントからのログ記録出力のみが表示されます。ジョブを実行するセッションには別のログがあります。

1. 最初のタブを選択し、ワーカーエージェントが書き込むログファイルを検査します。

   1. ワーカーエージェントのログディレクトリに移動し、その内容を表示します。

      ```
      cd ~/demoenv-logs
      ls
      ```

   1. ワーカーエージェントが作成した最初のログファイルを出力します。

      ```
      cat worker-agent-bootstrap.log
      ```

      このファイルには、Deadline Cloud API を呼び出してフリートにワーカーリソースを作成し、フリートロールを引き受けた方法に関するワーカーエージェントの出力が含まれています。

   1. ワーカーエージェントがフリートに参加するときに、ログファイルの出力を出力します。

      ```
      cat worker-agent.log
      ```

      このログには、ワーカーエージェントが実行するすべてのアクションに関する出力が含まれますが、それらのリソースの IDs を除き、ジョブを実行するキューに関する出力は含まれません。

   1. キューリソース ID と同じ名前のディレクトリに、各セッションのログファイルを出力します。

      ```
      cat $DEV_QUEUE_ID/session-*.log
      ```

      ジョブが成功すると、ログファイルの出力は次のようになります。

      ```
      cat $DEV_QUEUE_ID/$(ls -t $DEV_QUEUE_ID | head -1)
                                  
      2024-03-27 16:00:22,026 WARNING Session running with no AWS Credentials.
      2024-03-27 16:00:22,404 INFO 
      2024-03-27 16:00:22,405 INFO ==============================================
      2024-03-27 16:00:22,405 INFO --------- Running Task
      2024-03-27 16:00:22,405 INFO ==============================================
      2024-03-27 16:00:22,406 INFO ----------------------------------------------
      2024-03-27 16:00:22,406 INFO Phase: Setup
      2024-03-27 16:00:22,406 INFO ----------------------------------------------
      2024-03-27 16:00:22,406 INFO Writing embedded files for Task to disk.
      2024-03-27 16:00:22,406 INFO Mapping: Task.File.runScript -> /sessions/session-053d77cef82648fea9c698271812a/embedded_fileswa_gj55_/tmp2u9yqtsz
      2024-03-27 16:00:22,406 INFO Wrote: runScript -> /sessions/session-053d77cef82648fea9c698271812a/embedded_fileswa_gj55_/tmp2u9yqtsz
      2024-03-27 16:00:22,407 INFO ----------------------------------------------
      2024-03-27 16:00:22,407 INFO Phase: Running action
      2024-03-27 16:00:22,407 INFO ----------------------------------------------
      2024-03-27 16:00:22,407 INFO Running command /sessions/session-053d77cef82648fea9c698271812a/tmpzuzxpslm.sh
      2024-03-27 16:00:22,414 INFO Command started as pid: 471
      2024-03-27 16:00:22,415 INFO Output:
      2024-03-27 16:00:22,420 INFO Welcome to AWS Deadline Cloud!
      2024-03-27 16:00:22,571 INFO 
      2024-03-27 16:00:22,572 INFO ==============================================
      2024-03-27 16:00:22,572 INFO --------- Session Cleanup
      2024-03-27 16:00:22,572 INFO ==============================================
      2024-03-27 16:00:22,572 INFO Deleting working directory: /sessions/session-053d77cef82648fea9c698271812a
      ```

1. ジョブに関する情報を出力します。

   ```
   deadline job get
   ```

   ジョブを送信すると、システムはそれをデフォルトとして保存するため、ジョブ ID を入力する必要はありません。

## パラメータsimple\$1jobを使用して を送信する
<a name="submit-with-parameter"></a>

パラメータを使用してジョブを送信できます。次の手順では、simple\$1jobテンプレートを編集してカスタムメッセージを含め、 を送信しsimple\$1job、セッションログファイルを印刷してメッセージを表示します。

**パラメータを使用してsimple\$1jobサンプルを送信するには**

1. 最初の CloudShell タブを選択し、ジョブバンドルサンプルディレクトリに移動します。

   ```
   cd ~/deadline-cloud-samples/job_bundles/
   ```

1. simple\$1job テンプレートの内容を出力します。

   ```
   cat simple_job/template.yaml
   ```

   `Message` パラメータを含む `parameterDefinitions`セクションは次のようになります。

   ```
   parameterDefinitions:
   - name: Message
     type: STRING
     default: Welcome to AWS Deadline Cloud!
   ```

1. パラメータ値を使用してsimple\$1jobサンプルを送信し、ジョブの実行が完了するまで待ちます。

   ```
   deadline bundle submit simple_job \
       -p "Message=Greetings from the developer getting started guide."
   ```

1. カスタムメッセージを表示するには、最新のセッションログファイルを表示します。

   ```
   cd ~/demoenv-logs
   cat $DEV_QUEUE_ID/$(ls -t $DEV_QUEUE_ID | head -1)
   ```

## ファイル I/O を使用して simple\$1file\$1job ジョブバンドルを作成する
<a name="create-job-bundle-with-file-io"></a>

レンダリングジョブはシーン定義を読み取り、そこからイメージをレンダリングしてから、そのイメージを出力ファイルに保存する必要があります。このアクションをシミュレートするには、イメージをレンダリングする代わりに、ジョブで入力のハッシュを計算します。

**ファイル I/O を使用して simple\$1file\$1job ジョブバンドルを作成するには**

1. 最初の CloudShell タブを選択し、ジョブバンドルサンプルディレクトリに移動します。

   ```
   cd ~/deadline-cloud-samples/job_bundles/
   ```

1. 新しい名前`simple_job`で のコピーを作成します`simple_file_job`。

   ```
   cp -r simple_job simple_file_job
   ```

1. ジョブテンプレートを次のように編集します。
**注記**  
これらのステップnanoでは、 を使用することをお勧めします。を使用する場合はVim、 を使用して貼り付けモードを設定する必要があります`:set paste`。

   1. テキストエディタでテンプレートを開きます。

      ```
      nano simple_file_job/template.yaml
      ```

   1. 次の `type`、`objectType`、および `dataFlow` を追加します`parameterDefinitions`。

      ```
      - name: InFile
        type: PATH
        objectType: FILE
        dataFlow: IN
      - name: OutFile
        type: PATH
        objectType: FILE
        dataFlow: OUT
      ```

   1. 次の`bash`スクリプトコマンドを、 が入力ファイルから読み取り、出力ファイルに書き込むファイルの末尾に追加します。

      ```
              # hash the input file, and write that to the output
              sha256sum "{{Param.InFile}}" > "{{Param.OutFile}}"
      ```

      更新された `template.yaml`は、以下と完全に一致する必要があります。

      ```
      specificationVersion: 'jobtemplate-2023-09'
      name: Simple File Job Bundle Example
      parameterDefinitions:
      - name: Message
        type: STRING
        default: Welcome to AWS Deadline Cloud!
      - name: InFile
        type: PATH
        objectType: FILE
        dataFlow: IN
      - name: OutFile
        type: PATH
        objectType: FILE
        dataFlow: OUT
      steps:
      - name: WelcomeToDeadlineCloud
        script:
          actions:
            onRun:
              command: '{{Task.File.Run}}'
          embeddedFiles:
          - name: Run
            type: TEXT
            runnable: true
            data: |
              #!/usr/bin/env bash
              echo "{{Param.Message}}"
      
              # hash the input file, and write that to the output
              sha256sum "{{Param.InFile}}" > "{{Param.OutFile}}"
      ```
**注記**  
の間隔を調整する場合は`template.yaml`、インデントの代わりにスペースを使用してください。

   1. ファイルを保存し、テキストエディタを終了します。

1. simple\$1file\$1job を送信する入出力ファイルのパラメータ値を指定します。

   ```
   deadline bundle submit simple_file_job \
       -p "InFile=simple_job/template.yaml" \
       -p "OutFile=hash.txt"
   ```

1. ジョブに関する情報を出力します。

   ```
   deadline job get
   ```
   + 次のような出力が表示されます。

     ```
     parameters:
       Message:
         string: Welcome to AWS Deadline Cloud!
       InFile:
         path: /local/home/cloudshell-user/BundleFiles/JobBundle-Examples/simple_job/template.yaml
       OutFile:
         path: /local/home/cloudshell-user/BundleFiles/JobBundle-Examples/hash.txt
     ```
   + 相対パスのみを指定しましたが、パラメータにはフルパスが設定されています。は、パスのタイプが の場合、パラメータとして指定されたパスに現在の作業ディレクトリを AWS CLI 結合します`PATH`。
   + 他のターミナルウィンドウで実行されているワーカーエージェントがジョブをピックアップして実行します。このアクションにより `hash.txt` ファイルが作成され、次のコマンドで表示できます。

     ```
     cat hash.txt
     ```

     このコマンドは、次のような出力を出力します。

     ```
     eaa2df5d34b54be5ac34c56a24a8c237b8487231a607eaf530a04d76b89c9cd3 /local/home/cloudshell-user/BundleFiles/JobBundle-Examples/simple_job/template.yaml
     ```

## 次の手順
<a name="submit-a-job-next"></a>

Deadline Cloud CLI を使用してシンプルなジョブを送信する方法を学習したら、以下を試すことができます。
+ [Deadline Cloud でジョブアタッチメントを使用してジョブを送信する](run-jobs-job-attachments.md) では、異なるオペレーティングシステムを実行しているホストでジョブを実行する方法について説明します。
+ [Deadline Cloud のデベロッパーファームにサービスマネージドフリートを追加する](service-managed-fleet.md) は、Deadline Cloud によって管理されるホストでジョブを実行します。
+ [Deadline Cloud でファームリソースをクリーンアップする](cleaning-up.md) このチュートリアルで使用したリソースをシャットダウンするには、 を使用します。

# Deadline Cloud でジョブアタッチメントを使用してジョブを送信する
<a name="run-jobs-job-attachments"></a>

多くのファームは、共有ファイルシステムを使用して、ジョブを送信するホストとジョブを実行するホストの間でファイルを共有します。たとえば、前の`simple_file_job`例では、ローカルファイルシステムは、ジョブを送信するタブ 1 とワーカーエージェントを実行するタブ 2 で実行される AWS CloudShell ターミナルウィンドウ間で共有されます。

共有ファイルシステムは、送信者ワークステーションとワーカーホストが同じローカルエリアネットワーク上にある場合に便利です。それにアクセスするワークステーションの近くでオンプレミスにデータを保存する場合、クラウドベースのファームを使用すると、高レイテンシー VPN 経由でファイルシステムを共有するか、クラウドでファイルシステムを同期する必要があります。これらのオプションはいずれも、設定や操作が容易ではありません。

AWS Deadline Cloud は、E メールの*添付ファイルと同様のジョブ*の添付ファイルを含むシンプルなソリューションを提供します。ジョブアタッチメントでは、データをジョブにアタッチします。その後、Deadline Cloud はジョブデータの転送と Amazon Simple Storage Service (Amazon S3) バケットへの保存の詳細を処理します。

コンテンツ作成ワークフローは、多くの場合反復的です。つまり、ユーザーは変更されたファイルの小さなサブセットでジョブを送信します。Amazon S3 バケットはジョブアタッチメントをコンテンツアドレス可能なストレージに保存するため、各オブジェクトの名前はオブジェクトのデータのハッシュに基づいており、ディレクトリツリーのコンテンツはジョブにアタッチされたマニフェストファイル形式で保存されます。

このセクションの手順を実行する前に、以下を完了する必要があります。
+ [Deadline Cloud ファームを作成する](create-a-farm.md)
+ [Deadline Cloud ワーカーエージェントを実行する](run-worker.md)

ジョブアタッチメントを使用してジョブを実行するには、次の手順を実行します。

**Topics**
+ [ジョブアタッチメント設定をキューに追加する](#job-attachments-config)
+ [ジョブアタッチメントsimple\$1file\$1jobを使用して送信する](#submit-job-attachments)
+ [ジョブアタッチメントを Amazon S3 に保存する方法を理解する](#job-attachments-in-depth)
+ [次の手順](#run-jobs-job-attachments-next)

## ジョブアタッチメント設定をキューに追加する
<a name="job-attachments-config"></a>

キューでジョブアタッチメントを有効にするには、アカウントのキューリソースにジョブアタッチメント設定を追加します。

**ジョブアタッチメント設定をキューに追加するには**

1. 最初の CloudShell タブを選択し、次のいずれかのコマンドを入力して、ジョブアタッチメントに Amazon S3 バケットを使用します。
   + 既存のプライベート Amazon S3 バケットがない場合は、新しい S3 バケットを作成して使用できます。

     ```
     DEV_FARM_BUCKET=$(echo $DEV_FARM_NAME \
         | tr '[:upper:]' '[:lower:]')-$(xxd -l 16 -p /dev/urandom)
     if [ "$AWS_REGION" == "us-east-1" ]; then LOCATION_CONSTRAINT=
     else LOCATION_CONSTRAINT="--create-bucket-configuration \
         LocationConstraint=${AWS_REGION}"
     fi
     aws s3api create-bucket \
         $LOCATION_CONSTRAINT \
         --acl private \
         --bucket ${DEV_FARM_BUCKET}
     ```
   + プライベート Amazon S3 バケットがすでにある場合は、 をバケットの名前*`MY_BUCKET_NAME`*に置き換えて使用できます。

     ```
     DEV_FARM_BUCKET=MY_BUCKET_NAME
     ```

1. Amazon S3 バケットを作成または選択したら、バケット名を に追加`~/.bashrc`して、バケットを他のターミナルセッションで使用できるようにします。

   ```
   echo "DEV_FARM_BUCKET=$DEV_FARM_BUCKET" >> ~/.bashrc
    source ~/.bashrc
   ```

1. キューの AWS Identity and Access Management (IAM) ロールを作成します。

   ```
   aws iam create-role --role-name "${DEV_FARM_NAME}QueueRole" \
       --assume-role-policy-document \
           '{
               "Version": "2012-10-17",		 	 	 
               "Statement": [
                   {
                       "Effect": "Allow",
                       "Principal": {
                           "Service": "credentials.deadline.amazonaws.com"
                       },
                       "Action": "sts:AssumeRole"
                   }
               ]
           }'
   aws iam put-role-policy \
       --role-name "${DEV_FARM_NAME}QueueRole" \
       --policy-name S3BucketsAccess \
       --policy-document \
               '{
                   "Version": "2012-10-17",		 	 	 
                   "Statement": [
                   {
                       "Action": [
                           "s3:GetObject*",
                           "s3:GetBucket*",
                           "s3:List*",
                           "s3:DeleteObject*",
                           "s3:PutObject",
                           "s3:PutObjectLegalHold",
                           "s3:PutObjectRetention",
                           "s3:PutObjectTagging",
                           "s3:PutObjectVersionTagging",
                           "s3:Abort*"
                       ],
                       "Resource": [
                           "arn:aws:s3:::'$DEV_FARM_BUCKET'",
                           "arn:aws:s3:::'$DEV_FARM_BUCKET'/*"
                       ],
                       "Effect": "Allow"
                   }
               ]
               }'
   ```

1. キューを更新して、ジョブアタッチメント設定と IAM ロールを含めます。

   ```
   QUEUE_ROLE_ARN="arn:aws:iam::$(aws sts get-caller-identity \
           --query "Account" --output text):role/${DEV_FARM_NAME}QueueRole"
   aws deadline update-queue \
       --farm-id $DEV_FARM_ID \
       --queue-id $DEV_QUEUE_ID \
       --role-arn $QUEUE_ROLE_ARN \
       --job-attachment-settings \
           '{
               "s3BucketName": "'$DEV_FARM_BUCKET'",
               "rootPrefix": "JobAttachments"
           }'
   ```

1. キューを更新したことを確認します。

   ```
   deadline queue get
   ```

   次のような出力が表示されます。

   ```
   ...
   jobAttachmentSettings:
     s3BucketName: DEV_FARM_BUCKET
     rootPrefix: JobAttachments
   roleArn: arn:aws:iam::ACCOUNT_NUMBER:role/DeveloperFarmQueueRole
   ...
   ```

## ジョブアタッチメントsimple\$1file\$1jobを使用して送信する
<a name="submit-job-attachments"></a>

ジョブアタッチメントを使用する場合、ジョブバンドルは Deadline Cloud に、`PATH`パラメータの使用など、ジョブのデータフローを決定するのに十分な情報を提供する必要があります。の場合simple\$1file\$1job、 `template.yaml` ファイルを編集して、データフローが入力ファイルと出力ファイルにあることを Deadline Cloud に伝えます。

ジョブアタッチメント設定をキューに追加したら、ジョブアタッチメントを含む simple\$1file\$1job サンプルを送信できます。これを行うと、ログ記録とジョブ出力を表示して、ジョブアタッチメントsimple\$1file\$1jobを持つ が機能していることを確認できます。

**ジョブアタッチメントを使用して simple\$1file\$1job ジョブバンドルを送信するには**

1. 最初の CloudShell タブを選択し、 `JobBundle-Samples` ディレクトリを開きます。

1. 

   ```
   cd ~/deadline-cloud-samples/job_bundles/
   ```

1. simple\$1file\$1job をキューに送信します。アップロードを確認するプロンプトが表示されたら、 と入力します**y**。

   ```
   deadline bundle submit simple_file_job \
       -p InFile=simple_job/template.yaml \
       -p OutFile=hash-jobattachments.txt
   ```

1. ジョブアタッチメントのデータ転送セッションログ出力を表示するには、次のコマンドを実行します。

   ```
   JOB_ID=$(deadline config get defaults.job_id)
   SESSION_ID=$(aws deadline list-sessions \
           --farm-id $DEV_FARM_ID \
           --queue-id $DEV_QUEUE_ID \
           --job-id $JOB_ID \
           --query "sessions[0].sessionId" \
           --output text)
   cat ~/demoenv-logs/$DEV_QUEUE_ID/$SESSION_ID.log
   ```

1. セッション内で実行されたセッションアクションを一覧表示します。

   ```
   aws deadline list-session-actions \
       --farm-id $DEV_FARM_ID \
       --queue-id $DEV_QUEUE_ID \
       --job-id $JOB_ID \
       --session-id $SESSION_ID
   ```

   次のような出力が表示されます。

   ```
   {
       "sessionactions": [
           {
               "sessionActionId": "sessionaction-123-0",
               "status": "SUCCEEDED",
               "startedAt": "<timestamp>",
               "endedAt": "<timestamp>",
               "progressPercent": 100.0,
               "definition": {
                   "syncInputJobAttachments": {}
               }
           },
           {
               "sessionActionId": "sessionaction-123-1",
               "status": "SUCCEEDED",
               "startedAt": "<timestamp>",
               "endedAt": "<timestamp>",
               "progressPercent": 100.0,
               "definition": {
                   "taskRun": {
                       "taskId": "task-abc-0",
                       "stepId": "step-def"
                   }
               }
           }
       ]
   }
   ```

   最初のセッションアクションは入力ジョブアタッチメントをダウンロードし、2 番目のアクションは前のステップのようにタスクを実行し、出力ジョブアタッチメントをアップロードします。

1. 出力ディレクトリを一覧表示します。

   ```
   ls *.txt
   ```

   などの出力は ディレクトリに`hash.txt`存在しますが、ジョブの出力ファイルがまだダウンロードされていないため`hash-jobattachments.txt`、存在しません。

1. 最新のジョブから出力をダウンロードします。

   ```
   deadline job download-output
   ```

1. ダウンロードしたファイルの出力を表示します。

   ```
   cat hash-jobattachments.txt
   ```

   次のような出力が表示されます。

   ```
   eaa2df5d34b54be5ac34c56a24a8c237b8487231a607eaf530a04d76b89c9cd3  /tmp/openjd/session-123/assetroot-abc/simple_job/template.yaml
   ```

## ジョブアタッチメントを Amazon S3 に保存する方法を理解する
<a name="job-attachments-in-depth"></a>

 AWS Command Line Interface (AWS CLI) を使用して、Amazon S3 バケットに保存されているジョブアタッチメントのデータをアップロードまたはダウンロードできます。Deadline Cloud が Amazon S3 にジョブアタッチメントを保存する方法を理解すると、ワークロードとパイプラインの統合を開発するのに役立ちます。

**Deadline Cloud ジョブアタッチメントが Amazon S3 にどのように保存されているかを調べるには**

1. 最初の CloudShell タブを選択し、ジョブバンドルサンプルディレクトリを開きます。

   ```
   cd ~/deadline-cloud-samples/job_bundles/
   ```

1. ジョブのプロパティを検査します。

   ```
   deadline job get
   ```

   次のような出力が表示されます。

   ```
   parameters:
     Message:
       string: Welcome to AWS Deadline Cloud!
     InFile:
       path: /home/cloudshell-user/deadline-cloud-samples/job_bundles/simple_job/template.yaml
     OutFile:
       path: /home/cloudshell-user/deadline-cloud-samples/job_bundles/hash-jobattachments.txt
   attachments:
     manifests:
     - rootPath: /home/cloudshell-user/deadline-cloud-samples/job_bundles/
       rootPathFormat: posix
       outputRelativeDirectories:
       - .
       inputManifestPath: farm-3040c59a5b9943d58052c29d907a645d/queue-cde9977c9f4d4018a1d85f3e6c1a4e6e/Inputs/f46af01ca8904cd8b514586671c79303/0d69cd94523ba617c731f29c019d16e8_input.xxh128
       inputManifestHash: f95ef91b5dab1fc1341b75637fe987ee
     fileSystem: COPIED
   ```

   添付ファイルフィールドには、ジョブが実行時に使用する入出力データパスを記述するマニフェスト構造のリストが含まれています。ジョブを送信したマシンのローカルディレクトリパス`rootPath`を確認するには、「」を参照してください。マニフェストファイルを含む Amazon S3 オブジェクトサフィックスを表示するには、 を確認します`inputManifestFile`。マニフェストファイルには、ジョブの入力データのディレクトリツリースナップショットのメタデータが含まれています。

1. Amazon S3 マニフェストオブジェクトをプリティプリントして、ジョブの入力ディレクトリ構造を確認します。

   ```
   MANIFEST_SUFFIX=$(aws deadline get-job \
        --farm-id $DEV_FARM_ID \
        --queue-id $DEV_QUEUE_ID \
        --job-id $JOB_ID \
        --query "attachments.manifests[0].inputManifestPath" \
        --output text)
    aws s3 cp s3://$DEV_FARM_BUCKET/JobAttachments/Manifests/$MANIFEST_SUFFIX - | jq .
   ```

   次のような出力が表示されます。

   ```
   {
        "hashAlg": "xxh128",
        "manifestVersion": "2023-03-03",
        "paths": [
        {
            "hash": "2ec297b04c59c4741ed97ac8fb83080c",
            "mtime": 1698186190000000,
            "path": "simple_job/template.yaml",
            "size": 445
        }
        ],
        "totalSize": 445
    }
   ```

1. 出力ジョブアタッチメントのマニフェストを保持する Amazon S3 プレフィックスを作成し、その下にオブジェクトを一覧表示します。

   ```
   SESSION_ACTION=$(aws deadline list-session-actions \
       --farm-id $DEV_FARM_ID \
       --queue-id $DEV_QUEUE_ID \
       --job-id $JOB_ID \
       --session-id $SESSION_ID \
       --query "sessionActions[?definition.taskRun != null] | [0]")
   STEP_ID=$(echo $SESSION_ACTION | jq -r .definition.taskRun.stepId)
   TASK_ID=$(echo $SESSION_ACTION | jq -r .definition.taskRun.taskId)
   TASK_OUTPUT_PREFIX=JobAttachments/Manifests/$DEV_FARM_ID/$DEV_QUEUE_ID/$JOB_ID/$STEP_ID/$TASK_ID/
   aws s3api list-objects-v2 --bucket $DEV_FARM_BUCKET --prefix $TASK_OUTPUT_PREFIX
   ```

   出力ジョブアタッチメントは、ジョブリソースから直接参照されるのではなく、ファームリソース ID に基づいて Amazon S3 バケットに配置されます。 IDs

1. 特定のセッションアクション ID の最新マニフェストオブジェクトキーを取得し、マニフェストオブジェクトをプリティープリントします。

   ```
   SESSION_ACTION_ID=$(echo $SESSION_ACTION | jq -r .sessionActionId)
    MANIFEST_KEY=$(aws s3api list-objects-v2 \
        --bucket $DEV_FARM_BUCKET \
        --prefix $TASK_OUTPUT_PREFIX \
        --query "Contents[*].Key" --output text \
        | grep $SESSION_ACTION_ID \
        | sort | tail -1)
    MANIFEST_OBJECT=$(aws s3 cp s3://$DEV_FARM_BUCKET/$MANIFEST_KEY -)
    echo $MANIFEST_OBJECT | jq .
   ```

   次のようなファイルのプロパティ`hash-jobattachments.txt`が出力に表示されます。

   ```
   {
        "hashAlg": "xxh128",
        "manifestVersion": "2023-03-03",
        "paths": [
        {
            "hash": "f60b8e7d0fabf7214ba0b6822e82e08b",
            "mtime": 1698785252554950,
            "path": "hash-jobattachments.txt",
            "size": 182
        }
        ],
        "totalSize": 182
    }
   ```

   ジョブにはタスク実行ごとに 1 つのマニフェストオブジェクトしかありませんが、一般的にタスク実行ごとにより多くのオブジェクトを持つことができます。

1. `Data` プレフィックスの下にコンテンツアドレス可能な Amazon S3 ストレージ出力を表示します。

   ```
    FILE_HASH=$(echo $MANIFEST_OBJECT | jq -r .paths[0].hash)
    FILE_PATH=$(echo $MANIFEST_OBJECT | jq -r .paths[0].path)
    aws s3 cp s3://$DEV_FARM_BUCKET/JobAttachments/Data/$FILE_HASH -
   ```

   次のような出力が表示されます。

   ```
   eaa2df5d34b54be5ac34c56a24a8c237b8487231a607eaf530a04d76b89c9cd3  /tmp/openjd/session-123/assetroot-abc/simple_job/template.yaml
   ```

## 次の手順
<a name="run-jobs-job-attachments-next"></a>

Deadline Cloud CLI を使用して添付ファイルを含むジョブを送信する方法を学習したら、以下を確認できます。
+ [Deadline Cloud で送信する](submit-a-job.md) ワーカーホストで OpenJD バンドルを使用してジョブを実行する方法について説明します。
+ [Deadline Cloud のデベロッパーファームにサービスマネージドフリートを追加する](service-managed-fleet.md) は、Deadline Cloud によって管理されるホストでジョブを実行します。
+ [Deadline Cloud でファームリソースをクリーンアップする](cleaning-up.md) このチュートリアルで使用したリソースをシャットダウンするには、 を使用します。

# Deadline Cloud のデベロッパーファームにサービスマネージドフリートを追加する
<a name="service-managed-fleet"></a>

AWS CloudShell は、大規模なワークロードをテストするのに十分なコンピューティング容量を提供しません。また、複数のワーカーホストにタスクを分散するジョブで動作するように設定されていません。

CloudShell を使用する代わりに、Auto Scaling サービスマネージドフリート (SMF) をデベロッパーファームに追加できます。SMF は、大規模なワークロードに十分なコンピューティング容量を提供し、複数のワーカーホストにジョブタスクを分散する必要があるジョブを処理できます。

SMF を追加する前に、Deadline Cloud ファーム、キュー、フリートを設定する必要があります。「[Deadline Cloud ファームを作成する](create-a-farm.md)」を参照してください。

**デベロッパーファームにサービスマネージドフリートを追加するには**

1. 最初の AWS CloudShell タブを選択し、サービスマネージドフリートを作成し、そのフリート ID を に追加します`.bashrc`。このアクションにより、他のターミナルセッションで使用できます。

   ```
   FLEET_ROLE_ARN="arn:aws:iam::$(aws sts get-caller-identity \
            --query "Account" --output text):role/${DEV_FARM_NAME}FleetRole"
    aws deadline create-fleet \
        --farm-id $DEV_FARM_ID \
        --display-name "$DEV_FARM_NAME SMF" \
        --role-arn $FLEET_ROLE_ARN \
        --max-worker-count 5 \
        --configuration \
            '{
                "serviceManagedEc2": {
                    "instanceCapabilities": {
                        "vCpuCount": {
                            "min": 2,
                            "max": 4
                        },
                        "memoryMiB": {
                            "min": 512
                        },
                        "osFamily": "linux",
                        "cpuArchitectureType": "x86_64"
                    },
                    "instanceMarketOptions": {
                        "type": "spot"
                    }
                }
            }'
   
    echo "DEV_SMF_ID=$(aws deadline list-fleets \
            --farm-id $DEV_FARM_ID \
            --query "fleets[?displayName=='$DEV_FARM_NAME SMF'].fleetId \
            | [0]" --output text)" >> ~/.bashrc
    source ~/.bashrc
   ```

1. SMF をキューに関連付けます。

   ```
   aws deadline create-queue-fleet-association \
        --farm-id $DEV_FARM_ID \
        --queue-id $DEV_QUEUE_ID \
        --fleet-id $DEV_SMF_ID
   ```

1. キューsimple\$1file\$1jobに送信します。アップロードを確認するプロンプトが表示されたら、 と入力します**y**。

   ```
   deadline bundle submit simple_file_job \
       -p InFile=simple_job/template.yaml \
       -p OutFile=hash-jobattachments.txt
   ```

1. SMF が正しく動作していることを確認します。

   ```
   deadline fleet get
   ```
   + ワーカーの起動には数分かかる場合があります。フリートが実行されていることがわかるまで、 `deadline fleet get` コマンドを繰り返します。
   + サービスマネージドフリート`queueFleetAssociationsStatus`の は になります`ACTIVE`。
   + SMF `autoScalingStatus`は から `GROWING`に変更されます`STEADY`。

   ステータスは次のようになります。

   ```
   fleetId: fleet-2cc78e0dd3f04d1db427e7dc1d51ea44
   farmId: farm-63ee8d77cdab4a578b685be8c5561c4a
   displayName: DeveloperFarm SMF
   description: ''
   status: ACTIVE
   autoScalingStatus: STEADY
   targetWorkerCount: 0
   workerCount: 0
   minWorkerCount: 0
   maxWorkerCount: 5
   ```

1. 送信したジョブのログを表示します。このログは、CloudShell ファイルシステムではなく、Amazon CloudWatch Logs のログに保存されます。

   ```
    JOB_ID=$(deadline config get defaults.job_id)
    SESSION_ID=$(aws deadline list-sessions \
            --farm-id $DEV_FARM_ID \
            --queue-id $DEV_QUEUE_ID \
            --job-id $JOB_ID \
            --query "sessions[0].sessionId" \
            --output text)
    aws logs tail /aws/deadline/$DEV_FARM_ID/$DEV_QUEUE_ID \
        --log-stream-names $SESSION_ID
   ```

## 次の手順
<a name="service-managed-fleet-next"></a>

サービスマネージドフリートを作成してテストしたら、不要な料金が発生しないように、作成したリソースを削除する必要があります。
+ [Deadline Cloud でファームリソースをクリーンアップする](cleaning-up.md) このチュートリアルで使用したリソースをシャットダウンするには、 を使用します。

# Deadline Cloud でファームリソースをクリーンアップする
<a name="cleaning-up"></a>

新しいワークロードとパイプライン統合を開発してテストするには、このチュートリアル用に作成した Deadline Cloud 開発者ファームを引き続き使用できます。開発者ファームが不要になった場合は、ファーム、フリート、キュー、 AWS Identity and Access Management (IAM) ロール、ログなどのリソースを Amazon CloudWatch Logs で削除できます。これらのリソースを削除した後、リソースを使用するにはチュートリアルを再度開始する必要があります。詳細については、「[Deadline Cloud リソースの開始方法](getting-started.md)」を参照してください。

**デベロッパーファームリソースをクリーンアップするには**

1. 最初の CloudShell タブを選択し、キューとフリートの関連付けをすべて停止します。

   ```
    FLEETS=$(aws deadline list-queue-fleet-associations \
            --farm-id $DEV_FARM_ID \
            --queue-id $DEV_QUEUE_ID \
            --query "queueFleetAssociations[].fleetId" \
            --output text)
    for FLEET_ID in $FLEETS; do
        aws deadline update-queue-fleet-association \
            --farm-id $DEV_FARM_ID \
            --queue-id $DEV_QUEUE_ID \
            --fleet-id $FLEET_ID \
            --status STOP_SCHEDULING_AND_CANCEL_TASKS
    done
   ```

1. キューフリートの関連付けを一覧表示します。

   ```
   aws deadline list-queue-fleet-associations \
        --farm-id $DEV_FARM_ID \
        --queue-id $DEV_QUEUE_ID
   ```

   出力が を報告するまでコマンドを再実行する必要がある場合があります。`"status": "STOPPED"`次のステップに進むことができます。このプロセスは完了までに数分かかることがあります。

   ```
   {
       "queueFleetAssociations": [
           {
               "queueId": "queue-abcdefgh01234567890123456789012id",
               "fleetId": "fleet-abcdefgh01234567890123456789012id",
               "status": "STOPPED",
               "createdAt": "2023-11-21T20:49:19+00:00",
               "createdBy": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName",
               "updatedAt": "2023-11-21T20:49:38+00:00",
               "updatedBy": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName"
           },
           {
               "queueId": "queue-abcdefgh01234567890123456789012id",
               "fleetId": "fleet-abcdefgh01234567890123456789012id",
               "status": "STOPPED",
               "createdAt": "2023-11-21T20:32:06+00:00",
               "createdBy": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName",
               "updatedAt": "2023-11-21T20:49:39+00:00",
               "updatedBy": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/MySessionName"
           }
       ]
   }
   ```

1. キューのすべてのキューフリートの関連付けを削除します。

   ```
   for FLEET_ID in $FLEETS; do
        aws deadline delete-queue-fleet-association \
            --farm-id $DEV_FARM_ID \
            --queue-id $DEV_QUEUE_ID \
            --fleet-id $FLEET_ID
    done
   ```

1. キューに関連付けられているすべてのフリートを削除します。

   ```
   for FLEET_ID in $FLEETS; do
        aws deadline delete-fleet \
            --farm-id $DEV_FARM_ID \
            --fleet-id $FLEET_ID
    done
   ```

1. キューを削除します。

   ```
   aws deadline delete-queue \
        --farm-id $DEV_FARM_ID \
        --queue-id $DEV_QUEUE_ID
   ```

1. ファームを削除します。

   ```
   aws deadline delete-farm \
        --farm-id $DEV_FARM_ID
   ```

1. ファームの他の AWS リソースを削除します。

   1. フリート AWS Identity and Access Management (IAM) ロールを削除します。

      ```
      aws iam delete-role-policy \
           --role-name "${DEV_FARM_NAME}FleetRole" \
           --policy-name WorkerPermissions
      aws iam delete-role \
           --role-name "${DEV_FARM_NAME}FleetRole"
      ```

   1. キューの IAM ロールを削除します。

      ```
      aws iam delete-role-policy \
           --role-name "${DEV_FARM_NAME}QueueRole" \
           --policy-name S3BucketsAccess
      aws iam delete-role \
           --role-name "${DEV_FARM_NAME}QueueRole"
      ```

   1. Amazon CloudWatch Logs ロググループを削除します。各キューとフリートには独自のロググループがあります。

      ```
      aws logs delete-log-group \
           --log-group-name "/aws/deadline/$DEV_FARM_ID/$DEV_QUEUE_ID"
      aws logs delete-log-group \
           --log-group-name "/aws/deadline/$DEV_FARM_ID/$DEV_CMF_ID"
      aws logs delete-log-group \
           --log-group-name "/aws/deadline/$DEV_FARM_ID/$DEV_SMF_ID"
      ```