“部署到 Amazon ECS”操作 YAML - Amazon CodeCatalyst

“部署到 Amazon ECS”操作 YAML

下面是部署到 Amazon ECS 操作的 YAML 定义。要了解如何使用此操作,请参阅使用工作流部署到 Amazon ECS

此操作定义部分包含在更广泛的工作流定义文件中。有关此文件的更多信息,请参阅工作流 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

对应的 UI:工作流图表/ECSDeployAction_nn/aws/ecs-deploy@v1 标签

DependsOn

(ECSDeployAction/DependsOn)

(可选)

指定必须成功运行才能使该操作运行的操作、操作组或阶段门。

有关“依赖于”功能的更多信息,请参阅顺序操作

对应的 UI:“输入”选项卡/依赖于 – 可选

Compute

(ECSDeployAction/Compute)

(可选)

用于运行工作流操作的计算引擎。您可以在工作流级别或操作级别指定计算,但不能同时在这两个级别指定计算。在工作流级别指定计算时,计算配置将应用于工作流中定义的所有操作。在工作流级别,您还可以在同一个实例上运行多个操作。有关更多信息,请参阅跨操作共享计算

对应的 UI:

Type

(ECSDeployAction/Compute/Type)

(如果包含 Compute,则为必需)

计算引擎的类型。可以使用下列值之一:

  • EC2(可视化编辑器)或 EC2(YAML 编辑器)

    已经过优化,提高了操作运行期间的灵活性。

  • Lambda(可视化编辑器)或 Lambda(YAML 编辑器)

    优化了操作启动速度。

有关计算类型的更多信息,请参阅计算类型

对应的 UI:“配置”选项卡/高级 – 可选/计算类型

Fleet

(ECSDeployAction/Compute/Fleet)

(可选)

指定将运行您的工作流或工作流操作的计算机或实例集。对于按需实例集,当操作开始时,工作流会预置操作所需的资源,操作完成后计算机就会被销毁。按需实例集的示例:Linux.x86-64.LargeLinux.x86-64.XLarge。有关按需实例集的更多信息,请参阅按需实例集属性

使用预置的实例集,您可以配置一组专用计算机来运行工作流操作。这些计算机保持空闲状态,可随时开始立即处理操作。有关预置实例集的更多信息,请参阅预置实例集属性

如果省略 Fleet,则默认值为 Linux.x86-64.Large

对应的 UI:“配置”选项卡/高级 – 可选/计算实例集

Timeout

(ECSDeployAction/Timeout)

(可选)

指定操作在由 CodeCatalyst 结束之前可运行的分钟数(YAML 编辑器)或小时和分钟数(可视化编辑器)。最小值为 5 分钟,最大值如 CodeCatalyst 中工作流的配额 中描述。默认超时值与最大超时值相同。

对应的 UI:“配置”选项卡/超时 – 可选

Environment

(ECSDeployAction/Environment)

(必需)

指定要用于操作的 CodeCatalyst 环境。该操作连接到在所选环境中指定的 AWS 账户和可选的 Amazon VPC。该操作使用环境中指定的默认 IAM 角色连接到 AWS 账户,并使用在 Amazon VPC 连接中指定的 IAM 角色连接到 Amazon VPC。

注意

如果默认 IAM 角色不具有操作所需的权限,则可以将操作配置为使用其他角色。有关更多信息,请参阅更改操作的 IAM 角色

有关环境的更多信息,请参阅部署到 AWS 账户和 VPC 中创建环境

对应的 UI:“配置”选项卡/环境

Name

(ECSDeployAction/Environment/Name)

(如果包含 Environment,则为必需)

指定要与操作关联的现有环境的名称。

对应的 UI:“配置”选项卡/环境

Connections

(ECSDeployAction/Environment/Connections)

(在新版本的操作中为可选;在旧版本中为必需)

指定要与操作关联的账户连接。您在 Environment 下最多只能指定一个账户连接。

如果您不指定账户连接:

  • 该操作会使用在 CodeCatalyst 控制台环境中指定的 AWS 账户连接和默认 IAM 角色。有关向环境添加账户连接和默认 IAM 角色的信息,请参阅创建环境

  • 默认 IAM 角色必须包含操作所需的策略和权限。要具体确定这些策略和权限,请参阅操作的 YAML 定义文档中 Role 属性的描述。

有关账户连接的更多信息,请参阅允许使用已连接的 AWS 账户访问 AWS 资源。有关向环境添加账户连接的信息,请参阅创建环境

对应的 UI:根据操作版本的不同,为下列项之一:

  • (新版本)“配置”选项卡/环境/我的环境中的具体内容/三点菜单/切换角色

  • (旧版本)“配置”选项卡/“环境/账户/角色”/AWS 账户连接

Name

(ECSDeployAction/Environment/Connections/Name)

(如果包含 Connections,则为必需)

指定账户连接的名称。

对应的 UI:根据操作版本的不同,为下列项之一:

  • (新版本)“配置”选项卡/环境/我的环境中的具体内容/三点菜单/切换角色

  • (旧版本)“配置”选项卡/“环境/账户/角色”/AWS 账户连接

Role

(ECSDeployAction/Environment/Connections/Role)

(如果包含 Connections,则为必需)

指定部署到 Amazon ECS 操作用于访问 AWS 的 IAM 角色的名称。请确保您已将该角色添加到自己的 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 角色具有完全访问权限可能会带来安全风险。我们建议您仅在教程和安全要求较低的场景中使用此角色。

对应的 UI:根据操作版本的不同,为下列项之一:

  • (新版本)“配置”选项卡/环境/我的环境中的具体内容/三点菜单/切换角色

  • (旧版本)“配置”选项卡/“环境/账户/角色”/角色

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 一般参考》中的 Regional endpoints

对应的 UI:“配置”选项卡/区域

cluster

(ECSDeployAction/Configuration/cluster)

(必需)

指定现有 Amazon ECS 集群的名称。部署到 Amazon ECS 操作会将容器化应用程序作为任务部署到该集群中。有关 Amazon ECS 集群的更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的集群

对应的 UI:“配置”选项卡/集群

service

(ECSDeployAction/Configuration/service)

(必需)

指定将实例化任务定义文件的现有 Amazon ECS 服务的名称。此服务必须位于 cluster 字段中指定的集群下。有关 Amazon ECS 服务的更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的 Amazon ECS 服务

对应的 UI:“配置”选项卡/服务

task-definition

(ECSDeployAction/Configuration/task-definition)

(必需)

指定现有任务定义文件的路径。如果文件位于源存储库中,则该路径相对于源存储库根文件夹。如果文件位于上一工作流操作生成的构件中,则该路径相对于构件根文件夹。有关任务定义文件的更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的任务定义

对应的 UI:“配置”选项卡/任务定义

force-new-deployment

(ECSDeployAction/Configuration/force-new-deployment)

(必需)

如果启用此项,则 Amazon ECS 服务无需更改服务定义即可启动新的部署。强制部署会导致服务停止所有当前正在运行的任务并启动新任务。有关强制重新部署更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的更新服务

默认值:false

对应的 UI:“配置”选项卡/强制重新部署该服务

codedeploy-appspec

(ECSDeployAction/Configuration/codedeploy-appspec)

(如果您已将 Amazon ECS 服务配置为使用蓝绿部署,则为必需项,否则将其省略)

指定现有 CodeDeploy 应用程序规范(AppSpec)文件的名称和路径。此文件必须位于 CodeCatalyst 源存储库的根目录中。有关 AppSpec 文件的更多信息,请参阅《AWS CodeDeploy User Guide》中的 CodeDeploy application specification (AppSpec) files

注意

仅在您已将 Amazon ECS 服务配置为执行蓝绿部署时提供 CodeDeploy 信息。对于滚动更新部署(默认),请省略 CodeDeploy 信息。有关更多信息,请参阅《Amazon Elastic Container Service 开发人员指南》中的 Amazon ECS 部署类型

注意

CodeDeploy 字段可能在可视化编辑器中处于隐藏状态。要显示该字段,请参阅为什么可视化编辑器中缺少 CodeDeploy 字段?

对应的 UI:“配置”选项卡/CodeDeploy AppSpec

codedeploy-application

(ECSDeployAction/Configuration/codedeploy-application)

(如果包含 codedeploy-appspec,则为必需)

指定现有 CodeDeploy 应用程序的名称。有关 CodeDeploy 应用程序的更多信息,请参阅《AWS CodeDeploy User Guide》中的 Working with applications in CodeDeploy

对应的 UI:“配置”选项卡/CodeDeploy 应用程序

codedeploy-deployment-group

(ECSDeployAction/Configuration/codedeploy-deployment-group)

(如果包含 codedeploy-appspec,则为必需)

指定现有 CodeDeploy 部署组的名称。有关 CodeDeploy 部署组的更多信息,请参阅《AWS CodeDeploy User Guide》中的 Working with deployment groups in CodeDeploy

对应的 UI:“配置”选项卡/CodeDeploy 部署组

codedeploy-deployment-description

(ECSDeployAction/Configuration/codedeploy-deployment-description)

(可选)

指定此操作将创建的部署的描述。有关更多信息,请参阅《AWS CodeDeploy User Guide》中的 Working with deployments in CodeDeploy

对应的 UI:“配置”选项卡/CodeDeploy 部署说明