

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

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

# 「部署到 Amazon ECS」動作 YAML
<a name="deploy-action-ref-ecs"></a>

以下是**部署至 Amazon ECS **動作的 YAML 定義。若要了解如何使用此動作，請參閱 [使用工作流程部署至 Amazon ECS](deploy-action-ecs.md)。

此動作定義以區段形式存在於更廣泛的工作流程定義檔案中。如需有關此檔案的詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

**注意**  
下列大多數 YAML 屬性在視覺化編輯器中都有對應的 UI 元素。若要查詢 UI 元素，請使用 **Ctrl\$1F**。 元素將與其相關聯的 YAML 屬性一起列出。

```
# The workflow definition starts here.
# See 最上層屬性 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.   
  ECSDeployAction\$1nn: 
    Identifier: aws/ecs-deploy@v1
    DependsOn:
      - build-action
    Compute:  
      Type: EC2 | Lambda
      Fleet: fleet-name
    Timeout: timeout-minutes
    Environment:
      Name: environment-name
      Connections:
        - Name: account-connection-name
          Role: iam-role-name
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - task-definition-artifact
    Configuration: 
      region: us-east-1 
      cluster: ecs-cluster
      service: ecs-service
      task-definition: task-definition-path
      force-new-deployment: false|true
      codedeploy-appspec: app-spec-file-path
      codedeploy-application: application-name
      codedeploy-deployment-group: deployment-group-name
      codedeploy-deployment-description: deployment-description
```

## ECSDeployAction
<a name="deploy.action.ecs.name"></a>

(必要)

指定動作的名稱。工作流程中的所有動作名稱都必須是唯一的。動作名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您無法使用引號在動作名稱中啟用特殊字元和空格。

預設：`ECSDeployAction_nn`。

對應的 UI：組態索引標籤/**動作顯示名稱**

## Identifier
<a name="deploy.action.ecs.identifier"></a>

(*ECSDeployAction*/**Identifier**)

(必要)

識別 動作。除非您想要變更版本，否則請勿變更此屬性。如需詳細資訊，請參閱[指定要使用的動作版本](workflows-action-versions.md)。

預設：`aws/ecs-deploy@v1`。

對應的 UI：工作流程圖表/ECSDeployAction\$1nn/**aws/ecs-deploy@v1** 標籤

## DependsOn
<a name="deploy.action.ecs.dependson"></a>

(*ECSDeployAction*/**DependsOn**)

(選用)

指定必須成功執行的動作、動作群組或閘道，才能執行此動作。

如需 'depends on' 功能的詳細資訊，請參閱 [定序動作](workflows-depends-on.md)。

對應的 UI：輸入索引標籤/**取決於 - 選用**

## Compute
<a name="deploy.action.ecs.computename"></a>

(*ECSDeployAction*/**Compute**)

(選用)

用來執行工作流程動作的運算引擎。您可以在工作流程層級或動作層級指定運算，但不能同時指定兩者。在工作流程層級指定時，運算組態會套用至工作流程中定義的所有動作。在工作流程層級，您也可以在同一個執行個體上執行多個動作。如需詳細資訊，請參閱[跨動作共用運算](compute-sharing.md)。

對應的 UI：*無*

## Type
<a name="deploy.action.ecs.computetype"></a>

(*ECSDeployAction*/Compute/**Type**)

（如果[Compute](#deploy.action.ecs.computename)包含 則為必要）

運算引擎的類型。您可以使用下列其中一個值：
+ **EC2** （視覺化編輯器） 或 `EC2`(YAML 編輯器）

  最佳化動作執行期間的彈性。
+ **Lambda** （視覺化編輯器） 或 `Lambda`(YAML 編輯器）

  最佳化的動作啟動速度。

如需運算類型的更多相關資訊，請參閱[運算類型](workflows-working-compute.md#compute.types)。

對應的 UI：組態索引標籤/進階 - 選用/**運算類型**

## Fleet
<a name="deploy.action.ecs.computefleet"></a>

(*ECSDeployAction*/Compute/**Fleet**)

(選用)

指定將執行工作流程或工作流程動作的機器或機群。使用隨需機群時，當動作開始時，工作流程會佈建所需的資源，並在動作完成時銷毀機器。隨需機群的範例：`Linux.x86-64.Large`、`Linux.x86-64.XLarge`。如需隨需機群的詳細資訊，請參閱 [隨需機群屬性](workflows-working-compute.md#compute.on-demand)。

使用佈建機群，您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態，準備好立即處理動作。如需佈建機群的詳細資訊，請參閱 [佈建的機群屬性](workflows-working-compute.md#compute.provisioned-fleets)。

如果省略 `Fleet` ，則預設值為 `Linux.x86-64.Large`。

對應的 UI：組態索引標籤/進階 - 選用/**運算機群**

## Timeout
<a name="deploy.action.ecs.timeout"></a>

(*ECSDeployAction*/**Timeout**)

(選用)

指定動作在 CodeCatalyst 結束動作之前可執行的時間，以分鐘為單位 (YAML 編輯器） 或小時和分鐘為單位。最小值為 5 分鐘，最大值如 中所述[CodeCatalyst 中工作流程的配額](workflows-quotas.md)。預設逾時與最大逾時相同。

對應的 UI：組態索引標籤/**逾時 - 選用 **

## Environment
<a name="deploy.action.ecs.environment"></a>

(*ECSDeployAction*/**Environment**)

(必要)

指定要與 動作搭配使用的 CodeCatalyst 環境。動作會連線至所選環境中指定的 AWS 帳戶 和選用 Amazon VPC。動作會使用環境中指定的預設 IAM 角色來連線至 AWS 帳戶，並使用 [Amazon VPC 連線](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色來連線至 Amazon VPC。

**注意**  
如果預設 IAM 角色沒有 動作所需的許可，您可以將動作設定為使用不同的角色。如需詳細資訊，請參閱[變更 動作的 IAM 角色](deploy-environments-switch-role.md)。

如需環境的詳細資訊，請參閱 [部署至 AWS 帳戶 和 VPCs](deploy-environments.md)和 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：組態索引標籤/**環境**

## Name
<a name="deploy.action.ecs.environment.name"></a>

(*ECSDeployAction*/Environment/**Name**)

（如果[Environment](#deploy.action.ecs.environment)包含 則為必要）

指定您要與動作建立關聯的現有環境名稱。

對應的 UI：組態索引標籤/**環境**

## Connections
<a name="deploy.action.ecs.environment.connections"></a>

(*ECSDeployAction*/Environment/**Connections**)

（動作的較新版本為選用；較舊版本為必要）

指定要與動作建立關聯的帳戶連線。您可以在 下指定最多一個帳戶連線`Environment`。

如果您未指定帳戶連線：
+ 動作會使用 CodeCatalyst 主控台中環境指定的 AWS 帳戶 連線和預設 IAM 角色。如需將帳戶連線和預設 IAM 角色新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。
+ 預設 IAM 角色必須包含 動作所需的政策和許可。若要判斷這些政策和許可是什麼，請參閱動作 YAML 定義文件中**角色**屬性的描述。

如需帳戶連線的詳細資訊，請參閱 [允許存取已連線 AWS 的資源 AWS 帳戶](ipa-connect-account.md)。如需將帳戶連線新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**AWS account connection**

## Name
<a name="deploy.action.ecs.environment.connections.name"></a>

(*ECSDeployAction*/Environment/Connections/**Name**)

（如果[Connections](#deploy.action.ecs.environment.connections)包含 則為必要）

指定帳戶連線的名稱。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What*我的環境*是什麼？/三個點選單/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/ **AWS 帳戶連線**

## Role
<a name="deploy.action.ecs.environment.connections.role"></a>

(*ECSDeployAction*/Environment/Connections/**Role**)

（如果[Connections](#deploy.action.ecs.environment.connections)包含 則為必要）

指定**部署至 Amazon ECS **動作用來存取的 IAM 角色名稱 AWS。請確定您已[將角色新增至 CodeCatalyst 空間](ipa-connect-account-addroles.md)，且該角色包含下列政策。

如果您未指定 IAM 角色，則動作會使用 CodeCatalyst 主控台中[環境中](deploy-environments.md)列出的預設 IAM 角色。如果您在環境中使用預設角色，請確定其具有下列政策。
+ 下列許可政策：
**警告**  
將許可限制為下列政策中顯示的許可。使用具有更廣泛許可的角色可能會帶來安全風險。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [{
      "Action":[
        "ecs:DescribeServices",
        "ecs:CreateTaskSet",
        "ecs:DeleteTaskSet",
        "ecs:ListClusters",
        "ecs:RegisterTaskDefinition",
        "ecs:UpdateServicePrimaryTaskSet",
        "ecs:UpdateService",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:DescribeListeners",
        "elasticloadbalancing:ModifyListener",
        "elasticloadbalancing:DescribeRules",
        "elasticloadbalancing:ModifyRule",
        "lambda:InvokeFunction",
        "lambda:ListFunctions",
        "cloudwatch:DescribeAlarms",
        "sns:Publish",
        "sns:ListTopics", 
        "s3:GetObject",
        "s3:GetObjectVersion",
        "codedeploy:CreateApplication", 
        "codedeploy:CreateDeployment", 
        "codedeploy:CreateDeploymentGroup", 
        "codedeploy:GetApplication", 
        "codedeploy:GetDeployment", 
        "codedeploy:GetDeploymentGroup", 
        "codedeploy:ListApplications", 
        "codedeploy:ListDeploymentGroups", 
        "codedeploy:ListDeployments", 
        "codedeploy:StopDeployment", 
        "codedeploy:GetDeploymentTarget", 
        "codedeploy:ListDeploymentTargets", 
        "codedeploy:GetDeploymentConfig", 
        "codedeploy:GetApplicationRevision", 
        "codedeploy:RegisterApplicationRevision", 
        "codedeploy:BatchGetApplicationRevisions", 
        "codedeploy:BatchGetDeploymentGroups", 
        "codedeploy:BatchGetDeployments", 
        "codedeploy:BatchGetApplications", 
        "codedeploy:ListApplicationRevisions", 
        "codedeploy:ListDeploymentConfigs", 
        "codedeploy:ContinueDeployment"           
     ],
     "Resource":"*",
     "Effect":"Allow"
  },{"Action":[
        "iam:PassRole"
     ],
     "Effect":"Allow",
     "Resource":"*",
     "Condition":{"StringLike":{"iam:PassedToService":[
              "ecs-tasks.amazonaws.com",
              "codedeploy.amazonaws.com"
           ]
        }
     }
  }]
  }
  ```

------
**注意**  
第一次使用角色時，請在資源政策陳述式中使用下列萬用字元，然後在可用的資源名稱縮小政策範圍。  

  ```
  "Resource": "*"
  ```
+ 下列自訂信任政策：

**注意**  
如有需要，您可以使用 `CodeCatalystWorkflowDevelopmentRole-spaceName`角色搭配此動作。如需有關此角色的詳細資訊，請參閱 [為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有可能造成安全風險的完整存取許可。我們建議您只在安全性較少的教學課程和案例中使用此角色。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What*我的環境*是什麼？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**Role**

## Inputs
<a name="deploy.action.ecs.inputs"></a>

(*ECSDeployAction*/**Inputs**)

(選用)

`Inputs` 區段定義工作流程執行期間 `ECSDeployAction`所需的資料。

**注意**  
每個**部署到 Amazon ECS **動作只允許一個輸入 （來源或成品）。

對應的 UI：**輸入**索引標籤

## Sources
<a name="deploy.action.ecs.inputs.sources"></a>

(*ECSDeployAction*/Inputs/**Sources**)

（如果您的任務定義檔案存放在來源儲存庫中，則為必要項目）

如果您的任務定義檔案存放在來源儲存庫中，請指定該來源儲存庫的標籤。目前，唯一支援的標籤是 `WorkflowSource`。

如果您的任務定義檔案不包含在來源儲存庫中，它必須位於另一個動作所產生的成品中。

如需來源的詳細資訊，請參閱 [將來源儲存庫連線至工作流程](workflows-sources.md)。

對應的 UI：輸入索引標籤/**來源 - 選用**

## Artifacts - input
<a name="deploy.action.ecs.inputs.artifacts"></a>

(*ECSDeployAction*/Inputs/**Artifacts**)

（如果您的任務定義檔案存放在先前動作的[輸出成品](workflows-working-artifacts-output.md)中，則為必要）

如果您要部署的任務定義檔案包含在先前動作產生的成品中，請在此處指定該成品。如果您的任務定義檔案不包含在成品中，它必須位於您的來源儲存庫中。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：組態索引標籤/**成品 - 選用**

## Configuration
<a name="deploy.action.ecs.configuration"></a>

(*ECSDeployAction*/**Configuration**)

(必要)

您可以在此區段定義 動作的組態屬性。

對應的 UI：**組態**索引標籤

## region
<a name="deploy.action.ecs.region"></a>

(Configuration/**region**)

(必要)

指定 Amazon ECS 叢集和服務所在的 AWS 區域。如需區域代碼的清單，請參閱《》中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)*AWS 一般參考*。

對應的 UI：組態索引標籤/**區域**

## cluster
<a name="deploy.action.ecs.cluster"></a>

(*ECSDeployAction*/Configuration/**cluster**)

(必要)

指定現有 Amazon ECS 叢集的名稱。**部署至 Amazon ECS** 動作會將您的容器化應用程式做為任務部署至此叢集。如需 Amazon ECS 叢集的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[叢集](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-clusters)。

對應的 UI：組態索引標籤/**叢集**

## service
<a name="deploy.action.ecs.service"></a>

(*ECSDeployAction*/Configuration/**service**)

(必要)

指定將執行個體化任務定義檔案的現有 Amazon ECS 服務名稱。此服務必須位於 `cluster` 欄位中指定的叢集下。如需 Amazon ECS 服務的詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html) *服務*。

對應的 UI：組態索引標籤/**服務**

## task-definition
<a name="deploy.action.ecs.task.definition"></a>

(*ECSDeployAction*/Configuration/**task-definition**)

(必要)

指定現有任務定義檔案的路徑。如果檔案位於您的來源儲存庫中，路徑會與來源儲存庫根資料夾相對。如果您的檔案位於先前工作流程動作的成品中，則路徑會與成品根資料夾相對。如需任務定義檔案的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[任務定義](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html#welcome-task-definitions)。

對應的 UI：組態索引標籤/**任務定義**

## force-new-deployment
<a name="deploy.action.ecs.forcenewdeployment"></a>

(*ECSDeployAction*/Configuration/**force-new-deployment**)

(必要)

如果啟用，Amazon ECS 服務可以在不變更服務定義的情況下啟動新的部署。強制部署會導致服務停止所有目前正在執行的任務，並啟動新任務。如需強制新部署的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[更新服務](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-service.html)。

預設：`false`

對應的 UI：組態索引標籤/**強制新部署服務**

## codedeploy-appspec
<a name="deploy.action.ecs.codedeploy.appspec"></a>

(*ECSDeployAction*/Configuration/**codedeploy-appspec**)

（如果您已將 Amazon ECS 服務設定為使用藍/綠部署，則此為必要項目，否則請省略）

指定現有 CodeDeploy 應用程式規格 (AppSpec) 檔案的名稱和路徑。此檔案必須位於 CodeCatalyst 來源儲存庫的根目錄。如需 AppSpec 檔案的詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*》中的 [CodeDeploy 應用程式規格 (AppSpec) 檔案](https://docs.aws.amazon.com/codedeploy/latest/userguide/application-specification-files.html)。

**注意**  
只有在您已將 Amazon ECS 服務設定為執行藍/綠部署時，才提供 CodeDeploy 資訊。對於滾動更新部署 （預設），省略 CodeDeploy 資訊。如需 Amazon ECS 部署的詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 部署類型](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html)。 **

**注意**  
**CodeDeploy** 欄位可能會隱藏在視覺化編輯器中。若要讓它們出現，請參閱 [為什麼視覺化編輯器中缺少 CodeDeploy 欄位？](troubleshooting-workflows.md#troubleshooting-workflows-codedeploy)。

對應的 UI：組態索引標籤/**CodeDeploy AppSpec**

## codedeploy-application
<a name="deploy.action.ecs.codedeploy.application"></a>

(*ECSDeployAction*/Configuration/**codedeploy-application**)

（如果`codedeploy-appspec`包含 則為必要）

指定現有 CodeDeploy 應用程式的名稱。如需 CodeDeploy 應用程式的詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*》[中的在 CodeDeploy 中使用應用程式](https://docs.aws.amazon.com/codedeploy/latest/userguide/applications.html)。

對應的 UI：組態索引標籤/**CodeDeploy 應用程式**

## codedeploy-deployment-group
<a name="deploy.action.ecs.codedeploy.deploymentgroup"></a>

(*ECSDeployAction*/Configuration/**codedeploy-deployment-group**)

（如果`codedeploy-appspec`包含 則為必要）

指定現有 CodeDeploy 部署群組的名稱。如需 CodeDeploy 部署群組的詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*[》中的在 CodeDeploy 中使用部署群組](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html)。

對應的 UI：組態索引標籤/**CodeDeploy 部署群組**

## codedeploy-deployment-description
<a name="deploy.action.ecs.codedeploy.deploymentdescription"></a>

(*ECSDeployAction*/Configuration/**codedeploy-deployment-description**)

(選用)

指定此動作將建立之部署的描述。如需詳細資訊，請參閱*AWS CodeDeploy 《 使用者指南*》中的[在 CodeDeploy 中使用部署](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployments.html)。

對應的 UI：組態索引標籤/**CodeDeploy 部署描述**