

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立截止日期雲端陣列
<a name="create-a-farm"></a>

若要在 AWS 截止日期雲端中建立開發人員陣列和佇列資源，請使用 AWS Command Line Interface (AWS CLI)，如下列程序所示。您也將建立 AWS Identity and Access Management (IAM) 角色和客戶受管機群 (CMF)，並將機群與您的佇列建立關聯。然後，您可以設定 ， AWS CLI 並確認陣列已設定並依指定運作。

您可以使用此陣列來探索截止日期雲端的功能，然後開發和測試新的工作負載、自訂和管道整合。

**建立陣列**

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. 安裝截止日期雲端命令列界面。

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

建立陣列後，您可以在機群中的主機上執行截止日期雲端工作者代理程式，以處理任務。請參閱[執行截止日期雲端工作者代理程式](run-worker.md)。