

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用截止日期云提交
<a name="submit-a-job"></a>

要在工作服务器主机上运行 Deadline Cloud 作业，您需要创建并使用 OpenJD 作业描述 (OpenJD) 任务包来配置作业。捆绑包配置作业，例如，通过指定作业的输入文件以及将作业输出写入何处。本主题包括配置任务捆绑包的方法示例。

在按照本节中的步骤进行操作之前，必须完成以下操作：
+ [创建截止日期云场](create-a-farm.md)
+ [运行 Deadline 云端工作者代理](run-worker.md)

要使用 De AWS adline Cloud 运行作业，请按以下步骤操作。使用第一个 AWS CloudShell 选项卡向您的开发者群提交作业。使用第二个 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。

**将simple\$1job样本提交到 Deadline Cloud**

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. 选择第二个 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_file_job`。`simple_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)关闭您在本教程中使用的资源。