Ec2Resource - AWS Data Pipeline

Ec2Resource

执行管道活动定义的工作的 Amazon EC2 实例。

AWS Data Pipeline现在支持 Amazon EC2 实例的 imdsv2,当从实例检索元数据信息时,它使用面向会话的方法来更好地处理身份验证。会话会开始和结束一系列请求,Amazon EC2 实例上运行的软件使用这些请求访问本地存储的 Amazon EC2 实例元数据和凭证。该软件通过向 imdsv2 发出简单的 HTTP PUT 请求来开始会话。IMDSv2 向在 Amazon EC2 实例上运行的软件返回一个秘密令牌,该软件将使用该令牌作为密码向 IMDSv2 请求元数据和凭证。

注意

要将 IMDSv2 用于您的 Amazon EC2 实例,您需要修改设置,因为默认 AMI 与 IMDSv2 不兼容。您可以指定一个新的 AMI 版本,您可以通过以下 SSM 参数检索该版本:/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs

有关在未指定实例时 AWS Data Pipeline 创建的默认 Amazon EC2 实例的信息,请参阅 Amazon Web Services Region 的默认 Amazon EC2 实例

示例

EC2-Classic

重要

只有在 2013 年 12 月 4 日之前创建的 AWS 账户支持 EC2-Classic 平台。如果您拥有其中一个账户,则可以选择为 EC2-Classic 网络(而不是 VPC)中的管道创建 EC2Resource 对象。我们强烈建议为您在 VPC 中的所有管道创建资源。此外,如果您在 EC2-Classic 有现有资源,建议您把这些资源迁移到 VPC。

以下示例对象在 EC2-Classic 中启动 EC2 实例(带一些可选字段集)。

{ "id" : "MyEC2Resource", "type" : "Ec2Resource", "actionOnTaskFailure" : "terminate", "actionOnResourceFailure" : "retryAll", "maximumRetries" : "1", "instanceType" : "m5.large", "securityGroups" : [ "test-group", "default" ], "keyPair" : "my-key-pair" }

EC2-VPC

以下示例对象在非默认 VPC 中启动 EC2 实例 (设置了一些可选字段)。

{ "id" : "MyEC2Resource", "type" : "Ec2Resource", "actionOnTaskFailure" : "terminate", "actionOnResourceFailure" : "retryAll", "maximumRetries" : "1", "instanceType" : "m5.large", "securityGroupIds" : [ "sg-12345678", "sg-12345678" ], "subnetId": "subnet-12345678", "associatePublicIpAddress": "true", "keyPair" : "my-key-pair" }

语法

必填字段 描述 槽类型
resourceRole 控制 Amazon EC2 实例可访问的资源的 IAM 角色。 String
role AWS Data Pipeline 用于创建 EC2 实例的 IAM 角色。 String

对象调用字段 描述 槽类型
计划

该对象在计划间隔的执行中调用。

要设置此对象的依赖项执行顺序,请指定对另一个对象的计划引用。您可以通过下列方式之一来执行该操作:

  • 要确保管道中的所有对象都继承计划,请明确地在对象上设置计划:"schedule": {"ref": "DefaultSchedule"}。在大多数情况下,将计划引用放在默认管道对象上会非常有用,这样所有对象都可以继承该计划。

  • 如果管道有一些嵌套在主计划中的计划,则可以创建具有计划引用的父对象。有关示例可选计划配置的更多信息,请参阅 https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html

引用对象,例如,"schedule":{"ref":"myScheduleId"}

可选字段 描述 槽类型
actionOnResourceFailure 在此资源发生资源失败后执行的操作。有效值为 "retryall""retrynone" String
actionOnTaskFailure 在此资源发生任务失败后执行的操作。有效值为 "continue""terminate" String
associatePublicIpAddress 指示是否向实例分配公有 IP 地址。如果实例位于 Amazon EC2 或 Amazon VPC 中,则默认值为true。否则,默认值为 false 布尔值
attemptStatus 来自远程活动的最近报告的状态。 String
attemptTimeout 远程工作完成的超时时间。如果设置此字段,则可能会重试未在指定开始时间内完成的远程活动。 周期
availabilityZone 要在其中启动 Amazon EC2 实例的可用区。 String
disableIMDSv1 默认值为 false,并启用 IMDSv1 和 IMDSv2。如果你将其设置为 true,那么它就会禁用 IMDSv1 并且只提供 IMDSv2 布尔值
failureAndRerunMode 描述依赖项失败或重新运行时的使用者节点行为。 枚举
httpProxy 客户端用来连接到 AWS 服务的代理主机。 引用对象,例如, "httpProxy":{"ref":"myHttpProxyId"}
imageId

要用于实例的 AMI 的 ID。默认情况下,AWS Data Pipeline 使用 HVM AMI 虚拟化类型。使用的特定 AMI ID 取决于区域:您可以通过指定自己选择的 HVM AMI 来覆盖默认 AMI。有关 AMI 类型的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Linux AMI 虚拟化类型查找 Linux AMI

String
initTimeout 资源启动前要等待的时间长度。 周期
instanceCount 已淘汰。 整数
instanceType 要启动的 Amazon EC2 实例的类型。 String
keyPair 密钥对的名称。如果您在未指定密钥对的情况下启动 Amazon EC2 实例,则无法登录该实例。 String
lateAfterTimeout 管道启动后经过的时间,在此时间内,对象必须完成。仅当计划类型未设置为 ondemand 时才会触发。 周期
maxActiveInstances 组件的并发活动实例的最大数量。重新运行不计入活动实例数中。 整数
maximumRetries 失败后的最大重试次数。 整数
minInstanceCount 已淘汰。 整数
onFail 当前对象失败时要运行的操作。 引用对象,例如, "onFail":{"ref":"myActionId"}
onLateAction 在尚未计划对象或对象仍在运行的情况下将触发的操作。 引用对象,例如,"onLateAction":{"ref":"myActionId"}
onSuccess 当前对象成功时要运行的操作。 引用对象,例如, "onSuccess":{"ref":"myActionId"}
parent 作为槽继承源的当前对象的父项。 引用对象,例如, "parent":{"ref":"myBaseObjectId"}
pipelineLogUri 用于上传管道日志的 Amazon S3 URI,例如 's3://BucketName/Key/' String
region 应在其中运行 Amazon EC2 实例的区域的代码。默认情况下,该实例在管道所在的区域中运行。您可以在从属数据集所在的区域中运行实例。 枚举
reportProgressTimeout 远程工作对 reportProgress 的连续调用的超时时间。如果设置此字段,则未报告指定时段的进度的远程活动可能会被视为停滞并且将进行重试。 周期
retryDelay 两次重试之间的超时时间。 周期
runAsUser 要运行 TaskRunner 的用户。 String
runsOn 禁止在该对象上使用此字段。 引用对象,例如,"runsOn":{"ref":"myResourceId"}
scheduleType

您可以通过计划类型指定应在间隔开始时、间隔结束时还是按需计划管道定义中的对象。

值为:

  • timeseries 在每个间隔结束时计划实例。

  • cron 在每个间隔开始时计划实例。

  • ondemand 可让您可以在每次激活时运行一次管道。您不需要克隆或重新创建管道以再次运行它。如果您使用按需计划,则必须在默认对象中指定它,并且必须是在管道中为对象指定的唯一 scheduleType。要使用按需管道,请为每个后续运行调用 ActivatePipeline 操作。

枚举
securityGroupIds 要用于资源池中的实例的一个或多个 Amazon EC2 安全组的 ID。 String
securityGroups 要用于资源池中的实例的一个或多个 Amazon EC2 安全组。 String
spotBidPrice 每小时您的 Spot 实例的最高价 (美元),是一个介于 0 和 20.00 (不含) 的小数值。 String
subnetId 要在其中启动实例的 Amazon EC2 子网的 ID。 String
terminateAfter 小时数,经过此时间后将终止资源。 周期
useOnDemandOnLastAttempt 在最后一次尝试请求 Spot 实例时,请求的是按需实例而不是 Spot 实例。这可确保如果所有之前的尝试都失败,则最后一次尝试不中断。 布尔值
workerGroup 禁止在该对象上使用此字段。 String

运行时字段 描述 槽类型
@activeInstances 当前计划的有效实例对象的列表。 引用对象,例如,"activeInstances":{"ref":"myRunnableObjectId"}
@actualEndTime 该对象的执行完成时间。 DateTime
@actualStartTime 该对象的执行开始时间。 DateTime
cancellationReason 该对象被取消时显示的 cancellationReason String
@cascadeFailedOn 对象在其上失败的依赖项链的描述。 引用对象,例如,"cascadeFailedOn":{"ref":"myRunnableObjectId"}
emrStepLog 仅在尝试 Amazon EMR 活动时可用的步骤日志。 String
errorId 该对象失败时显示的错误 ID。 String
errorMessage 该对象失败时显示的错误消息。 String
errorStackTrace 该对象失败时显示的错误堆栈跟踪。 String
@failureReason 资源失败的原因。 String
@finishedTime 该对象完成其执行的时间。 DateTime
hadoopJobLog 在尝试 Amazon EMR 的活动时可用的 Hadoop 任务日志。 String
@healthStatus 对象的运行状况,反映进入终止状态的上个对象实例成功还是失败。 String
@healthStatusFromInstanceId 进入终止状态的上个实例对象的 ID。 String
@healthStatusUpdatedTime 上次更新运行状况的时间。 DateTime
hostname 已执行任务尝试的客户端的主机名。 String
@lastDeactivatedTime 上次停用该对象的时间。 DateTime
@latestCompletedRunTime 已完成执行的最新运行的时间。 DateTime
@latestRunTime 已计划执行的最新运行的时间。 DateTime
@nextRunTime 计划下次运行的时间。 DateTime
reportProgressTime 远程活动报告进度的最近时间。 DateTime
@scheduledEndTime 对象的计划结束时间。 DateTime
@scheduledStartTime 对象的计划开始时间。 DateTime
@status 该对象的状态。 String
@version 用来创建对象的管道版本。 String
@waitingOn 此对象在其上处于等待状态的依赖项列表的描述。 引用对象,例如, "waitingOn":{"ref":"myRunnableObjectId"}

系统字段 描述 槽类型
@error 用于描述格式不正确的对象的错误消息。 String
@pipelineId 该对象所属的管道的 ID。 String
@sphere 对象在生命周期中的位置。组件对象产生实例对象,后者执行尝试对象。 String