

AWS Data Pipeline 不再向新客户提供。的现有客户 AWS Data Pipeline 可以继续照常使用该服务。[了解详情](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Ec2Resource
<a name="dp-object-ec2resource"></a>

执行管道活动定义的工作的 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 实例](dp-ec2-default-instance-types.md)。

## 示例
<a name="ec2resource-example"></a>

**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"
}
```

## 语法
<a name="ec2resource-syntax"></a>


****  

| 必填字段 | 说明 | 槽位类型 | 
| --- | --- | --- | 
| resourceRole | 控制 Amazon EC2 实例可访问的资源的 IAM 角色。 | 字符串 | 
| 角色 |  AWS Data Pipeline 用于创建 EC2 实例的 IAM 角色。 | 字符串 | 

 


****  

| 对象调用字段 | 说明 | 槽位类型 | 
| --- | --- | --- | 
| 计划 |  该对象在计划间隔的执行中调用。 要设置此对象的依赖项执行顺序，请指定对另一个对象的计划引用。您可以通过下列方式之一来执行该操作： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datapipeline/latest/DeveloperGuide/dp-object-ec2resource.html)  | 引用对象，例如，"schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 可选字段 | 说明 | 槽位类型 | 
| --- | --- | --- | 
| actionOnResource失败 | 在此资源发生资源失败后执行的操作。有效值为 "retryall" 和 "retrynone"。 | 字符串 | 
| actionOnTask失败 | 在此资源发生任务失败后执行的操作。有效值为 "continue" 或 "terminate"。 | 字符串 | 
| associatePublicIp地址 | 指示是否向实例分配公有 IP 地址。如果实例位于 Amazon EC2 或 Amazon VPC 中，则默认值为 true。否则，默认值为 false。 | 布尔值 | 
| attemptStatus | 来自远程活动的最近报告的状态。 | 字符串 | 
| attemptTimeout | 远程工作完成的超时时间。如果设置此字段，则可能会重试未在指定开始时间内完成的远程活动。 | 周期 | 
| availabilityZone | 要在其中启动 Amazon EC2 实例的可用区。 | 字符串 | 
| 禁用 IMDSv1 | 默认值为 false，同时启用 IMDSv1 和 IMDSv2。如果你将其设置为 true 那么它就会禁用 IMDSv1 并且只提供 IMDSv2s | 布尔值 | 
| failureAndRerun模式 | 描述依赖项失败或重新运行时的使用者节点行为。 | 枚举 | 
| httpProxy | 客户端用来连接 AWS 服务的代理主机。 | 引用对象，例如， "httpProxy":\$1"ref":"myHttpProxyId"\$1 | 
| imageId | 要用于实例的 AMI 的 ID。默认情况下， AWS Data Pipeline 使用 HVM AMI 虚拟化类型。 IDs 使用的特定 AMI 基于区域。您可以通过指定自己选择的 HVM AMI 来覆盖默认 AMI。有关 AMI 类型的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Linux AMI 虚拟化类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)和[查找 Linux AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)。  | 字符串 | 
| initTimeout | 资源启动前要等待的时间长度。 | 周期 | 
| instanceCount | 已淘汰。 | 整数 | 
| instanceType | 要启动的 Amazon EC2 实例的类型。 | 字符串 | 
| keyPair | 密钥对的名称。如果您在未指定密钥对的情况下启动 Amazon EC2 实例，则无法登录该实例。 | 字符串 | 
| lateAfterTimeout | 管道启动后经过的时间，在此时间内，对象必须完成。仅当计划类型未设置为 ondemand 时才会触发。 | 周期 | 
| maxActiveInstances | 组件的并发活动实例的最大数量。重新运行不计入活动实例数中。 | 整数 | 
| maximumRetries | 失败后的最大重试次数。 | 整数 | 
| minInstanceCount | 已淘汰。 | 整数 | 
| onFail | 当前对象失败时要运行的操作。 | 引用对象，例如， "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 在尚未计划对象或对象仍在运行的情况下将触发的操作。 | 引用对象，例如，"onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 当前对象成功时要运行的操作。 | 引用对象，例如， "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 作为槽继承源的当前对象的父项。 | 引用对象，例如， "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用于上传管道日志的 Amazon S3 URI，例如 's3://BucketName/Key/'。 | 字符串 | 
| region |  应在其中运行 Amazon EC2 实例的区域的代码。默认情况下，该实例在管道所在的区域中运行。您可以在从属数据集所在的区域中运行实例。 | 枚举 | 
| reportProgressTimeout | 远程工作对 reportProgress 的连续调用的超时时间。如果设置此字段，则未报告指定时段的进度的远程活动可能会被视为停滞并且将进行重试。 | 周期 | 
| retryDelay | 两次重试之间的超时时间。 | 周期 | 
| runAsUser | 要运行的用户 TaskRunner。 | 字符串 | 
| runsOn | 禁止在该对象上使用此字段。 | 引用对象，例如，"runsOn":\$1"ref":"myResourceId"\$1 | 
| scheduleType |  您可以通过计划类型指定应在间隔开始时、间隔结束时还是按需计划管道定义中的对象。 值为： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/datapipeline/latest/DeveloperGuide/dp-object-ec2resource.html)  | 枚举 | 
| securityGroupIds | 要用于资源池中的实例的一个或多个 Amazon EC2 安全组的 ID。 | 字符串 | 
| securityGroups | 要用于资源池中的实例的一个或多个 Amazon EC2 安全组。 | 字符串 | 
| spotBidPrice | 每小时您的 Spot 实例的最高价 (美元)，是一个介于 0 和 20.00 (不含) 的小数值。 | 字符串 | 
| subnetId | 要在其中启动实例的 Amazon EC2 子网的 ID。 | 字符串 | 
| terminateAfter | 小时数，经过此时间后将终止资源。 | 周期 | 
| useOnDemandOnLastAttempt | 在最后一次尝试请求 Spot 实例时，请求的是按需实例而不是 Spot 实例。这可确保如果所有之前的尝试都失败，则最后一次尝试不中断。 | 布尔值 | 
| workerGroup | 禁止在该对象上使用此字段。 | 字符串 | 

 


****  

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

 


****  

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