本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
“部署到亚马逊ECS” 操作 YAML
以下是 “部署到亚马逊” ECS 操作的YAML定义。要了解如何使用此操作,请参阅使用工作流程部署到 ECS Amazon。
此操作定义作为一个部分存在于更广泛的工作流程定义文件中。有关此文件的更多信息,请参阅 工作流程YAML定义。
注意
接下来的大多数YAML属性在可视化编辑器中都有相应的用户界面元素。要查找用户界面元素,请使用 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/ecs-deploy @v1 标签
DependsOn
(ECSDeployAction
/DependsOn)
(可选)
指定必须成功运行才能运行此操作的操作、操作组或门。
有关 “依赖” 功能的更多信息,请参阅。排序动作
对应的用户界面:“输入” 选项卡/ 依赖- 可选
Compute
(ECSDeployAction
/Compute)
(可选)
用于运行工作流程操作的计算引擎。您可以在工作流程级别或操作级别指定计算,但不能同时指定两者。在工作流级别指定时,计算配置将应用于工作流中定义的所有操作。在工作流程级别,您还可以在同一个实例上运行多个操作。有关更多信息,请参阅 跨操作共享计算。
对应的用户界面:无
Type
(ECSDeployAction
/Compute/Type)
(如果包含Compute,则为必填项)
计算引擎的类型。您可以使用以下值之一:
-
EC2(可视化编辑器)或
EC2
(YAML编辑器)针对动作运行期间的灵活性进行了优化。
-
Lambda(可视化编辑器)或
Lambda
(YAML编辑器)优化了动作启动速度。
有关计算类型的更多信息,请参阅计算类型。
相应的 UI:“配置” 选项卡/高级-可选/计算类型
Fleet
(ECSDeployAction
/Compute/Fleet)
(可选)
指定将运行您的工作流程或工作流程操作的计算机或机群。对于按需队列,当操作开始时,工作流程会配置所需的资源,操作完成后计算机就会被销毁。按需车队的示例:Linux.x86-64.Large
,Linux.x86-64.XLarge
。有关按需队列的更多信息,请参阅按需车队房产。
使用已配置的队列,您可以配置一组专用计算机来运行您的工作流程操作。这些计算机处于闲置状态,可以立即处理操作。有关已配置队列的更多信息,请参阅。已配置的舰队属性
如果省略,Fleet
则默认为Linux.x86-64.Large
。
相应的 UI:“配置” 选项卡/高级-可选/计算舰队
Timeout
(ECSDeployAction
/Timeout)
(可选)
指定操作在 CodeCatalyst 结束操作之前可以运行的时间(YAML以分钟(编辑器)或小时和分钟(可视化编辑器)为单位。最小值为 5 分钟,最大值如中所述中的工作流程配额 CodeCatalyst。默认超时与最大超时相同。
相应的 UI:“配置” 选项卡/ “超时”- 可选
Environment
(ECSDeployAction
/Environment)
(必需)
指定要用于操作的 CodeCatalyst 环境。该操作关联到在所选环境中VPC指定的 AWS 账户 和可选的 Amazon。该操作使用在环境中指定的默认IAM角色连接到 AWS 账户,并使用在亚马逊VPC连接中指定的IAM角色来连接亚马逊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 账户。有关向环境添加账户连接的信息,请参阅创建环境。
相应的 UI:根据操作版本的不同,以下用户界面之一:
-
(新版本)“配置” 选项卡/环境/内容
my-environment
? /三点菜单/ 切换角色 -
(旧版本)“配置” 选项卡/'环境/账户/角色'/账户连接AWS
Name
(ECSDeployAction
/Environment/Connections/Name)
(如果包含Connections,则为必填项)
指定账户连接的名称。
相应的 UI:根据操作版本的不同,以下用户界面之一:
-
(新版本)“配置” 选项卡/环境/内容
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-
角色。有关该角色的更多信息,请参阅 为您的账户和空间创建CodeCatalystWorkflowDevelopmentRole-spaceName角色。了解该spaceName
CodeCatalystWorkflowDevelopmentRole-
角色具有完全访问权限,这可能会带来安全风险。我们建议您仅在教程和安全性较低的场景中使用此角色。spaceName
相应的 UI:根据操作版本的不同,以下用户界面之一:
-
(新版本)“配置” 选项卡/环境/内容
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 集群的名称。Deploy t ECS o Amazon 操作会将您的容器化应用程序作为一项任务部署到该集群中。有关 Amazon ECS 集群的更多信息,请参阅《亚马逊弹性容器服务开发者指南》中的集群。
对应的 UI:“配置” 选项卡/ 集群
service
(ECSDeployAction
/Configuration/service)
(必需)
指定用于实例化任务定义文件的现有 Amazon ECS 服务的名称。此服务必须位于cluster
字段中指定的集群下。有关亚马逊ECS服务的更多信息,请参阅《亚马逊弹性容器ECS服务开发者指南》中的亚马逊服务。
对应的 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 信息。有关亚马逊ECS部署的更多信息,请参阅《亚马逊弹性容器服务开发人员指南》中的亚马逊ECS部署类型。
注意
这些CodeDeploy字段可能隐藏在可视化编辑器中。要让它们出现,请参阅为什么可视化编辑器中缺少 CodeDeploy 字段?。
对应的 UI:“配置” 选项卡/ CodeDeploy AppSpec
codedeploy-application
(ECSDeployAction
/Configuration/codedeploy-application)
(如果包含codedeploy-appspec
,则为必填项)
指定现有 CodeDeploy 应用程序的名称。有关 CodeDeploy 应用程序的更多信息,请参阅《AWS CodeDeploy 用户指南》 CodeDeploy中的 “使用应用程序”。
对应的用户界面:配置选项卡/应用程序 CodeDeploy
codedeploy-deployment-group
(ECSDeployAction
/Configuration/codedeploy-deployment-group)
(如果包含codedeploy-appspec
,则为必填项)
指定现有 CodeDeploy 部署组的名称。有关 CodeDeploy 部署组的更多信息,请参阅《AWS CodeDeploy 用户指南》 CodeDeploy中的使用部署组。
对应的 UI:“配置” 选项卡/ CodeDeploy 部署组
codedeploy-deployment-description
(ECSDeployAction
/Configuration/codedeploy-deployment-description)
(可选)
指定此操作将创建的部署的描述。有关更多信息,请参阅《AWS CodeDeploy 用户指南》 CodeDeploy中的使用部署。
对应的 UI:“配置” 选项卡/ CodeDeploy 部署描述