「部署到 AmazonECS」行動 YAML - Amazon CodeCatalyst

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

「部署到 AmazonECS」行動 YAML

以下是「部署到 Amazon」ECS 動作的YAML定義。若要瞭解如何使用此動作,請參閱ECS 使用工作流程部署至 Amazon

此動作定義存在於更廣泛的工作流程定義檔案中的區段。如需有關此檔案的詳細資訊,請參閱工作流程YAML定義

注意

接下來的大多數YAML屬性在可視化編輯器中都具有相應的 UI 元素。若要查詢 UI 元素,請使用 Ctrl+F。 元素將與其關聯的YAML屬性一起列示。

# The workflow definition starts here. # See 頂層屬性 for details. Name: MyWorkflow SchemaVersion: 1.0 Actions: # The action definition starts here. ECSDeployAction_nn: 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-z、A-Z、0-9)、連字號 (-) 和底線 (_)。不允許空格。您無法使用引號來啟用動作名稱中的特殊字元和空格。

預設:ECSDeployAction_nn

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

Identifier

(ECSDeployAction/Identifier)

(必要)

識別動作。除非您要變更版本,否則請勿變更此屬性。如需詳細資訊,請參閱 指定要使用的動作版本

預設:aws/ecs-deploy@v1

對應的使用者介面:工作流程圖/ECSDeployAction_nn/ aws/EC-部署@v1 標籤

DependsOn

(ECSDeployAction/DependsOn)

(選用)

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

如需「依賴」功能的詳細資訊,請參閱。定序動作

對應的用戶界面:輸入選項卡/取決於- 可選

Compute

(ECSDeployAction/Compute)

(選用)

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

對應的用戶界面:

Type

(ECSDeployAction/Compute/Type)

(如果包含Compute,則為必填)

運算引擎的類型。您可以使用下列其中一個值:

  • EC2(可視化編輯器)或EC2(YAML編輯器)

    優化了動作運行期間的靈活性。

  • Lambda(可視化編輯器)或Lambda(YAML編輯器)

    最佳化動作啟動速度。

如需運算類型的更多相關資訊,請參閱運算類型

對應的使用者介面:組態索引標籤/進階-選用/運算類型

Fleet

(ECSDeployAction/Compute/Fleet)

(選用)

指定將執行工作流程或工作流程動作的機器或叢集。對於隨需叢集,當動作開始時,工作流程會佈建所需的資源,並在動作完成時銷毀機器。隨選艦隊的範例:Linux.x86-64.LargeLinux.x86-64.XLarge。如需隨選叢集的詳細資訊,請參閱隨需機群屬性

透過佈建的叢集,您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態,可立即處理動作。如需已佈建叢集的詳細資訊,請參閱佈建的機群屬性

Fleet果省略,預設值為Linux.x86-64.Large

對應的使用者介面:組態索引標籤/進階-選用/運算叢集

Timeout

(ECSDeployAction/Timeout)

(選用)

指定動作在 CodeCatalyst 結束動作之前可執行的時間長度 (以分鐘為單位) 或小時和分鐘 (視覺化編輯器)。YAML最小值為 5 分鐘,最大值在中說明中的工作流程配額 CodeCatalyst。預設逾時與逾時上限相同。

對應的 UI:配置選項卡/超時- 可選

Environment

(ECSDeployAction/Environment)

(必要)

指定要與動作搭配使用的 CodeCatalyst 環境。該動作連接到所選環境中VPC指定的 AWS 帳戶 和可選的 Amazon。該動作使用環境中指定的預設IAM角色連接到 AWS 帳戶,並使用 Amazon VPC 連接中指定的IAM角色連接到 Amazon VPC。

注意

如果預設IAM角色沒有動作所需的權限,您可以將動作配置為使用其他角色。如需詳細資訊,請參閱 變更動作IAM的角色

若要取得有關環境的更多資訊,請參閱部署至 AWS 帳戶 和 VPCs建立環境

對應的 UI:配置選項卡/環境

Name

(ECSDeployAction/Environment/Name)

(如果包含Environment,則為必填)

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

對應的 UI:配置選項卡/環境

Connections

(ECSDeployAction/Environment/Connections)

(在較新版本的動作中為選用項目;舊版本為必要)

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

如果您未指定帳戶連線:

  • 此動作會使用在 CodeCatalyst 主控台環境中指定的 AWS 帳戶 連線和預設IAM角色。如需將帳戶連線和預設IAM角色新增至環境的資訊,請參閱建立環境

  • 預設IAM角色必須包含動作所需的原則和權限。若要判斷這些原則和權限是什麼,請參閱動作的YAML定義文件中角色屬性的說明。

如需有關帳戶連線的詳細資訊,請參閱允許存取已連線 AWS 的資源 AWS 帳戶。如需將帳戶連線新增至環境的資訊,請參閱建立環境

對應的使用者介面:下列其中一項視動作版本而定:

  • (較新版本)配置選項卡/環境/中有什麼 my-environment? /三點菜單/切換角色

  • (舊版本)配置選項卡/「環境/帳戶/角色」/帳AWS 戶連接

Name

(ECSDeployAction/Environment/Connections/Name)

(如果包含Connections,則為必填)

指定帳戶連線的名稱。

對應的使用者介面:下列其中一項視動作版本而定:

  • (較新版本)配置選項卡/環境/中有什麼 my-environment? /三點菜單/切換角色

  • (舊版本)配置選項卡/「環境/帳戶/角色」/帳AWS 戶連接

Role

(ECSDeployAction/Environment/Connections/Role)

(如果包含Connections,則為必填)

指定「部署到 Amazon」ECS 動作用於存取的IAM角色名稱 AWS。請確定您已將角色新增至您的 CodeCatalyst 空間,且該角色包含下列原則。

如果您未指定IAM角色,則動作會使用主 CodeCatalyst 控台環境中列出的預設IAM角色。如果您在環境中使用預設角色,請確定其具有下列原則。

  • 下列權限原則:

    警告

    將權限限制為以下策略中顯示的權限。使用具有更廣泛權限的角色可能會造成安全風險。

    { "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": "*"
  • 下列自訂信任原則:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
注意

您可以視需要使用此動作的CodeCatalystWorkflowDevelopmentRole-spaceName角色。如需有關此角色的詳細資訊,請參閱 為您的帳戶和空間建立CodeCatalystWorkflowDevelopmentRole-spaceName角色。瞭解CodeCatalystWorkflowDevelopmentRole-spaceName角色具有可能造成安全風險的完整存取權限。我們建議您只在不太擔心安全性的教學課程和案例中使用此角色。

對應的使用者介面:下列其中一項視動作版本而定:

  • (較新版本)配置選項卡/環境/中有什麼 my-environment? /三點菜單/切換角色

  • (舊版) 組態索引標籤/「環境/帳戶/角色」/「角色」

Inputs

(ECSDeployAction/Inputs)

(選用)

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

注意

每個「部署到 Amazon」ECS 動作只允許一個輸入 (來源或成品)。

對應的 UI:輸入索引標籤

Sources

(ECSDeployAction/Inputs/Sources)

(如果您的任務定義檔案儲存在來源儲存庫中,則需要)

如果您的作業定義檔案儲存在來源儲存庫中,請指定該來源儲存庫的標籤。目前,唯一支援的標籤是WorkflowSource

如果您的任務定義檔案不包含在來源儲存庫中,則該檔案必須位於由其他動作產生的成品中。

如需來源的詳細資訊,請參閱 將來源儲存庫連線至工作流程

對應的 UI:輸入選項卡/源- 可選

Artifacts - input

(ECSDeployAction/Inputs/Artifacts)

(如果您的任務定義檔案儲存在先前動作的輸出成品中,則為必要)

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

如需人工因素的詳細資訊 (包括範例),請參閱在動作之間共用成品和檔案

對應的 UI:配置選項卡/成品- 可選

Configuration

(ECSDeployAction/Configuration)

(必要)

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

對應的 UI:組態索引標籤

region

(Configuration/region)

(必要)

指定 Amazon ECS 叢集和服務所在的 AWS 區域。如需區域代碼的清單,請參閱 AWS 一般參考.

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

cluster

(ECSDeployAction/Configuration/cluster)

(必要)

指定現有 Amazon ECS 叢集的名稱。「部署到 Amazon」ECS 動作會將您的容器化應用程式做為任務部署到此叢集中。如需 Amazon ECS 叢集的詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的集。

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

service

(ECSDeployAction/Configuration/service)

(必要)

指定將實例化任ECS務定義檔案的現有 Amazon 服務的名稱。此服務必須位於cluster欄位中指定的叢集下方。如需 Amazon ECS 服務的詳細資訊,請參閱 Amazon 彈性容器ECS服務開發人員指南中的 Amazon 服務

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

task-definition

(ECSDeployAction/Configuration/task-definition)

(必要)

指定既有工作定義檔案的路徑。如果檔案位於來源儲存庫中,則路徑會相對於來源儲存庫根資料夾。如果您的檔案位於先前工作流程動作的人工因素中,則路徑會相對於人工因素根資料夾。如需有關任務定義檔案的詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的任務定義

對應的 UI:配置選項卡/任務定義

force-new-deployment

(ECSDeployAction/Configuration/force-new-deployment)

(必要)

如果啟用,Amazon ECS 服務就能在不變更服務定義的情況下啟動新部署。強制部署會導致服務停止所有目前正在執行的工作並啟動新工作。如需有關強制執行新部署的詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的更新服務

預設:false

對應的 UI:配置選項卡/強制新的服務部署

codedeploy-appspec

(ECSDeployAction/Configuration/codedeploy-appspec)

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

指定現有 CodeDeploy 應用程式規格 (AppSpec) 檔案的名稱和路徑。此檔案必須位於來 CodeCatalyst 源儲存庫的根目錄中。若要取得有關 AppSpec 檔案的更多資訊,請參閱《AWS CodeDeploy 使用指南》中的CodeDeploy 應用程式規格 (AppSpec) 檔案

注意

只有在您已將 Amazon ECS 服務設定為執行藍/綠部署時,才提供 CodeDeploy 資訊。對於循環更新部署 (預設值),請省略 CodeDeploy 資訊。如需 Amazon ECS 部署的詳細資訊,請參閱 Amazon 彈性容器服務開發人員指南中的 Amazon ECS 部署類型

注意

這些CodeDeploy欄位可能會隱藏在視覺化編輯器中。若要讓它們出現,請參閱為什麼可視化編輯器中缺少 CodeDeploy 字段?

對應的 UI:配置選項卡/CodeDeploy AppSpec

codedeploy-application

(ECSDeployAction/Configuration/codedeploy-application)

(如果包含codedeploy-appspec,則為必填)

指定現有 CodeDeploy 應用程式的名稱。若要取得有關 CodeDeploy 應用程式的更多資訊,請參閱使用指南 CodeDeploy中的〈AWS CodeDeploy 使用應用程式〉

對應的 UI:配置選項卡/CodeDeploy 應用程序

codedeploy-deployment-group

(ECSDeployAction/Configuration/codedeploy-deployment-group)

(如果包含codedeploy-appspec,則為必填)

指定現有 CodeDeploy 部署群組的名稱。若要取得有關 CodeDeploy 部署群組的更多資訊,請參閱《使用指南》 CodeDeploy中的〈AWS CodeDeploy 使用部署群組

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

codedeploy-deployment-description

(ECSDeployAction/Configuration/codedeploy-deployment-description)

(選用)

指定此動作將建立之部署的描述。若要取得更多資訊,請參閱《使用指南》 CodeDeploy中的〈AWS CodeDeploy 使用部署

對應的 UI:組態索引標籤/CodeDeploy 部署說明