

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

# 创建截止日期云场
<a name="create-a-farm"></a>

要在 De AWS adline 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 云端工作者代理](run-worker.md)。