Amazon EC2 操作参考
您使用 Amazon EC2 EC2 操作将应用程序代码部署到您的部署实例集。您的部署实例集可以由 Amazon EC2 Linux 实例或 Linux SSM 管理的节点组成。您的实例必须已安装 SSM 代理。
注意
此操作仅支持 Linux 实例类型。支持的最大实例集规模是 500 个实例。
该操作将根据指定的最大实例数选择一定数量的实例。将首先选择先前实例中的失败实例。如果实例已经部署了相同的输入构件(例如之前操作失败的情况),则操作将跳过在这些实例上的部署。
注意
此操作仅支持 V2 类型管道。
操作类型
-
类别:
Deploy -
拥有者:
AWS -
提供方:
EC2 -
版本:
1
配置参数
- InstanceTagKey
-
必需:是
您在 Amazon EC2 中创建的实例的标签键,例如
Name。 - InstanceTagValue
-
必需:否
您在 Amazon EC2 中创建的实例的标签值,例如
my-instances。如果未指定此值,则将匹配所有带有 InstanceTagKey 的实例。
- InstanceType
-
必需:是
在 Amazon EC2 中创建的实例或 SSM 节点的类型。有效值为
EC2和SSM_MANAGED_NODE。您必须已经在所有实例上创建、标记并安装了 SSM 代理。
注意
创建实例时,会创建角色或使用现有的 EC2 实例角色。为避免
Access Denied错误,您必须向实例角色添加 S3 存储桶权限,以授予实例对 CodePipeline 构件存储桶的权限。创建默认角色或更新现有角色,将s3:GetObject权限范围缩小到管道所在区域的构件存储桶。 - TargetDirectory
-
必需:是(如果指定了脚本)。
在 Amazon EC2 实例中用来运行脚本的目录。
- DeploySpec
-
必须:是(如果指定了部署规范)
用于配置部署、安装和生命周期事件的文件。有关部署规范字段的描述和信息,请参阅部署规范文件参考。要查看指定了部署规范文件的操作配置,请参阅带有部署规范示例的操作声明中的示例。
- MaxBatch
-
必需:否
允许同时部署的实例最大数量。
- MaxError
-
必需:否
部署期间允许的实例错误最大数量。
- TargetGroupNameList
-
必需:否
要部署的目标组名称列表。您必须已经创建了目标组。
目标组提供了一组用于处理特定请求的实例。如果指定了目标组,则实例将在部署前从目标组中移除,并在部署后重新添加到目标组。
- PreScript
-
必需:否
在操作部署阶段之前运行的脚本。
- PostScript
-
必需:是
在操作部署阶段之后运行的脚本。
下图显示了已选择使用操作配置的编辑页面示例。
下图显示了已选择使用 DeploySpec 文件的操作的编辑页面示例。
输入构件
-
构件数:
1 -
描述:为支持部署期间的脚本操作而提供的文件(如果有)。
输出构件
-
构件数:
0 -
描述:输出构件不适用于此操作类型。
EC2 部署操作的服务角色策略权限
当 CodePipeline 运行操作时,CodePipeline 服务角色需要以下权限,这些权限的范围已适当缩小,便于以最低权限进行访问。
CloudWatch Logs 中的管道日志组
当 CodePipeline 运行操作时,CodePipeline 会使用管道名称创建一个日志组,如下所示。这样就可以使用管道名称缩小日志资源的权限范围。
/aws/codepipeline/MyPipelineName
上述服务角色更新中包含以下日志记录权限。
-
logs:CreateLogGroup
-
logs:CreateLogStream
-
logs:PutLogEvents
要在控制台中使用操作详细信息对话框页面查看日志,必须在控制台角色中添加查看日志的权限。有关更多信息,请参阅在 CodePipeline 控制台中查看计算日志所需的权限中的控制台权限策略示例。
CloudWatch Logs 的服务角色策略权限
当 CodePipeline 运行操作时,CodePipeline 会使用管道名称创建一个日志组,如下所示。这样就可以使用管道名称缩小日志资源的权限范围。
/aws/codepipeline/MyPipelineName
要在控制台中使用操作详细信息对话框页面查看日志,必须在控制台角色中添加查看日志的权限。有关更多信息,请参阅在 CodePipeline 控制台中查看计算日志所需的权限中的控制台权限策略示例。
部署规范文件参考
当 CodePipeline 运行操作时,您可以指定一个规范文件来配置实例的部署。部署规范文件指定要安装的内容以及运行哪些生命周期事件钩子以响应部署生命周期事件。部署规范文件始终采用 YAML 格式。部署规范文件用于:
-
将应用程序修订中的源文件映射到其在实例上的目的地。
-
为部署的文件指定自定义权限。
-
指定要在部署过程的各个阶段在每个实例上运行的脚本。
部署规范文件支持 CodeDeploy 支持的特定部署配置参数和 AppSpec 文件。您可以直接使用现有的 AppSpec 文件,任何不支持的参数都将被忽略。有关 CodeDeploy 中 AppSpec 文件的更多信息,请参阅《CodeDeploy 用户指南》中的应用程序规范文件参考。
文件部署参数的指定方式如下。
-
files- 部署规范文件为部署文件指定source:和destination:。 -
scripts- 部署的脚本事件。支持两个事件:BeforeDeploy和AfterDeploy。 -
hooks- 事件的生命周期挂钩。支持以下钩子:ApplicationStop、BeforeInstall、AfterInstall、ApplicationStart和ValidateService。注意
钩子参数用于实现 AppSpec 与 CodeDeploy 的兼容性,仅在 0.0 版本(AppSpec 格式)中可用。对于这种格式,CodePipeline 将尽力对事件进行映射。
规范文件中必须使用正确的 YAML 空间;否则,如果部署规范文件中的位置和空间数量不正确,将发生错误。有关间距的更多信息,请参阅 YAML
下方是部署规范文件示例。
version: 0.1 files: - source: /index.html destination: /var/www/html/ scripts: BeforeDeploy: - location: scripts/install_dependencies timeout: 300 runas: myuser AfterDeploy: - location: scripts/start_server timeout: 300 runas: myuser
要查看指定了部署规范文件的操作配置,请参阅带有部署规范示例的操作声明中的示例。
操作声明
带有部署规范示例的操作声明
另请参阅
下列相关资源在您使用此操作的过程中会有所帮助。
-
教程:使用 CodePipeline 部署到 Amazon EC2 实例 – 本教程将引导您创建 EC2 实例,在其中部署脚本文件,并使用 EC2 操作创建管道。
-
EC2 部署操作失败并显示错误消息“No such file” – 本主题描述了针对 EC2 操作中文件未找到错误的故障排除方法。