

AWS Data Pipeline 不再提供給新客戶。的現有客戶 AWS Data Pipeline 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管道物件參考
<a name="dp-pipeline-objects"></a>

您可以在您的管道定義中使用下列管道物件和元件。

**Topics**
+ [資料節點](dp-object-datanodes.md)
+ [活動](dp-object-activities.md)
+ [Resources](dp-object-resources.md)
+ [先決條件](dp-object-preconditions.md)
+ [資料庫](dp-object-databases.md)
+ [資料格式](dp-object-dataformats.md)
+ [動作](dp-object-actions.md)
+ [Schedule](dp-object-schedule.md)
+ [公用程式](dp-object-utilities.md)

**注意**  
如需使用 AWS Data Pipeline Java 開發套件的範例應用程式，請參閱 GitHub 上的[資料管道 DynamoDB 匯出 Java 範例](https://github.com/awslabs/data-pipeline-samples/tree/master/samples/DynamoDBExportJava)。

以下是 的物件階層 AWS Data Pipeline。

![\[AWS Data Pipeline 物件階層\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/images/object_hierarchy.png)


# 資料節點
<a name="dp-object-datanodes"></a>

以下是 AWS Data Pipeline 資料節點物件：

**Topics**
+ [DynamoDBDataNode](dp-object-dynamodbdatanode.md)
+ [MySqlDataNode](dp-object-mysqldatanode.md)
+ [RedshiftDataNode](dp-object-redshiftdatanode.md)
+ [S3DataNode](dp-object-s3datanode.md)
+ [SqlDataNode](dp-object-sqldatanode.md)

# DynamoDBDataNode
<a name="dp-object-dynamodbdatanode"></a>

 使用 DynamoDB 定義資料節點，該 DynamoDB 指定為 `HiveActivity`或 `EMRActivity` 物件的輸入。

**注意**  
`DynamoDBDataNode` 物件不支援 `Exists` 先決條件。

## 範例
<a name="dynamodbdatanode-example"></a>

以下為此物件類型的範例。此物件會參考兩個您在相同管道定義檔案中定義的其他物件。`CopyPeriod` 是 `Schedule` 物件，`Ready` 則是先決條件物件。

```
{
  "id" : "MyDynamoDBTable",
  "type" : "DynamoDBDataNode",
  "schedule" : { "ref" : "CopyPeriod" },
  "tableName" : "adEvents",
  "precondition" : { "ref" : "Ready" }
}
```

## 語法
<a name="dynamodbdatanode-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| tableName | DynamoDB 資料表。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[排程](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果您已設定此欄位，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dataFormat | 此資料節點描述之資料的 DataFormat。目前支援 HiveActivity 和 HiveCopyActivity。 | 參考物件，"dataFormat":\$1"ref":"myDynamoDBDataFormatId"\$1 | 
| dependsOn | 指定與另一個可執行物件的相依性 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| 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 | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| readThroughputPercent | 設定讀取操作的比率，以將 DynamoDB 佈建的輸送量比率維持在您資料表分配到的範圍內。該值為介於 0.1 和 1.0 (含) 之間的雙倍值。 | Double | 
| region | DynamoDB 資料表所在的區域代碼。例如 us-east-1。HiveActivity 在 Hive 中執行 DynamoDB 資料表接移時會使用此項目。 | 列舉 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 
| writeThroughputPercent | 設定寫入操作的比率，以將 DynamoDB 佈建的輸送量比率維持在您資料表分配到的範圍內。該值為介於 0.1 和 1.0 (含) 之間的雙倍值。 | Double | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# MySqlDataNode
<a name="dp-object-mysqldatanode"></a>

 定義使用 MySQL 的資料節點。

**注意**  
`MySqlDataNode` 類型已移除。我們建議您改用 [SqlDataNode](dp-object-sqldatanode.md)。

## 範例
<a name="mysqldatanode-example"></a>

以下為此物件類型的範例。此物件會參考兩個您在相同管道定義檔案中定義的其他物件。`CopyPeriod` 是 `Schedule` 物件，`Ready` 則是先決條件物件。

```
{
  "id" : "Sql Table",
  "type" : "MySqlDataNode",
  "schedule" : { "ref" : "CopyPeriod" },
  "table" : "adEvents",
  "username": "user_name",
  "*password": "my_password",
  "connectionString": "jdbc:mysql://mysqlinstance-rds.example.us-east-1.rds.amazonaws.com:3306/database_name",
  "selectQuery" : "select * from #{table} where eventTime >= '#{@scheduledStartTime.format('YYYY-MM-dd HH:mm:ss')}' and eventTime < '#{@scheduledEndTime.format('YYYY-MM-dd HH:mm:ss')}'",
  "precondition" : { "ref" : "Ready" }
}
```

### 語法
<a name="mysqldatanode-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 資料表 | MySQL 資料庫中的資料表名稱。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| createTableSql | 可建立資料表的 SQL create table 表達式。 | String | 
| 資料庫 | 資料庫的名稱。 | 參考物件，例如 "database":\$1"ref":"myDatabaseId"\$1 | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| insertQuery | 可將資料載入資料表的 SQL 陳述式。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| 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 | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| schemaName | 保留資料表的結構描述名稱 | String | 
| selectQuery | 可從資料表擷取資料的 SQL 陳述式。 | String | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="mysqldatanode-seealso"></a>
+ [S3DataNode](dp-object-s3datanode.md)

# RedshiftDataNode
<a name="dp-object-redshiftdatanode"></a>

使用 Amazon Redshift 定義資料節點。 `RedshiftDataNode`代表資料庫內資料的屬性，例如您的管道所使用的資料表。

## 範例
<a name="redshiftdatanode-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyRedshiftDataNode",
  "type" : "RedshiftDataNode",
  "database": { "ref": "MyRedshiftDatabase" },
  "tableName": "adEvents",
  "schedule": { "ref": "Hour" }
}
```

## 語法
<a name="redshiftdatanode-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 資料庫 | 資料表所在的資料庫。 | 參考物件，例如 "database":\$1"ref":"myRedshiftDatabaseId"\$1 | 
| tableName | Amazon Redshift 資料表的名稱。如果資料表尚未存在且您已提供 createTableSql，則會建立資料表。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| createTableSql | 在資料庫建立資料表的 SQL 表達式。我們建議您指定應建立資料表的結構描述，例如：CREATE TABLE mySchema.myTable (bestColumn varchar(25) 主索引鍵 distkey， numberOfWins integer sortKey)。如果 tableName 指定的資料表不存在於結構schemaName中，則 會在 createTableSql 欄位中 AWS Data Pipeline 執行指令碼。例如，如果您將 schemaName 指定為 mySchema，但 createTableSql 欄位中未包含 mySchema，則建立資料表的結構描述錯誤 (預設會在 PUBLIC 中建立)。這是因為 AWS Data Pipeline 不會剖析您的 CREATE TABLE 陳述式。 | String | 
| dependsOn | 指定與另一個可執行物件的相依性 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| 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 | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| primaryKeys | 如果您未指定 RedShiftCopyActivity 目的地資料表的 primaryKeys，您可以使用將做為 mergeKey 的 primaryKeys 來指定資料行清單。不過，如果您在 Amazon Redshift 資料表中定義了現有的 primaryKey，則此設定會覆寫現有的金鑰。 | String | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| schemaName | 此選用欄位會指定 Amazon Redshift 資料表的結構描述名稱。如果未指定，結構描述名稱為 PUBLIC，這是 Amazon Redshift 中的預設結構描述。如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》。 | String | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# S3DataNode
<a name="dp-object-s3datanode"></a>

 使用 Amazon S3 定義資料節點。根據預設，S3DataNode 會使用伺服器端加密。若您要停用此設定，請將 s3EncryptionType 設為 NONE。

**注意**  
當您使用 `S3DataNode` 做為針對 `CopyActivity` 的輸入時，僅支援 CSV 及 TSV 資料格式。

## 範例
<a name="s3datanode-example"></a>

以下為此物件類型的範例。此物件會參考您在相同管道定義檔案中定義的另一個物件。`CopyPeriod` 是 `Schedule` 物件。

```
{
  "id" : "OutputData",
  "type" : "S3DataNode",
  "schedule" : { "ref" : "CopyPeriod" },
  "filePath" : "s3://amzn-s3-demo-bucket/#{@scheduledStartTime}.csv"
}
```

## 語法
<a name="s3datanode-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| 壓縮 | S3DataNode 所描述的資料壓縮類型。"none" 表示未使用任何壓縮，而 "gzip" 表示使用 gzip 演算法壓縮。此欄位僅支援使用 Amazon Redshift，以及當您搭配使用 S3DataNode 和 CopyActivity 時。 | 列舉 | 
| dataFormat | 此 S3DataNode 描述之資料的 DataFormat。 | 參考物件，例如 "dataFormat":\$1"ref":"myDataFormatId"\$1 | 
| dependsOn | 指定與另一個可執行物件的相依性 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| directoryPath | Amazon S3 目錄路徑 URI：s3://my-bucket/my-key-for-directory。您必須提供 filePath 或 directoryPath 值。 | String | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| filePath | Amazon S3 中的物件路徑 URI，例如 s3://my-bucket/my-key-for-file。您必須提供 filePath 或 directoryPath 值。這些項目代表資料夾和檔案名稱。使用 directoryPath 值，以容納目錄中的多個檔案。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| manifestFilePath | 資訊清單檔案的 Amazon S3 路徑，採用 Amazon Redshift 支援的格式。 AWS Data Pipeline 會使用資訊清單檔案將指定的 Amazon S3 檔案複製到資料表。此欄位僅在 RedShiftCopyActivity 參考 S3DataNode 時有效。 | String | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| 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 | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| s3EncryptionType | 覆寫 Amazon S3 加密類型。值是 SERVER\$1SIDE\$1ENCRYPTION 或 NONE。預設啟用伺服器端加密。 | 列舉 | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="s3datanode-seealso"></a>
+ [MySqlDataNode](dp-object-mysqldatanode.md)

# SqlDataNode
<a name="dp-object-sqldatanode"></a>

 定義使用 SQL 的資料節點。

## 範例
<a name="example-sql-data-node"></a>

以下為此物件類型的範例。此物件會參考兩個您在相同管道定義檔案中定義的其他物件。`CopyPeriod` 是 `Schedule` 物件，`Ready` 則是先決條件物件。

```
{
  "id" : "Sql Table",
  "type" : "SqlDataNode",
  "schedule" : { "ref" : "CopyPeriod" },
  "table" : "adEvents",
  "database":"myDataBaseName",
  "selectQuery" : "select * from #{table} where eventTime >= '#{@scheduledStartTime.format('YYYY-MM-dd HH:mm:ss')}' and eventTime < '#{@scheduledEndTime.format('YYYY-MM-dd HH:mm:ss')}'",
  "precondition" : { "ref" : "Ready" }
}
```

## 語法
<a name="sql-data-node-slots"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 資料表 | SQL 資料庫中的資料表名稱。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| createTableSql | 可建立資料表的 SQL create table 表達式。 | String | 
| 資料庫 | 資料庫的名稱。 | 參考物件，例如 "database":\$1"ref":"myDatabaseId"\$1 | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| insertQuery | 可將資料載入資料表的 SQL 陳述式。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| 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 | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| schemaName | 保留資料表的結構描述名稱 | String | 
| selectQuery | 可從資料表擷取資料的 SQL 陳述式。 | String | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="sql-data-node-see-also"></a>
+ [S3DataNode](dp-object-s3datanode.md)

# 活動
<a name="dp-object-activities"></a>

以下是 AWS Data Pipeline 活動物件：

**Topics**
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrActivity](dp-object-emractivity.md)
+ [HadoopActivity](dp-object-hadoopactivity.md)
+ [HiveActivity](dp-object-hiveactivity.md)
+ [HiveCopyActivity](dp-object-hivecopyactivity.md)
+ [PigActivity](dp-object-pigactivity.md)
+ [RedshiftCopyActivity](dp-object-redshiftcopyactivity.md)
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [SqlActivity](dp-object-sqlactivity.md)

# CopyActivity
<a name="dp-object-copyactivity"></a>

將資料從一個位置複製到另一個位置。`CopyActivity` 支援 [S3DataNode](dp-object-s3datanode.md) 和 [SqlDataNode](dp-object-sqldatanode.md) 做為輸入及輸出，並且複製操作一般會針對每筆記錄逐一執行。不過，當符合下列所有條件時， `CopyActivity`會提供高效能的 Amazon S3 到 Amazon S3 複本：
+ 輸入及輸出皆為 S3DataNode。
+ 輸入及輸出的 `dataFormat` 欄位皆相同。

若您提供壓縮資料檔案做為輸入，而並未在 S3 資料節點上使用 `compression` 欄位指出，則 `CopyActivity` 可能會失敗。在這種情況下，`CopyActivity` 將無法正確地偵測記錄結尾字元，導致操作失敗。此外，`CopyActivity` 支援從目錄複製到另一個目錄，以及將檔案複製到目錄，但逐筆記錄複製會在將目錄複製到檔案時發生。最後， `CopyActivity` 不支援複製分段 Amazon S3 檔案。

`CopyActivity` 的 CSV 支援具有特定限制。當您使用 S3DataNode 做為 的輸入時`CopyActivity`，您只能將 CSV 資料檔案格式的 Unix/Linux 變體用於 Amazon S3 輸入和輸出欄位。Unix/Linux 變體需要下列項目：
+ 分隔符號必須是 "," (逗號) 字元。
+ 記錄不會加上引號。
+ 預設逸出字元是 ASCII 值 92 (反斜線)。
+ 記錄結尾識別符是 ASCII 值 10 (或 "\$1n")。

Windows 類型系統通常會使用不同的記錄結尾字元序列：一個歸位字元及一個換行字元 (ASCII 值 13 及 ASCII 值 10)。您必須使用額外的機制來配合此差異，例如使用一個預先複製指令碼來修改輸入資料，確保 `CopyActivity` 能正確地偵測記錄結尾；否則，`CopyActivity` 會不斷失敗。

使用 `CopyActivity` 從 PostgreSQL RDS 物件匯出到 TSV 資料格式時，預設 NULL 字元是 \$1n。

## 範例
<a name="copyactivity-example"></a>

以下為此物件類型的範例。此物件會參考三個您在相同管道定義檔案中定義的其他物件。`CopyPeriod` 是 `Schedule` 物件，`InputData` 和 `OutputData` 則是資料節點物件。

```
{
  "id" : "S3ToS3Copy",
  "type" : "CopyActivity",
  "schedule" : { "ref" : "CopyPeriod" },
  "input" : { "ref" : "InputData" },
  "output" : { "ref" : "OutputData" },
  "runsOn" : { "ref" : "MyEc2Resource" }
}
```

## 語法
<a name="copyactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| input | 輸入資料來源。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料來源。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="copyactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)
+ [使用 將 MySQL 資料匯出至 Amazon S3 AWS Data Pipeline](dp-copydata-mysql.md)

# EmrActivity
<a name="dp-object-emractivity"></a>

 執行 EMR 叢集。

AWS Data Pipeline 針對步驟使用與 Amazon EMR 不同的格式；例如，在`EmrActivity`步驟欄位中的 JAR 名稱後面 AWS Data Pipeline 使用逗號分隔引數。下列範例顯示針對 Amazon EMR 格式化的步驟，後面接著其 AWS Data Pipeline 對等項目：

```
s3://amzn-s3-demo-bucket/MyWork.jar arg1 arg2 arg3
```

```
"s3://amzn-s3-demo-bucket/MyWork.jar,arg1,arg2,arg3"
```

## 範例
<a name="emractivity-example"></a>

以下為此物件類型的範例。此範例使用舊版 Amazon EMR。驗證此範例與您正在使用的 Amazon EMR 叢集版本是否正確。

此物件會參考三個您在相同管道定義檔案中定義的其他物件。`MyEmrCluster` 是 `EmrCluster` 物件，`MyS3Input` 和 `MyS3Output` 則是 `S3DataNode` 物件。

**注意**  
在此範例中，您可以將 `step` 欄位取代成您所需的叢集字串，該字串可以是 Pig 指令碼、Hadoop 串流叢集、您自己的 JAR (包含參數) 等。

Hadoop 2.x (AMI 3.x)

```
{
  "id" : "MyEmrActivity",
  "type" : "EmrActivity",
  "runsOn" : { "ref" : "MyEmrCluster" },
  "preStepCommand" : "scp remoteFiles localFiles",
  "step" : ["s3://amzn-s3-demo-bucket/myPath/myStep.jar,firstArg,secondArg,-files,s3://amzn-s3-demo-bucket/myPath/myFile.py,-input,s3://myinputbucket/path,-output,s3://myoutputbucket/path,-mapper,myFile.py,-reducer,reducerName","s3://amzn-s3-demo-bucket/myPath/myotherStep.jar,..."],
  "postStepCommand" : "scp localFiles remoteFiles",
  "input" : { "ref" : "MyS3Input" },
  "output" : { "ref" : "MyS3Output" }
}
```

**注意**  
若要在步驟中將引述傳遞給應用程式，您需要在指令碼的路徑中指定區域，如以下範例所示。此外，您可能需要逸出您傳遞的引數。例如，若您使用 `script-runner.jar` 執行殼層指令碼，並希望將引數傳遞給指令碼，您必須逸出分隔他們的逗號。以下步驟位置示範如何執行此作業：  

```
"step" : "s3://eu-west-1.elasticmapreduce/libs/script-runner/script-runner.jar,s3://datapipeline/echo.sh,a\\\\,b\\\\,c"
```
此步驟使用 `script-runner.jar` 執行 `echo.sh` 殼層指令碼，並將 `a`、`b` 和 `c` 做為單一引數傳遞給指令碼。第一個逸出字元會從結果引數中移除，因此您可能需要再次進行逸出。例如，若您在 JSON 使用 `File\.gz` 做為引數，您可以使用 `File\\\\.gz` 來逸出它。但是，由於第一個逸出會遭到捨棄，因此您必須使用 `File\\\\\\\\.gz `。

## 語法
<a name="emractivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考，以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行此任務的 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用於上傳管道日誌的 Amazon S3 URI，例如 's3：//BucketName/Prefix/'。 | String | 
| postStepCommand | 完成所有步驟後要執行的 Shell 指令碼。若要指定多個指令碼 (最多 255 個)，請新增多個 postStepCommand 欄位。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| preStepCommand | 執行任何步驟之前要執行的 Shell 指令碼。若要指定多個指令碼 (最多 255 個)，請新增多個 preStepCommand 欄位。 | String | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning |  在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料表。  如果您的 `EmrActivity`使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。   | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限。 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為：cron、ondemand 和 timeseries。timeseries 排程表示執行個體會排程在每個間隔的結尾。cron 排程表示執行個體會排程在每個間隔的開頭。ondemand 排程可讓您在每次啟用時執行一次管道。您不必複製或重新建立管道，然後再執行一次。若您使用 ondemand 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用 ondemand 管道，請針對每次後續執行呼叫 ActivatePipeline 操作。 | 列舉 | 
| 步驟 | 叢集要執行的一或多個步驟。若要指定多個步驟 (最多 255 個)，請新增多個步驟欄位。在 JAR 名稱後方，使用逗號分隔的引數，例如 s3://amzn-s3-demo-bucket/MyWork.jar,arg1,arg2,arg3。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="emractivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrCluster](dp-object-emrcluster.md)

# HadoopActivity
<a name="dp-object-hadoopactivity"></a>

 在叢集上執行 MapReduce 任務。叢集可以是受 AWS Data Pipeline 管理的 EMR 叢集，或是另一個資源 (若您使用 TaskRunner 的話)。請在您希望平行執行工作時使用 HadoopActivity。這可讓您使用 YARN 框架的排程資源，或是 Hadoop 1 中的 MapReduce 資源交涉程式。如果您想要使用 Amazon EMR Step 動作依序執行工作，您仍然可以使用 [EmrActivity](dp-object-emractivity.md)。

## 範例
<a name="hadoopactivity-example"></a>

**使用 管理的 EMR 叢集的 HadoopActivity AWS Data Pipeline**  
以下 HadoopActivity 物件會使用 EmrCluster 資源來執行程式：

```
 {
   "name": "MyHadoopActivity",
   "schedule": {"ref": "ResourcePeriod"},
   "runsOn": {"ref": “MyEmrCluster”},
   "type": "HadoopActivity",
   "preActivityTaskConfig":{"ref":"preTaskScriptConfig”},   
   "jarUri": "/home/hadoop/contrib/streaming/hadoop-streaming.jar",
   "argument": [
     "-files",
     “s3://elasticmapreduce/samples/wordcount/wordSplitter.py“,
     "-mapper",
     "wordSplitter.py",
     "-reducer",
     "aggregate",
     "-input",
     "s3://elasticmapreduce/samples/wordcount/input/",
     "-output",
     “s3://amzn-s3-demo-bucket/MyHadoopActivity/#{@pipelineId}/#{format(@scheduledStartTime,'YYYY-MM-dd')}"
   ],
   "maximumRetries": "0",
   "postActivityTaskConfig":{"ref":"postTaskScriptConfig”},
   "hadoopQueue" : “high”
 }
```

以下是對應的 *MyEmrCluster*，它會為 Hadoop 2 類型的 AMI 設定 YARN 中的 FairScheduler 和佇列。

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
   "hadoopSchedulerType" : "PARALLEL_FAIR_SCHEDULING",
  “amiVersion” : “3.7.0”,
  "bootstrapAction" : ["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-z,yarn.scheduler.capacity.root.queues=low\,high\,default,-z,yarn.scheduler.capacity.root.high.capacity=50,-z,yarn.scheduler.capacity.root.low.capacity=10,-z,yarn.scheduler.capacity.root.default.capacity=30”]
}
```

此為您用來在 Hadoop 1 中設定 FairScheduler 的 EmrCluster：

```
{
      "id": "MyEmrCluster",
      "type": "EmrCluster",    
      "hadoopSchedulerType": "PARALLEL_FAIR_SCHEDULING",
      "amiVersion": "2.4.8",
      "bootstrapAction": "s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-m,mapred.queue.names=low\\\\,high\\\\,default,-m,mapred.fairscheduler.poolnameproperty=mapred.job.queue.name"
          }
```

以下 EmrCluster 會為 Hadoop 2 類型的 AMI 設定 CapacityScheduler：

```
{
      "id": "MyEmrCluster",
      "type": "EmrCluster",
      "hadoopSchedulerType": "PARALLEL_CAPACITY_SCHEDULING",
      "amiVersion": "3.7.0",
      "bootstrapAction": "s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-z,yarn.scheduler.capacity.root.queues=low\\\\,high,-z,yarn.scheduler.capacity.root.high.capacity=40,-z,yarn.scheduler.capacity.root.low.capacity=60"
    }
```

**使用現有 EMR 叢集的 HadoopActivity**  
在此範例中，您可以使用工作者群組和 TaskRunner 來執行現有 EMR 叢集上的程式。以下管道定義會使用 HadoopActivity 來：
+ 只在 *myWorkerGroup* 資源上執行 MapReduce 程式。如需工作者群組的詳細資訊，請參閱[使用任務執行器在現有資源上執行工作](dp-how-task-runner-user-managed.md)。
+ 執行 preActivityTaskConfig 和 postActivityTaskConfig

```
{
  "objects": [
    {
      "argument": [
        "-files",
        "s3://elasticmapreduce/samples/wordcount/wordSplitter.py",
        "-mapper",
        "wordSplitter.py",
        "-reducer",
        "aggregate",
        "-input",
        "s3://elasticmapreduce/samples/wordcount/input/",
        "-output",
        "s3://amzn-s3-demo-bucket/MyHadoopActivity/#{@pipelineId}/#{format(@scheduledStartTime,'YYYY-MM-dd')}"
      ],
      "id": "MyHadoopActivity",
      "jarUri": "/home/hadoop/contrib/streaming/hadoop-streaming.jar",
      "name": "MyHadoopActivity",
      "type": "HadoopActivity"
    },
    {
      "id": "SchedulePeriod",
      "startDateTime": "start_datetime",
      "name": "SchedulePeriod",
      "period": "1 day",
      "type": "Schedule",
      "endDateTime": "end_datetime"
    },
    {
      "id": "ShellScriptConfig",
      "scriptUri": "s3://amzn-s3-demo-bucket/scripts/preTaskScript.sh",
      "name": "preTaskScriptConfig",
      "scriptArgument": [
        "test",
        "argument"
      ],
      "type": "ShellScriptConfig"
    },
    {
      "id": "ShellScriptConfig",
      "scriptUri": "s3://amzn-s3-demo-bucket/scripts/postTaskScript.sh",
      "name": "postTaskScriptConfig",
      "scriptArgument": [
        "test",
        "argument"
      ],
      "type": "ShellScriptConfig"
    },
    {
      "id": "Default",
      "scheduleType": "cron",
      "schedule": {
        "ref": "SchedulePeriod"
      },
      "name": "Default",
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/logs/2015-05-22T18:02:00.343Z642f3fe415",
      "maximumRetries": "0",    
      "workerGroup": "myWorkerGroup",
      "preActivityTaskConfig": {
        "ref": "preTaskScriptConfig"
      },
      "postActivityTaskConfig": {
        "ref": "postTaskScriptConfig"
      }    
    }
  ] 
}
```

## 語法
<a name="hadoopactivity-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| jarUri | 在 Amazon S3 或叢集的本機檔案系統中，要搭配執行 HadoopActivity 的 JAR 位置。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 要在其中執行此任務的 EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| argument | 要傳遞給 JAR 的引數。 | String | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| hadoopQueue | 要提交活動至其中的 Hadoop 排程器佇列名稱。 | String | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| mainClass | 搭配執行 HadoopActivity 的 JAR 主要類別。 | String | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="hadoopactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrCluster](dp-object-emrcluster.md)

# HiveActivity
<a name="dp-object-hiveactivity"></a>

在 EMR 叢集上執行 Hive 查詢。 `HiveActivity` 可讓您更輕鬆地設定 Amazon EMR 活動，並根據來自 Amazon S3 或 Amazon RDS 的輸入資料自動建立 Hive 資料表。您只需要指定要在來源資料上執行的 HiveQL。 會根據`HiveActivity`物件中的輸入欄位，以 `${input1}`、 `${input2}`等方式 AWS Data Pipeline 自動建立 Hive 資料表。

對於 Amazon S3 輸入， `dataFormat` 欄位用於建立 Hive 資料欄名稱。

對於 MySQL (Amazon RDS) 輸入，SQL 查詢的資料欄名稱用於建立 Hive 資料欄名稱。

**注意**  
此活動使用 Hive [CSV Serde](https://cwiki.apache.org/confluence/display/Hive/CSV+Serde)。

## 範例
<a name="hiveactivity-example"></a>

以下為此物件類型的範例。此物件會參考三個您在相同管道定義檔案中定義的其他物件。`MySchedule` 是 `Schedule` 物件，`MyS3Input` 和 `MyS3Output` 則是資料節點物件。

```
{
  "name" : "ProcessLogData",
  "id" : "MyHiveActivity",
  "type" : "HiveActivity",
  "schedule" : { "ref": "MySchedule" },
  "hiveScript" : "INSERT OVERWRITE TABLE ${output1} select host,user,time,request,status,size from ${input1};",
  "input" : { "ref": "MyS3Input" },
  "output" : { "ref": "MyS3Output" },
  "runsOn" : { "ref": "MyEmrCluster" }
}
```

## 語法
<a name="hiveactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考，以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱 [https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| hiveScript | 要執行的 Hive 指令碼。 | String | 
| scriptUri | 要執行的 Hive 指令碼位置 (例如 s3://scriptLocation)。 | String | 

 


****  

| 必要群組 | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 要在其上執行此 HiveActivity 的 EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 
| input | 輸入資料來源。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| output | 輸出資料來源。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| hadoopQueue | 要提交任務至其中的 Hadoop 排程器佇列名稱。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| 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 | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning | 在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料節點。 如果您的活動使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。  | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限。 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| scriptVariable | 指定執行指令碼時要傳遞給 Hive 的 Amazon EMR 指令碼變數。例如，以下範例指令碼變數會將 SAMPLE 和 FILTER\$1DATE 變數傳遞給 Hive：SAMPLE=s3://elasticmapreduce/samples/hive-ads 和  FILTER\$1DATE=\$1\$1format(@scheduledStartTime,'YYYY-MM-dd')\$1%。此欄位接受多個值，並可使用 script 和 scriptUri 欄位。此外，無論預備是設為 true 或 false，scriptVariable 都會正常運作。此欄位在使用 AWS Data Pipeline 表達式和函數，將動態值傳送給 Hive 時特別有用。 | String | 
| stage | 決定在執行指令碼之前或之後是否啟用預備。Hive 11 不允許，因此請使用 Amazon EMR AMI 3.2.0 版或更新版本。 | Boolean | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="hiveactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# HiveCopyActivity
<a name="dp-object-hivecopyactivity"></a>

在 EMR 叢集上執行 Hive 查詢。 `HiveCopyActivity` 可讓您更輕鬆地在 DynamoDB 資料表之間複製資料。 `HiveCopyActivity`接受 HiveQL 陳述式，以在資料欄和資料列層級篩選來自 DynamoDB 的輸入資料。

## 範例
<a name="hivecopyactivity-example"></a>

以下範例會示範如何使用 `HiveCopyActivity` 和 `DynamoDBExportDataFormat` 來將資料從一個 `DynamoDBDataNode` 複製到另一個，同時根據時間戳記來篩選資料。

```
{
  "objects": [
    {
      "id" : "DataFormat.1",
      "name" : "DataFormat.1",
      "type" : "DynamoDBExportDataFormat",
      "column" : "timeStamp BIGINT"
    },
    {
      "id" : "DataFormat.2",
      "name" : "DataFormat.2",
      "type" : "DynamoDBExportDataFormat"
    },
    {
      "id" : "DynamoDBDataNode.1",
      "name" : "DynamoDBDataNode.1",
      "type" : "DynamoDBDataNode",
      "tableName" : "item_mapped_table_restore_temp",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "DynamoDBDataNode.2",
      "name" : "DynamoDBDataNode.2",
      "type" : "DynamoDBDataNode",
      "tableName" : "restore_table",
      "region" : "us_west_1",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.2" }
    },
    {
      "id" : "EmrCluster.1",
      "name" : "EmrCluster.1",
      "type" : "EmrCluster",
      "schedule" : { "ref" : "ResourcePeriod" },
      "masterInstanceType" : "m1.xlarge",
      "coreInstanceCount" : "4"
    },
    {
      "id" : "HiveTransform.1",
      "name" : "Hive Copy Transform.1",
      "type" : "HiveCopyActivity",
      "input" : { "ref" : "DynamoDBDataNode.1" },
      "output" : { "ref" : "DynamoDBDataNode.2" },
      "schedule" :{ "ref" : "ResourcePeriod" },
      "runsOn" : { "ref" : "EmrCluster.1" },
      "filterSql" : "`timeStamp` > unix_timestamp(\"#{@scheduledStartTime}\", \"yyyy-MM-dd'T'HH:mm:ss\")"
    },
    {
      "id" : "ResourcePeriod",
      "name" : "ResourcePeriod",
      "type" : "Schedule",
      "period" : "1 Hour",
      "startDateTime" : "2013-06-04T00:00:00",
      "endDateTime" : "2013-06-04T01:00:00"
    }
  ]
}
```

## 語法
<a name="hivecopyactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 指定要在其中執行的叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| filterSql | Hive SQL 陳述式片段，可篩選要複製的 DynamoDB 或 Amazon S3 資料子集。篩選條件應該只包含述詞，而不是以WHERE子句開頭，因為 會自動 AWS Data Pipeline 新增它。 | String | 
| input | 輸入資料來源。此必須為 S3DataNode 或 DynamoDBDataNode。如果您使用 DynamoDBNode，請指定 DynamoDBExportDataFormat。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料來源。如果輸入是 S3DataNode，這必須為 DynamoDBDataNode。否則，此項目可以是 S3DataNode 或 DynamoDBDataNode。如果您使用 DynamoDBNode，請指定 DynamoDBExportDataFormat。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用於上傳管道日誌的 Amazon S3 URI 's3://BucketName/Key/'，例如 。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 可選擇性定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning | 在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料節點。 如果您的活動使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。  | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="hivecopyactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# PigActivity
<a name="dp-object-pigactivity"></a>

PigActivity 在 中為 Pig 指令碼提供原生支援， AWS Data Pipeline 無需使用 `ShellCommandActivity`或 `EmrActivity`。此外，PigActivity 支援資料預備。當預備欄位設為 True 時， AWS Data Pipeline 會將輸入資料做為 Pig 中的結構描述預備，而無須使用者輸入額外的程式碼。

## 範例
<a name="pigactivity-example"></a>

以下範例管道示範如何使用 `PigActivity`。範例管道會執行下列步驟：
+ MyPigActivity1 從 Amazon S3 載入資料，並執行 Pig 指令碼，以選取幾欄資料並將其上傳至 Amazon S3。
+ MyPigActivity2 會載入第一個輸出、選取幾欄和三列資料，並將其上傳到 Amazon S3 做為第二個輸出。
+ MyPigActivity3 會載入第二個輸出資料、將兩列資料插入 Amazon RDS，以及僅將名為 "fifth" 的資料欄插入 Amazon RDS。
+ MyPigActivity4 會載入 Amazon RDS 資料、選取第一列資料，並將其上傳至 Amazon S3。

```
{
  "objects": [
    {
      "id": "MyInputData1",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "directoryPath": "s3://amzn-s3-demo-bucket/pigTestInput",
      "name": "MyInputData1",
      "dataFormat": {
        "ref": "MyInputDataType1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyPigActivity4",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyOutputData3"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path/",
      "name": "MyPigActivity4",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "type": "PigActivity",
      "dependsOn": {
        "ref": "MyPigActivity3"
      },
      "output": {
        "ref": "MyOutputData4"
      },
      "script": "B = LIMIT ${input1} 1; ${output1} = FOREACH B GENERATE one;",
      "stage": "true"
    },
    {
      "id": "MyPigActivity3",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyOutputData2"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path",
      "name": "MyPigActivity3",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "script": "B = LIMIT ${input1} 2; ${output1} = FOREACH B GENERATE Fifth;",
      "type": "PigActivity",
      "dependsOn": {
        "ref": "MyPigActivity2"
      },
      "output": {
        "ref": "MyOutputData3"
      },
      "stage": "true"
    },
    {
      "id": "MyOutputData2",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "name": "MyOutputData2",
      "directoryPath": "s3://amzn-s3-demo-bucket/PigActivityOutput2",
      "dataFormat": {
        "ref": "MyOutputDataType2"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyOutputData1",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "name": "MyOutputData1",
      "directoryPath": "s3://amzn-s3-demo-bucket/PigActivityOutput1",
      "dataFormat": {
        "ref": "MyOutputDataType1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyInputDataType1",
      "name": "MyInputDataType1",
      "column": [
        "First STRING",
        "Second STRING",
        "Third STRING",
        "Fourth STRING",
        "Fifth STRING",
        "Sixth STRING",
        "Seventh STRING",
        "Eighth STRING",
        "Ninth STRING",
        "Tenth STRING"
      ],
      "inputRegEx": "^(\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+) (\\\\S+)",
      "type": "RegEx"
    },
    {
      "id": "MyEmrResource",
      "region": "us-east-1",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "keyPair": "example-keypair",
      "masterInstanceType": "m1.small",
      "enableDebugging": "true",
      "name": "MyEmrResource",
      "actionOnTaskFailure": "continue",
      "type": "EmrCluster"
    },
    {
      "id": "MyOutputDataType4",
      "name": "MyOutputDataType4",
      "column": "one STRING",
      "type": "CSV"
    },
    {
      "id": "MyOutputData4",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "directoryPath": "s3://amzn-s3-demo-bucket/PigActivityOutput3",
      "name": "MyOutputData4",
      "dataFormat": {
        "ref": "MyOutputDataType4"
      },
      "type": "S3DataNode"
    },
    {
      "id": "MyOutputDataType1",
      "name": "MyOutputDataType1",
      "column": [
        "First STRING",
        "Second STRING",
        "Third STRING",
        "Fourth STRING",
        "Fifth STRING",
        "Sixth STRING",
        "Seventh STRING",
        "Eighth STRING"
      ],
      "columnSeparator": "*",
      "type": "Custom"
    },
    {
      "id": "MyOutputData3",
      "username": "___",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "insertQuery": "insert into #{table} (one) values (?)",
      "name": "MyOutputData3",
      "*password": "___",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "connectionString": "jdbc:mysql://example-database-instance:3306/example-database",
      "selectQuery": "select * from #{table}",
      "table": "example-table-name",
      "type": "MySqlDataNode"
    },
    {
      "id": "MyOutputDataType2",
      "name": "MyOutputDataType2",
      "column": [
        "Third STRING",
        "Fourth STRING",
        "Fifth STRING",
        "Sixth STRING",
        "Seventh STRING",
        "Eighth STRING"
      ],
      "type": "TSV"
    },
    {
      "id": "MyPigActivity2",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyOutputData1"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path",
      "name": "MyPigActivity2",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "dependsOn": {
        "ref": "MyPigActivity1"
      },
      "type": "PigActivity",
      "script": "B = LIMIT ${input1} 3; ${output1} = FOREACH B GENERATE Third, Fourth, Fifth, Sixth, Seventh, Eighth;",
      "output": {
        "ref": "MyOutputData2"
      },
      "stage": "true"
    },
    {
      "id": "MyEmrResourcePeriod",
      "startDateTime": "2013-05-20T00:00:00",
      "name": "MyEmrResourcePeriod",
      "period": "1 day",
      "type": "Schedule",
      "endDateTime": "2013-05-21T00:00:00"
    },
    {
      "id": "MyPigActivity1",
      "scheduleType": "CRON",
      "schedule": {
        "ref": "MyEmrResourcePeriod"
      },
      "input": {
        "ref": "MyInputData1"
      },
      "pipelineLogUri": "s3://amzn-s3-demo-bucket/path",
      "scriptUri": "s3://amzn-s3-demo-bucket/script/pigTestScipt.q",
      "name": "MyPigActivity1",
      "runsOn": {
        "ref": "MyEmrResource"
      },
      "scriptVariable": [
        "column1=First",
        "column2=Second",
        "three=3"
      ],
      "type": "PigActivity",
      "output": {
        "ref": "MyOutputData1"
      },
      "stage": "true"
    }
  ]
}
```

`pigTestScript.q` 的內容如下所示。

```
B = LIMIT ${input1} $three; ${output1} = FOREACH B GENERATE $column1, $column2, Third, Fourth, Fifth, Sixth, Seventh, Eighth;
```

## 語法
<a name="pigactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。使用者必須指定另一個物件的排程參考，設定此物件的相依性執行順序。使用者可以明確設定物件的排程以滿足這項需求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，使用者可以建立有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| script | 要執行的 Pig 指令碼。 | String | 
| scriptUri | 要執行 Pig 指令碼的位置 (例如 s3://scriptLocation)。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 要在其中執行此 PigActivity 的 EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myEmrClusterId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| input | 輸入資料來源。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料來源。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 用於上傳管道日誌的 Amazon S3 URI （例如 's3：//BucketName/Key/')。 | String | 
| postActivityTaskConfig | 要執行的活動後組態指令碼。這包含 Amazon S33 中 shell 指令碼的 URI 和引數清單。 | 參考物件，例如 "postActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| preActivityTaskConfig | 要執行的活動前組態指令碼。這包含 Amazon S3 中的 shell 指令碼 URI 和引數清單。 | 參考物件，例如 "preActivityTaskConfig":\$1"ref":"myShellScriptConfigId"\$1 | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resizeClusterBeforeRunning | 在執行此活動之前調整叢集的大小，以容納指定為輸入或輸出的 DynamoDB 資料節點。 如果您的活動使用 `DynamoDBDataNode`做為輸入或輸出資料節點，而且如果您`resizeClusterBeforeRunning`將 設定為 `TRUE`，則 會使用`m3.xlarge`執行個體類型 AWS Data Pipeline 開始。這會將您選擇的執行個體類型覆寫為 `m3.xlarge`，可能會增加您的每月成本。  | Boolean | 
| resizeClusterMaxInstances | 調整大小演算法可請求的執行個體數目上限。 | Integer | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。時間序列樣式排程表示執行個體排程在每個間隔的結尾，而 Cron 樣式排程表示執行個體排程在每個間隔的開頭。隨需排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用隨需排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用隨需管道，您只要針對每次後續執行呼叫 ActivatePipeline 操作即可。值為：Cron、ondemand 和 timeseries。 | 列舉 | 
| scriptVariable | 要傳遞給 Pig 指令碼的引數。您可以搭配使用 scriptVariable 和 script 或 scriptUri。 | String | 
| stage | 決定是否啟用接移，並讓您的 Pig 指令碼存取暫存資料的資料表，例如 \$1\$1INPUT1\$1 和 \$1\$1OUTPUT1\$1。 | Boolean | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="pigactivity-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# RedshiftCopyActivity
<a name="dp-object-redshiftcopyactivity"></a>

將資料從 DynamoDB 或 Amazon S3 複製到 Amazon Redshift。您可以將資料載入新的資料表，或是輕鬆地將資料併入現有資料表。

以下是使用 `RedshiftCopyActivity` 的使用案例概觀：

1. 首先使用 AWS Data Pipeline 在 Amazon S3 中暫存您的資料。

1. 使用 將資料從 Amazon RDS 和 Amazon EMR `RedshiftCopyActivity`移至 Amazon Redshift。

   這可讓您將資料載入 Amazon Redshift，以便進行分析。

1. 使用 [SqlActivity](dp-object-sqlactivity.md)對已載入 Amazon Redshift 的資料執行 SQL 查詢。

 此外，`RedshiftCopyActivity` 可讓您使用 `S3DataNode`，因為它支援資訊清單檔案。如需詳細資訊，請參閱[S3DataNode](dp-object-s3datanode.md)。

## 範例
<a name="redshiftcopyactivity-example"></a>

以下為此物件類型的範例。

為了確保格式轉換，此範例使用 中的 [EMPTYASNULL](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-emptyasnull) 和 [IGNOREBLANKLINES](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-ignoreblanklines) 特殊轉換參數`commandOptions`。如需詳細資訊，請參閱《*Amazon Redshift 資料庫開發人員指南*》中的[資料轉換參數](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)。

```
{
  "id" : "S3ToRedshiftCopyActivity",
  "type" : "RedshiftCopyActivity",
  "input" : { "ref": "MyS3DataNode" },
  "output" : { "ref": "MyRedshiftDataNode" },
  "insertMode" : "KEEP_EXISTING",
  "schedule" : { "ref": "Hour" },
  "runsOn" : { "ref": "MyEc2Resource" },
  "commandOptions": ["EMPTYASNULL", "IGNOREBLANKLINES"]
}
```

以下範例管道定義會顯示使用 `APPEND` 插入模式的活動：

```
{
  "objects": [
    {
      "id": "CSVId1",
      "name": "DefaultCSV1",
      "type": "CSV"
    },
    {
      "id": "RedshiftDatabaseId1",
      "databaseName": "dbname",
      "username": "user",
      "name": "DefaultRedshiftDatabase1",
      "*password": "password",
      "type": "RedshiftDatabase",
      "clusterId": "redshiftclusterId"
    },
    {
      "id": "Default",
      "scheduleType": "timeseries",
      "failureAndRerunMode": "CASCADE",
      "name": "Default",
      "role": "DataPipelineDefaultRole",
      "resourceRole": "DataPipelineDefaultResourceRole"
    },
    {
      "id": "RedshiftDataNodeId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "tableName": "orders",
      "name": "DefaultRedshiftDataNode1",
      "createTableSql": "create table StructuredLogs (requestBeginTime CHAR(30) PRIMARY KEY DISTKEY SORTKEY, requestEndTime CHAR(30), hostname CHAR(100), requestDate varchar(20));",
      "type": "RedshiftDataNode",
      "database": {
        "ref": "RedshiftDatabaseId1"
      }
    },
    {
      "id": "Ec2ResourceId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "securityGroups": "MySecurityGroup",
      "name": "DefaultEc2Resource1",
      "role": "DataPipelineDefaultRole",
      "logUri": "s3://myLogs",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "type": "Ec2Resource"
    },
    {
      "id": "ScheduleId1",
      "startDateTime": "yyyy-mm-ddT00:00:00",
      "name": "DefaultSchedule1",
      "type": "Schedule",
      "period": "period",
      "endDateTime": "yyyy-mm-ddT00:00:00"
    },
    {
      "id": "S3DataNodeId1",
      "schedule": {
        "ref": "ScheduleId1"
      },
      "filePath": "s3://datapipeline-us-east-1/samples/hive-ads-samples.csv",
      "name": "DefaultS3DataNode1",
      "dataFormat": {
        "ref": "CSVId1"
      },
      "type": "S3DataNode"
    },
    {
      "id": "RedshiftCopyActivityId1",
      "input": {
        "ref": "S3DataNodeId1"
      },
      "schedule": {
        "ref": "ScheduleId1"
      },
      "insertMode": "APPEND",
      "name": "DefaultRedshiftCopyActivity1",
      "runsOn": {
        "ref": "Ec2ResourceId1"
      },
      "type": "RedshiftCopyActivity",
      "output": {
        "ref": "RedshiftDataNodeId1"
      }
    }
  ]
}
```

`APPEND` 操作會將項目新增到資料表，無論其主索引鍵或排序索引鍵為何。例如，若您有以下資料表，您可以使用相同的 ID 和使用者值附加記錄。

```
ID(PK)     USER
1          aaa
2          bbb
```

您可以使用相同的 ID 和使用者值附加記錄：

```
ID(PK)     USER
1          aaa
2          bbb
1          aaa
```

**注意**  
若 `APPEND` 操作遭到插斷並進行重試，其導致的重新執行管道可能會從開頭附加。這可能會造成進一步的重複，因此建議您留意此行為，特別是在您擁有任何計算資料列數量的邏輯時。

如需教學，請參閱[使用 將資料複製到 Amazon Redshift AWS Data Pipeline](dp-copydata-redshift.md)。

## 語法
<a name="redshiftcopyactivity-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| insertMode |   決定 AWS Data Pipeline 如何處理目標資料表中與要載入資料中的資料列重疊的預先存在資料。 有效值為：`KEEP_EXISTING`、`OVERWRITE_EXISTING`、`TRUNCATE` 和 `APPEND`。 `KEEP_EXISTING` 會將新列新增至資料表，並保持任何現有列不變。 `KEEP_EXISTING` 和 ` OVERWRITE_EXISTING` 使用主索引鍵、排序索引鍵和分發索引鍵，以識別出哪些傳入的列與現有列匹配。請參閱《Amazon Redshift *資料庫開發人員指南*》中的[更新和插入新資料](https://docs.aws.amazon.com/redshift/latest/dg/t_updating-inserting-using-staging-tables-.html)。 `TRUNCATE` 會刪除目的地資料表中的所有資料，再寫入新資料。  `APPEND` 會將所有記錄新增至 Redshift 資料表結尾。 `APPEND` 不需要主索引鍵、分發索引鍵或排序索引鍵，因此可能會附加可能重複的項目。  | 列舉 | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在排程間隔的執行期間會呼叫此物件。 指定其他物件的排程參考，以設定此物件的相依性執行順序。 在大部分的情況下，建議將排程參考放在預設的管道物件，讓所有物件都繼承該排程。例如，您可以指定 `"schedule": {"ref": "DefaultSchedule"}` 在物件上明確設定排程。 如果管道中的主排程包含巢狀排程，請建立具有排程參考的父物件。 如需範例選用排程組態的詳細資訊，請參閱[排程](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。  | 參考物件，例如： "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| commandOptions |  接受參數以在`COPY`操作期間傳遞至 Amazon Redshift 資料節點。如需參數的資訊，請參閱《Amazon Redshift *資料庫開發人員指南*》中的 [COPY](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html)。 `COPY` 載入資料表時，會嘗試隱含地將來源資料中的字串轉換為目標欄的資料類型。除了自動進行的預設資料轉換之外，如果您收到錯誤或有其他轉換需求，您也可以指定其他轉換參數。如需詳細資訊，請參閱《Amazon Redshift *資料庫開發人員指南*》中的[資料轉換參數](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html)。 如果資料格式與輸入或輸出資料節點相關聯，則會忽略提供的參數。 由於複製操作會先使用 `COPY` 將資料插入臨時資料表中，然後使用 `INSERT` 命令將資料從臨時資料表複製到目的地資料表，因此某些 `COPY` 參數會不適用，例如 `COPY` 命令啟用資料表自動壓縮的功能。如果壓縮為必要，請將欄編碼詳細資訊新增至 `CREATE TABLE` 陳述式。 此外，在某些情況下，當需要從 Amazon Redshift 叢集卸載資料並在 Amazon S3 中建立檔案時， `RedshiftCopyActivity`依賴 Amazon Redshift `UNLOAD`的操作。 若要在複製和卸載期間改善效能，請從 `UNLOAD` 命令指定 `PARALLEL OFF` 參數。如需參數的資訊，請參閱《Amazon Redshift *資料庫開發人員指南*》中的 [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html)。  | String | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件："dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| input | 輸入資料節點。資料來源可以是 Amazon S3、DynamoDB 或 Amazon Redshift。 | 參考物件： "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件："onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件： "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件： "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料節點。輸出位置可以是 Amazon S3 或 Amazon Redshift。 | 參考物件： "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件："parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件："precondition":\$1"ref":"myPreconditionId"\$1 | 
| 佇列 |  對應至 Amazon Redshift 中的 `query_group `設定，可讓您根據並行活動在佇列中的置放來指派並排定其優先順序。 Amazon Redshift 會將同時連線數限制在 15。如需詳細資訊，請參閱《Amazon RDS *資料庫開發人員指南*》中的[將查詢指派給佇列](https://docs.aws.amazon.com/AmazonRDS/latest/DeveloperGuide/cm-c-executing-queries.html)。  | String | 
| reportProgressTimeout |  遠端工作連續呼叫 `reportProgress` 的逾時。 如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。  | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType |  允許您指定管道中物件的排程。值為：`cron`、`ondemand` 和 `timeseries`。 `timeseries` 排程表示執行個體會排程在每個間隔的結尾。 `Cron` 排程表示執行個體會排程在每個間隔的開頭。 `ondemand` 排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。  若要使用 `ondemand` 管道，請針對每次後續執行呼叫 `ActivatePipeline` 操作。 若您使用 `ondemand` 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 `scheduleType`。  | 列舉 | 
| transformSql |  用於轉換輸入資料的 `SQL SELECT` 表達式。 在資料表執行名為 `staging` 的 `transformSql` 表達式。 當您從 DynamoDB 或 Amazon S3 複製資料時， AWS Data Pipeline 會建立名為「預備」的資料表，並最初載入其中的資料。此資料表中的資料用於更新目標資料表。 `transformSql` 的輸出結構描述，必須與最終目標表格的結構描述相符。 如果您指定 `transformSql` 選項，則會從指定的 SQL 陳述式建立第二個臨時資料表。然後，第二個臨時資料表中的資料會更新於最終目標資料表。  | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件："activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件： "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件的球體。代表其在生命週期中的位置。例如，元件物件會引發執行個體物件，該物件會執行嘗試物件。 | String | 

# ShellCommandActivity
<a name="dp-object-shellcommandactivity"></a>

 執行命令或指令碼。您可以使用 `ShellCommandActivity` 來執行時間序列或與 Cron 相似的排程任務。

當 `stage` 欄位設定為 true 並與 搭配使用時`S3DataNode`， `ShellCommandActivity`支援預備資料的概念，這表示您可以將資料從 Amazon S3 移至階段位置，例如 Amazon EC2 或您的本機環境、使用指令碼和 對資料執行工作`ShellCommandActivity`，並將其移回 Amazon S3。

在這種情況下，當您的殼層命令連線到輸入 `S3DataNode` 時，您的殼層指令碼會使用 `${INPUT1_STAGING_DIR}`、`${INPUT2_STAGING_DIR}` 及其他欄位 (指向 `ShellCommandActivity` 輸入欄位) 在資料上直接運作。

同樣地，殼層命令的輸出可以暫存在輸出目錄中，以自動推送到 Amazon S3，由 `${OUTPUT1_STAGING_DIR}`、 `${OUTPUT2_STAGING_DIR}`等參考。

這些表達式可做為命令列引數傳遞到殼層命令，讓您在資料轉換邏輯中使用。

`ShellCommandActivity` 會傳回 Linux 形式的錯誤代碼及字串。若 `ShellCommandActivity` 導致錯誤，傳回的 `error` 會是非零的值。

## 範例
<a name="shellcommandactivity-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "CreateDirectory",
  "type" : "ShellCommandActivity",
  "command" : "mkdir new-directory"
}
```

## 語法
<a name="shellcommandactivity-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在 `schedule` 間隔的執行期間會呼叫此物件。 若要設定此物件的相依性執行順序，請指定另一個物件的 `schedule` 參考。 若要滿足這項需求，請明確設定物件的 `schedule`，例如指定 `"schedule": {"ref": "DefaultSchedule"}`。 在大部分的情況下，建議您將 `schedule` 參考放在預設的管道物件，讓所有物件都繼承該排程。如果管道由排程的樹狀目錄 (主排程內還有排程) 組成，您可以建立含排程參考的父物件。 若要分散負載， 會稍微提前 AWS Data Pipeline 建立實體物件，但會按排程執行。 如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。  | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| command | 要執行的命令。使用 \$1 參考位置參數，並使用 scriptArgument 指定命令的參數。此值和任何相關聯的參數，都必須在您執行任務執行器的環境中執行。 | String | 
| scriptUri | 要下載並以 shell 命令執行之檔案的 Amazon S3 URI 路徑。僅指定一個 scriptUri 或 command 欄位。scriptUri 無法使用參數，請改為使用 command。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的運算資源，例如 Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則未在指定開始時間內完成的遠端活動，可能會重試。 | Period | 
| dependsOn | 指定與其他可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或尚未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | Amazon S3 URI，例如's3://BucketName/Key/'用於上傳管道的日誌。 | String | 
| precondition | 可選擇性定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| reportProgressTimeout | 遠端活動連續呼叫 reportProgress 的逾時。如果設定，則系統可能會將未回報指定時段進度的遠端活動視為已停滯並重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType |  可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。 值為：`cron`、`ondemand` 和 `timeseries`。 如果設為 `timeseries`，則執行個體會排程在每個間隔的結尾。 如果設為 `Cron`，則執行個體會排程在每個間隔的開頭。 如果設為 `ondemand`，您可以每次啟用執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用 `ondemand` 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 `scheduleType`。若要使用 `ondemand` 管道，請針對每次後續執行呼叫 `ActivatePipeline` 操作。  | 列舉 | 
| scriptArgument | JSON 格式的字串陣列，用於傳遞給由命令指定的命令。例如，如果命令為 echo \$11 \$12，請將 scriptArgument 指定為 "param1", "param2"。針對多個引數和參數，請依照下列所示來傳遞 scriptArgument： "scriptArgument":"arg1","scriptArgument":"param1","scriptArgument":"arg2","scriptArgument":"param2"。scriptArgument 只能與 command 一起使用；與 scriptUri 一起使用會造成錯誤。 | String | 
| stage | 決定是否啟用臨時功能，並讓您的 shell 命令存取臨時資料變數，例如 \$1\$1INPUT1\$1STAGING\$1DIR\$1 和  \$1\$1OUTPUT1\$1STAGING\$1DIR\$1。 | Boolean | 
| stderr |  路徑，可接收來自命令的重新導向系統錯誤訊息。如果您使用 runsOn 欄位，這必須是 Amazon S3 路徑，因為執行活動之資源的暫時性性質。不過，如果您指定 workerGroup 欄位，則允許使用本機檔案路徑。 | String | 
| stdout | 從 命令接收重新導向輸出的 Amazon S3 路徑。如果您使用 runsOn 欄位，這必須是 Amazon S3 路徑，因為執行活動之資源的暫時性性質。不過，如果您指定 workerGroup 欄位，則允許使用本機檔案路徑。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在之相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | Amazon EMR 步驟日誌僅適用於 Amazon EMR 活動嘗試。 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | 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 | 用來建立物件的 AWS Data Pipeline 版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件在生命週期中的位置。元件物件引發執行個體物件，該物件會執行嘗試物件。 | String | 

## 另請參閱
<a name="shellcommandactivity-seealso"></a>
+ [CopyActivity](dp-object-copyactivity.md)
+ [EmrActivity](dp-object-emractivity.md)

# SqlActivity
<a name="dp-object-sqlactivity"></a>

在資料庫上執行 SQL 查詢 (指令碼)。

## 範例
<a name="sqlactivity-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MySqlActivity",
  "type" : "SqlActivity",
  "database" : { "ref": "MyDatabaseID" },
  "script" : "SQLQuery" | "scriptUri" : s3://scriptBucket/query.sql,
  "schedule" : { "ref": "MyScheduleID" },
}
```

## 語法
<a name="sqlactivity-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 資料庫 | 要執行所提供 SQL 指令碼的資料庫。 | 參考物件，例如 "database":\$1"ref":"myDatabaseId"\$1 | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在排程間隔的執行期間會呼叫此物件。您必須指定另一個物件的排程參考，設定此物件的依存項目執行順序。您可以在物件上明確設定排程，例如指定 `"schedule": {"ref": "DefaultSchedule"}`。 在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。 若管道具有與主排程呈現巢狀結構的排程樹狀目錄，請建立具有排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。  | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| script | 要執行的 SQL 指令碼。您必須指定 script 或 scriptUri。當指令碼存放在 Amazon S3 中時，指令碼不會評估為表達式。當指令碼存放在 Amazon S3 中時，指定 scriptArgument 的多個值很有幫助。 | String | 
| scriptUri | URI，指定要在此活動中執行的 SQL 指令碼位置。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| runsOn | 執行活動或命令的可運算資源。例如，Amazon EC2 執行個體或 Amazon EMR 叢集。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| workerGroup | 工作者群組。這是用於路由任務。如果您提供 runsOn 值，且 workerGroup 存在，則會忽略 workerGroup。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| dependsOn | 指定與另一個可執行物件的相依性。 | 參考物件，例如 "dependsOn":\$1"ref":"myActivityId"\$1 | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| input | 輸入資料的位置。 | 參考物件，例如 "input":\$1"ref":"myDataNodeId"\$1 | 
| lateAfterTimeout | 管道排程啟動以來的時間期間，物件執行必須在此期間內啟動。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 若物件尚未進行排程，或是在管道排程啟動之後 'lateAfterTimeout' 所指定的時間期間內仍未完成時，應觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| output | 輸出資料的位置。此項目只在從指令碼內部進行參考 (例如 \$1\$1output.tablename\$1) 及透過在輸出資料節點中設定 'createTableSql' 來建立輸出資料表時才有用。SQL 查詢的輸出不會寫入輸出資料節點。 | 參考物件，例如 "output":\$1"ref":"myDataNodeId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| pipelineLogUri | 上傳管道日誌的 S3 URI (例如 's3://BucketName/Key/')。 | String | 
| precondition | 選擇是否定義先決條件。在所有先決條件滿足前，資料節點不會標示為"READY"。 | 參考物件，例如 "precondition":\$1"ref":"myPreconditionId"\$1 | 
| 佇列 | [僅限 Amazon Redshift] 對應到 Amazon Redshift 中的 query\$1group 設定，允許您根據活動在佇列中的位置，指派及優先處理同時進行的活動。Amazon Redshift 會將同時連線數限制在 15。如需詳細資訊，請參閱《Amazon Redshift 資料庫開發人員指南》中的[將查詢指派給佇列](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html)。 | String | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scheduleType |  排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為：`cron`、`ondemand` 和 `timeseries`。  `timeseries` 排程表示執行個體會排程在每個間隔的結尾。 `cron` 排程表示執行個體會排程在每個間隔的開頭。 `ondemand` 排程可讓您在每次啟用時執行一次管道。這表示您不必複製或重新建立管道，然後再執行一次。若您使用 `ondemand` 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 `scheduleType`。若要使用 `ondemand` 管道，請針對每次後續執行呼叫 `ActivatePipeline` 操作。  | 列舉 | 
| scriptArgument | 指令碼的變數清單。您也可以改為將表達式直接置放在指令碼欄位中。當指令碼存放在 Amazon S3 中時，針對 scriptArgument 指定多個值會很有用。範例：\$1\$1format(@scheduledStartTime, "YY-MM-DD HH:MM:SS"\$1\$1n\$1\$1format(plusPeriod(@scheduledStartTime, "1 day"), "YY-MM-DD HH:MM:SS"\$1 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| @finishedTime | 此物件完成其執行的時間。 | DateTime | 
| hadoopJobLog | 嘗試 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# Resources
<a name="dp-object-resources"></a>

以下是 AWS Data Pipeline 資源物件：

**Topics**
+ [Ec2Resource](dp-object-ec2resource.md)
+ [EmrCluster](dp-object-emrcluster.md)
+ [HttpProxy](dp-object-httpproxy.md)

# 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 不相容。您可以指定可透過下列 SSM 參數擷取的新 AMI 版本：`/aws/service/ami-amazon-linux-latest/amzn-ami-hvm-x86_64-ebs`。

如需有關未指定執行個體時所 AWS Data Pipeline 建立的預設 Amazon EC2 執行個體的資訊，請參閱 [依 AWS 區域的預設 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 物件。 EC2-Classic 我們強烈建議您為 VPCs 中的所有管道建立資源。此外，如果您在 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>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| resourceRole | 控制 Amazon EC2 執行個體可存取之資源的 IAM 角色。 | String | 
| role |  AWS Data Pipeline 用來建立 EC2 執行個體的 IAM 角色。 | String | 

 


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule |  在排程間隔的執行期間會呼叫此物件。 若要設定此物件的相依性執行順序，請指定另一個物件的排程參考。您可採用下列其中一種方式來這麼做： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/dp-object-ec2resource.html)  | 參考物件，例如 "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| actionOnResourceFailure | 此資源的資源故障之後所採取的動作。有效值為 "retryall" 和 "retrynone"。 | String | 
| actionOnTaskFailure | 此資源的任務失敗之後所採取的動作。有效值為 "continue" 或 "terminate"。 | String | 
| associatePublicIpAddress | 指出是否將公有 IP 地址指派此執行個體。如果執行個體位於 Amazon EC2 或 Amazon VPC 中，預設值為 true。否則，預設值為 false。 | Boolean | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則未在指定開始時間內完成的遠端活動，可能會重試。 | Period | 
| availabilityZone | 要在其中啟動 Amazon EC2 執行個體的可用區域。 | String | 
| disableIMDSv1 | 預設值為 false，並同時啟用 IMDSv1 和 IMDSv2。如果您將其設定為 true，則會停用 IMDSv1，並且只提供 IMDSv2s | Boolean | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| httpProxy | 用戶端用來連線至 AWS 服務的代理主機。 | 參考物件，例如  "httpProxy":\$1"ref":"myHttpProxyId"\$1 | 
| imageId | 用於執行個體的 AMI ID。根據預設， AWS Data Pipeline 會使用 HVM AMI 虛擬化類型。使用之特定 AMI ID 是以區域為基礎。您可以指定所選擇的 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)。  | String | 
| initTimeout | 等候資源啟動的時間長短。 | Period | 
| instanceCount | 已廢除。 | Integer | 
| instanceType | 要啟動的 Amazon EC2 執行個體類型。 | String | 
| keyPair | 金鑰對的名稱。如果您在未指定金鑰對的情況下啟動 Amazon EC2 執行個體，則無法登入。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| minInstanceCount | 已廢除。 | Integer | 
| 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/')。 | String | 
| region |  Amazon EC2 執行個體應執行之區域的程式碼。根據預設，執行個體執行所在的區域和管道相同。您可以在和相依資料集相同的區域中執行執行個體。 | 列舉 | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| runAsUser | 執行 TaskRunner 的使用者。 | String | 
| runsOn | 此物件不允許此欄位。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| scheduleType |  排程類型可讓您指定管道定義中的物件應該排程在間隔開頭、間隔結尾，還是隨需排程。 數值為： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/dp-object-ec2resource.html)  | 列舉 | 
| securityGroupIds | 一或多個 Amazon EC2 安全群組IDs，用於資源集區中的執行個體。 | String | 
| securityGroups | 一或多個 Amazon EC2 安全群組，用於資源集區中的執行個體。 | String | 
| spotBidPrice | 您 Spot 執行個體每小時的美元上限，這是介於 0 至 20.00 的獨佔小數值。 | String | 
| subnetId | 要在其中啟動執行個體的 Amazon EC2 子網路 ID。 | String | 
| terminateAfter | 在此小時數後終止資源。 | Period | 
| useOnDemandOnLastAttempt | 最後一次嘗試請求 Spot 執行個體時，提出隨需執行個體請求，而不是 Spot 執行個體請求。這可確保即使之前所有的嘗試都失敗，最後一次嘗試也不會中斷。 | Boolean | 
| workerGroup | 此物件不允許此欄位。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件在生命週期中的位置。元件物件引發執行個體物件，這會執行嘗試物件。 | String | 

# EmrCluster
<a name="dp-object-emrcluster"></a>

代表 Amazon EMR 叢集的組態。[EmrActivity](dp-object-emractivity.md) 和 使用此物件[HadoopActivity](dp-object-hadoopactivity.md)來啟動叢集。

**Topics**
+ [排程器](#emrcluster-schedulers)
+ [Amazon EMR 版本](#dp-emrcluster-release-versions)
+ [Amazon EMR 許可](#w2aac52c17b9c11)
+ [語法](#emrcluster-syntax)
+ [範例](emrcluster-example.md)
+ [另請參閱](#emrcluster-seealso)

## 排程器
<a name="emrcluster-schedulers"></a>

排程器可提供在 Hadoop 叢集內指定資源配置和任務優先順序的方式。管理員或使用者可以為各種類別的使用者和應用程式選擇排程器。排程器可使用佇列，將資源配置給使用者和應用程式。您可以在建立叢集時設定這些佇列。您接著可以設定特定類型工作和使用者的優先順序。這可以讓您有效率地使用叢集資源，允許超過一名使用者將工作提交至叢集。有三種可用的排程器類型：
+ [FairScheduler](https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/FairScheduler.html) — 嘗試在大量期間內平均排程資源。
+ [CapacityScheduler](https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html) — 使用佇列來允許叢集管理員將使用者指派給具有不同優先順序和資源配置的佇列。
+ 預設 — 由叢集使用，可由您的網站設定。

## Amazon EMR 版本
<a name="dp-emrcluster-release-versions"></a>

Amazon EMR 版本是一組來自大數據生態系統的開源應用程式。每個版本都包含不同的大數據應用程式、元件和功能，您可以在建立叢集時選擇讓 Amazon EMR 安裝和設定。請使用版本標籤指定發行版本。發行標籤的格式應為 `emr-x.x.x`。例如 `emr-5.30.0`。根據發行標籤`emr-4.0.0`和更新版本的 Amazon EMR 叢集會使用 `releaseLabel` 屬性來指定`EmrCluster`物件的發行標籤。早期版本使用此 `amiVersion` 屬性。

**重要**  
所有使用發行版本 5.22.0 或更新版本建立的 Amazon EMR 叢集都會使用 [Signature 第 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) 版來驗證對 Amazon S3 的請求。某些早期版本會使用簽章版本 2。簽章版本 2 支援將不再提供。如需詳細資訊，請參閱 [Amazon S3 更新 — Sigv2 棄用期間延長和修改](https://aws.amazon.com/blogs/aws/amazon-s3-update-sigv2-deprecation-period-extended-modified/)。我們強烈建議您使用支援 Signature 第 4 版的 Amazon EMR 發行版本。使用早期版本時，從 EMR 4.7.x 開始，系列中的最新版本均已更新，可支援簽章版本 4。使用早期版本的 EMR 版本時，我們建議您使用此系列中的最新版本。此外，請避免使用 EMR 4.7.0 以下版本。

### 考量事項與限制
<a name="dp-emrcluster-considerations"></a>

#### 使用最新版本的 Task Runner
<a name="dp-task-runner-latest"></a>

如果您使用具有發行標籤的自我管理`EmrCluster`物件，請使用最新的任務執行器。如需 Task Runner 的詳細資訊，請參閱[使用任務執行器](dp-using-task-runner.md)。您可以為所有 Amazon EMR 組態分類設定屬性值。如需詳細資訊，請參閱《*Amazon EMR 版本指南*》中的[設定應用程式](https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html)、 [EmrConfiguration](dp-object-emrconfiguration.md)和 [屬性](dp-object-property.md) 物件參考。

#### 支援 IMDSv2
<a name="dp-emr-imdsv2-support"></a>

舊版，僅 AWS Data Pipeline 支援 IMDSv1。現在， AWS Data Pipeline 支援 Amazon EMR 5.23.1、5.27.1 和 5.32 或更新版本，以及 Amazon EMR 6.2 或更新版本中的 IMDSv2。IMDSv2 使用工作階段導向方法，在從執行個體擷取中繼資料資訊時更好地處理身分驗證。您應該使用 TaskRunner-2.0 建立使用者受管資源，將執行個體設定為進行 IMDSv2 呼叫。 TaskRunner-2

#### Amazon EMR 5.32 或更新版本和 Amazon EMR 6.x
<a name="dp-emr-6-classpath"></a>

Amazon EMR 5.32 或更新版本和 6.x 發行系列使用 Hadoop 3.x 版，與 Hadoop 2.x 版相比，Hadoop 的 classpath 評估方式發生重大變化。Joda-Time 等常見程式庫已從 classpath 中移除。

如果 [EmrActivity](dp-object-emractivity.md)或 [HadoopActivity](dp-object-hadoopactivity.md)執行的 Jar 檔案對 Hadoop 3.x 中移除的程式庫具有相依性，則步驟會失敗，並顯示錯誤 `java.lang.NoClassDefFoundError`或 `java.lang.ClassNotFoundException`。使用 Amazon EMR 5.x 發行版本執行沒有問題的 Jar 檔案可能會發生這種情況。

若要修正此問題，您必須在啟動 `EmrActivity`或 之前，將 Jar 檔案相依性複製到`EmrCluster`物件上的 Hadoop classpath`HadoopActivity`。我們提供 bash 指令碼來執行此操作。bash 指令碼可在下列位置使用，其中 *MyRegion* 是`EmrCluster`物件執行 AWS 的區域，例如 `us-west-2`。

```
s3://datapipeline-MyRegion/MyRegion/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh
```

執行指令碼的方式取決於 `EmrActivity`或 是否在由 管理的資源`HadoopActivity`上執行， AWS Data Pipeline 還是在自我管理的資源上執行。

如果您使用 管理的資源 AWS Data Pipeline，請將 `bootstrapAction` 新增至 `EmrCluster` 物件。`bootstrapAction` 指定要複製為引數的指令碼和 Jar 檔案。每個`EmrCluster`物件最多可以新增 255 個`bootstrapAction`欄位，而且可以將`bootstrapAction`欄位新增至已有引導動作的`EmrCluster`物件。

若要將此指令碼指定為引導操作，請使用下列語法，其中 `JarFileRegion`是儲存 Jar 檔案的區域，而每個 *MyJarFile*** n都是要複製到 Hadoop classpath 之 Jar 檔案的 Amazon S3 中的絕對路徑。根據預設，請勿指定 Hadoop classpath 中的 Jar 檔案。

```
s3://datapipeline-MyRegion/MyRegion/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,JarFileRegion,MyJarFile1,MyJarFile2[, ...]
```

下列範例會指定引導操作，在 Amazon S3： `my-jar-file.jar`和 中複製兩個 Jar 檔案`emr-dynamodb-tool-4.14.0-jar-with-dependencies.jar`。範例中使用的 區域是 us-west-2。

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
  "keyPair" : "my-key-pair",
  "masterInstanceType" : "m5.xlarge",
  "coreInstanceType" : "m5.xlarge",
  "coreInstanceCount" : "2",
  "taskInstanceType" : "m5.xlarge",
  "taskInstanceCount": "2",
  "bootstrapAction" : ["s3://datapipeline-us-west-2/us-west-2/bootstrap-actions/latest/TaskRunner/copy-jars-to-hadoop-classpath.sh,us-west-2,s3://path/to/my-jar-file.jar,s3://dynamodb-dpl-us-west-2/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar"]
}
```

您必須儲存並啟用管道，新 的變更`bootstrapAction`才會生效。

如果您使用自我管理的資源，您可以將指令碼下載到叢集執行個體，並使用 SSH 從命令列執行指令碼。指令碼會建立名為 `datapipeline-jars.sh`的目錄，`/etc/hadoop/conf/shellprofile.d`以及該目錄中名為 的檔案。以命令列引數提供的 jar 檔案會複製到指令碼建立名為 的目錄`/home/hadoop/datapipeline_jars`。如果您的叢集設定不同，請在下載後適當修改指令碼。

在命令列上執行指令碼的語法與使用上一個範例中`bootstrapAction`顯示的 略有不同。在引數之間使用空格而非逗號，如下列範例所示。

```
./copy-jars-to-hadoop-classpath.sh us-west-2 s3://path/to/my-jar-file.jar s3://dynamodb-dpl-us-west-2/emr-ddb-storage-handler/4.14.0/emr-dynamodb-tools-4.14.0-jar-with-dependencies.jar
```

## Amazon EMR 許可
<a name="w2aac52c17b9c11"></a>

當您建立自訂 IAM 角色時，請仔細考慮叢集執行其工作所需的最低許可。請務必授予必要資源的存取權，例如 Amazon S3 中的檔案或 Amazon RDS、Amazon Redshift 或 DynamoDB 中的資料。若您希望將 `visibleToAllUsers` 設為 False，您的角色必須擁有適當的許可來執行此作業。請注意，`DataPipelineDefaultRole` 沒有這些許可。您必須提供 `DefaultDataPipelineResourceRole`和 `DataPipelineDefaultRole`角色的聯集做為`EmrCluster`物件角色，或為此目的建立自己的角色。

## 語法
<a name="emrcluster-syntax"></a>


****  

| 物件呼叫欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| schedule | 在排程間隔的執行期間會呼叫此物件。指定其他物件的排程參考，以設定此物件的相依性執行順序。您可以在物件上明確設定排程以滿足這項要求，例如，指定 "schedule": \$1"ref": "DefaultSchedule"\$1。在大部分的情況下，建議您將排程參考放在預設的管道物件，讓所有物件都繼承該排程。或者，如果管道有排程的樹狀目錄 (主排程內還有排程)，您可以建立含排程參考的父物件。如需範例選用排程組態的詳細資訊，請參閱[https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html)。 | 參考物件，例如  "schedule":\$1"ref":"myScheduleId"\$1 | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| actionOnResourceFailure | 此資源的資源故障之後所採取的動作。有效值為 "retryall" (這會在指定的時間內重試叢集所有任務) 和 "retrynone"。 | String | 
| actionOnTaskFailure | 此資源的任務失敗之後所採取的動作。有效值為 "continue (繼續)" (表示不終止叢集) 和 "terminate (終止)"。 | String | 
| additionalMasterSecurityGroupIds | EMR 叢集額外主安全群組的識別符，遵循 sg-01XXXX6a 格式。如需詳細資訊，請參閱《[Amazon EMR 管理指南》中的 Amazon EMR 其他安全群組](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-additional-sec-groups.html)。  | String | 
| additionalSlaveSecurityGroupIds | EMR 叢集額外從屬安全群組的識別符，遵循 sg-01XXXX6a 格式。 | String | 
| amiVersion | Amazon EMR 用來安裝叢集節點的 Amazon Machine Image (AMI) 版本。如需詳細資訊，請參閱 [Amazon EMR 管理指南](https://docs.aws.amazon.com/emr/latest/ManagementGuide/)。 | String | 
| 應用程式 | 以逗號分隔引數安裝在叢集中的應用程式。根據預設，會安裝 Hive 和 Pig。此參數僅適用於 Amazon EMR 4.0 版及更新版本。 | String | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| availabilityZone | 叢集執行所在的可用區域。 | String | 
| bootstrapAction | 當叢集啟動時要執行的動作。您可以指定逗號分隔引數。若要指定上限 255 的多個動作，請新增多個 bootstrapAction 欄位。預設行為是不使用任何引導操作啟動叢集。 | String | 
| 組態 | Amazon EMR 叢集的組態。此參數僅適用於 Amazon EMR 4.0 版及更新版本。 | 參考物件，例如 "configuration":\$1"ref":"myEmrConfigurationId"\$1 | 
| coreInstanceBidPrice | 您願意為 Amazon EC2 執行個體支付的最高 Spot 價格。如果已指定出價，Amazon EMR 會使用執行個體群組適用的 Spot 執行個體。指定貨幣為 USD。 | String | 
| coreInstanceCount | 用於叢集的核心節點數目。 | Integer | 
| coreInstanceType | 用於核心節點的 Amazon EC2 執行個體類型。請參閱 [Amazon EMR 叢集支援的 Amazon EC2 執行個體](dp-emr-supported-instance-types.md)。 | String | 
| coreGroupConfiguration | Amazon EMR 叢集核心執行個體群組的組態。此參數僅適用於 Amazon EMR 4.0 版及更新版本。 | 參考物件，例如 “configuration”: \$1“ref”: “myEmrConfigurationId”\$1 | 
| coreEbsConfiguration | 將連接至 Amazon EMR 叢集中核心群組中每個核心節點的 Amazon EBS 磁碟區的組態。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[支援 EBS 最佳化的執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)。 | 參考物件，例如 “coreEbsConfiguration”: \$1“ref”: “myEbsConfiguration”\$1 | 
| customAmiId | 僅適用於 Amazon EMR 5.7.0 版及更新版本。指定 Amazon EMR 佈建 Amazon EC2 執行個體時要使用之自訂 AMI 的 AMI ID。它也可以用來取代引導操作來自訂叢集節點組態。如需詳細資訊，請參閱《Amazon EMR 管理指南》中的下列主題。[使用自訂 AMI](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html) | String | 
| EbsBlockDeviceConfig |  與執行個體群組相關聯的請求 Amazon EBS 區塊型設備組態。包含指定的磁碟區數量，這些磁碟區會與執行個體群組中的每個執行個體產生關聯性。包含 `volumesPerInstance` 和 `volumeSpecification`，其中： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/dp-object-emrcluster.html)  | 參考物件，例如 “EbsBlockDeviceConfig”: \$1“ref”: “myEbsBlockDeviceConfig”\$1 | 
| emrManagedMasterSecurityGroupId | Amazon EMR 叢集主安全群組的識別符，其格式為 sg-01XXXX6a。如需詳細資訊，請參閱《Amazon EMR 管理指南》中的[設定安全群組](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-groups.html)。 | String | 
| emrManagedSlaveSecurityGroupId | Amazon EMR 叢集從屬安全群組的識別符，其格式為 sg-01XXXX6a。 | String | 
| enableDebugging | 在 Amazon EMR 叢集上啟用偵錯。 | String | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| hadoopSchedulerType | 叢集的排程器類型。有效類型為： PARALLEL\$1FAIR\$1SCHEDULING、 PARALLEL\$1CAPACITY\$1SCHEDULING 和  DEFAULT\$1SCHEDULER。 | 列舉 | 
| httpProxy | 用戶端用來連線到 AWS 服務的 Proxy 主機。 | 參考物件，例如 "httpProxy":\$1"ref":"myHttpProxyId"\$1 | 
| initTimeout | 等候資源啟動的時間長短。 | Period | 
| keyPair | 用來登入 Amazon EMR 叢集主節點的 Amazon EC2 金鑰對。 | String | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| masterInstanceBidPrice | 您願意為 Amazon EC2 執行個體支付的最高 Spot 價格。介於 0 到 20.00 的小數值 (不含 0 和 20.00)。指定貨幣為 USD。設定此值可為 Amazon EMR 叢集主節點啟用 Spot 執行個體。如果已指定出價，Amazon EMR 會使用執行個體群組適用的 Spot 執行個體。 | String | 
| masterInstanceType | 用於主節點的 Amazon EC2 執行個體類型。請參閱 [Amazon EMR 叢集支援的 Amazon EC2 執行個體](dp-emr-supported-instance-types.md)。 | String | 
| masterGroupConfiguration | Amazon EMR 叢集主要執行個體群組的組態。此參數僅適用於 Amazon EMR 4.0 版及更新版本。 | 參考物件，例如 “configuration”: \$1“ref”: “myEmrConfigurationId”\$1 | 
| masterEbsConfiguration | 將連接至 Amazon EMR 叢集中主群組中每個主節點的 Amazon EBS 磁碟區的組態。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[支援 EBS 最佳化的執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)。 | 參考物件，例如 “masterEbsConfiguration”: \$1“ref”: “myEbsConfiguration”\$1 | 
| maxActiveInstances | 同時作用中的元件執行個體數目上限。重新執行不計入作用中的執行個體數量。 | Integer | 
| maximumRetries | 故障時嘗試重試的次數上限。 | Integer | 
| 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/')。 | String | 
| region | Amazon EMR 叢集應在其中執行的區域程式碼。根據預設，叢集執行所在的區域和管道相同。您可以在和相依資料集相同的區域中執行叢集。 | 列舉 | 
| releaseLabel | EMR 叢集的版本標籤。 | String | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| resourceRole |  AWS Data Pipeline 用來建立 Amazon EMR 叢集的 IAM 角色。預設角色為 DataPipelineDefaultRole。 | String | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| role | 傳遞至 Amazon EMR 以建立 EC2 節點的 IAM 角色。 | String | 
| runsOn | 此物件不允許此欄位。 | 參考物件，例如 "runsOn":\$1"ref":"myResourceId"\$1 | 
| securityConfiguration | 要套用至叢集的 EMR 安全組態識別符。此參數僅適用於 Amazon EMR 4.8.0 版及更新版本。 | String | 
| serviceAccessSecurityGroupId | Amazon EMR 叢集之服務存取安全群組的識別符。 | 字串. 它遵循 sg-01XXXX6a 格式，例如 sg-1234abcd。 | 
| scheduleType | 排程類型可讓您指定管道定義的物件應該排程在間隔開頭還是間隔結尾。值為：cron、ondemand 和 timeseries。timeseries 排程表示執行個體會排程在每個間隔的結尾。cron 排程表示執行個體會排程在每個間隔的開頭。ondemand 排程可讓您在每次啟用時執行一次管道。您不必複製或重新建立管道，然後再執行一次。若您使用 ondemand 排程，則必須在預設物件中指定此排程，且其必須是針對管道中物件指定的唯一 scheduleType。若要使用 ondemand 管道，請針對每次後續執行呼叫 ActivatePipeline 操作。 | 列舉 | 
| subnetId | 要在其中啟動 Amazon EMR 叢集的子網路識別符。 | String | 
| supportedProducts | 在 Amazon EMR 叢集上安裝第三方軟體的參數，例如 Hadoop 的第三方分佈。 | String | 
| taskInstanceBidPrice | 您願意為 EC2 執行個體支付的 Spot 價格上限。介於 0 到 20.00 的小數值 (不含 0 和 20.00)。指定貨幣為 USD。如果已指定出價，Amazon EMR 會使用執行個體群組適用的 Spot 執行個體。 | String | 
| taskInstanceCount | 要用於 Amazon EMR 叢集的任務節點數量。 | Integer | 
| taskInstanceType | 用於任務節點的 Amazon EC2 執行個體類型。 | String | 
| taskGroupConfiguration | Amazon EMR 叢集任務執行個體群組的組態。此參數僅適用於 Amazon EMR 4.0 版及更新版本。 | 參考物件，例如 “configuration”: \$1“ref”: “myEmrConfigurationId”\$1 | 
| taskEbsConfiguration | Amazon EMR 叢集中將連接至任務群組中每個任務節點的 Amazon EBS 磁碟區的組態。如需詳細資訊，請參閱《Amazon EC2 使用者指南》中的[支援 EBS 最佳化的執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html)。 | 參考物件，例如 “taskEbsConfiguration”: \$1“ref”: “myEbsConfiguration”\$1 | 
| terminateAfter | 在這些小時後終止資源。 | Integer | 
| VolumeSpecification |   Amazon EBS 磁碟區規格，例如 Amazon EMR 叢集中連接至 Amazon EC2 執行個體的 Amazon EBS 磁碟區請求的磁碟區類型、IOPS 和大小，以 Gigibyte (GiB) 為單位。節點可以是核心節點、主節點或任務節點。 `VolumeSpecification` 包括： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/datapipeline/latest/DeveloperGuide/dp-object-emrcluster.html)  | 參考物件，例如 “VolumeSpecification”: \$1“ref”: “myVolumeSpecification”\$1 | 
| useOnDemandOnLastAttempt | 最後一次嘗試請求資源時，提出隨需執行個體請求，而不是 Spot 執行個體請求。這可確保即使之前所有的嘗試都失敗，最後一次嘗試也不會中斷。 | Boolean | 
| workerGroup | 此物件不允許此欄位。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| 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":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件在生命週期中的位置。元件物件引發執行個體物件，這會執行嘗試物件。 | String | 

# 範例
<a name="emrcluster-example"></a>

以下為此物件類型的範例。

**Topics**
+ [使用 hadoopVersion 啟動 Amazon EMR 叢集](emrcluster-example-launch.md)
+ [使用發行標籤 emr-4.x 或更高版本啟動 Amazon EMR 叢集](emrcluster-example-release-label.md)
+ [在 Amazon EMR 叢集上安裝其他軟體](emrcluster-example-install-software.md)
+ [停用 3.x 版本的伺服器端加密](emrcluster-example1-disable-encryption.md)
+ [停用 4.x 版本的伺服器端加密](emrcluster-example2-disable-encryption.md)
+ [設定 Hadoop KMS ACL 並在 HDFS 中建立加密區域](emrcluster-example-hadoop-kms.md)
+ [指定自訂 IAM 角色](emrcluster-example-custom-iam-roles.md)
+ [在適用於 Java 的 AWS 開發套件中使用 EmrCluster 資源](emrcluster-example-java.md)
+ [在私有子網路中設定 Amazon EMR 叢集](emrcluster-example-private-subnet.md)
+ [將 EBS 磁碟區連接到叢集節點](emrcluster-example-ebs.md)

# 使用 hadoopVersion 啟動 Amazon EMR 叢集
<a name="emrcluster-example-launch"></a>

**Example**  <a name="example1"></a>
下列範例使用 AMI 版本 1.0 和 Hadoop 0.20 啟動 Amazon EMR 叢集。  

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
  "hadoopVersion" : "0.20",
  "keyPair" : "my-key-pair",
  "masterInstanceType" : "m3.xlarge",
  "coreInstanceType" : "m3.xlarge",
  "coreInstanceCount" : "10",
  "taskInstanceType" : "m3.xlarge",
  "taskInstanceCount": "10",
  "bootstrapAction" : ["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,arg1,arg2,arg3","s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop/configure-other-stuff,arg1,arg2"]
}
```

# 使用發行標籤 emr-4.x 或更高版本啟動 Amazon EMR 叢集
<a name="emrcluster-example-release-label"></a>

**Example**  
下列範例使用較新的`releaseLabel`欄位啟動 Amazon EMR 叢集：  

```
{
  "id" : "MyEmrCluster",
  "type" : "EmrCluster",
  "keyPair" : "my-key-pair",
  "masterInstanceType" : "m3.xlarge",
  "coreInstanceType" : "m3.xlarge",
  "coreInstanceCount" : "10",
  "taskInstanceType" : "m3.xlarge",
  "taskInstanceCount": "10",
  "releaseLabel": "emr-4.1.0",
  "applications": ["spark", "hive", "pig"],
  "configuration": {"ref":"myConfiguration"}  
}
```

# 在 Amazon EMR 叢集上安裝其他軟體
<a name="emrcluster-example-install-software"></a>

**Example**  <a name="example2"></a>
`EmrCluster` 提供在 Amazon EMR 叢集上安裝第三方軟體`supportedProducts`的欄位，例如，它可讓您安裝自訂 Hadoop 分佈，例如 MapR。它接受要讀取及採取動作的第三方軟體引數逗號分隔清單。以下範例會示範如何使用 `EmrCluster` 的 `supportedProducts` 欄位建立自訂 MapR M3 版本叢集，在其上安裝 Karmasphere Analytics，並在其上執行 `EmrActivity` 物件。  

```
{
    "id": "MyEmrActivity",
    "type": "EmrActivity",
    "schedule": {"ref": "ResourcePeriod"},
    "runsOn": {"ref": "MyEmrCluster"},
    "postStepCommand": "echo Ending job >> /mnt/var/log/stepCommand.txt",    
    "preStepCommand": "echo Starting job > /mnt/var/log/stepCommand.txt",
    "step": "/home/hadoop/contrib/streaming/hadoop-streaming.jar,-input,s3n://elasticmapreduce/samples/wordcount/input,-output, \
     hdfs:///output32113/,-mapper,s3n://elasticmapreduce/samples/wordcount/wordSplitter.py,-reducer,aggregate"
  },
  {    
    "id": "MyEmrCluster",
    "type": "EmrCluster",
    "schedule": {"ref": "ResourcePeriod"},
    "supportedProducts": ["mapr,--edition,m3,--version,1.2,--key1,value1","karmasphere-enterprise-utility"],
    "masterInstanceType": "m3.xlarge",
    "taskInstanceType": "m3.xlarge"
}
```

# 停用 3.x 版本的伺服器端加密
<a name="emrcluster-example1-disable-encryption"></a>

**Example**  <a name="example3"></a>
根據預設， 建立的 Hadoop 2.x 版`EmrCluster`活動 AWS Data Pipeline 會啟用伺服器端加密。若您想要停用伺服器端加密，您必須在叢集物件定義中指定引導操作。  
以下範例會建立停用伺服器端加密的 `EmrCluster` 活動：  

```
{  
   "id":"NoSSEEmrCluster",
   "type":"EmrCluster",
   "hadoopVersion":"2.x",
   "keyPair":"my-key-pair",
   "masterInstanceType":"m3.xlarge",
   "coreInstanceType":"m3.large",
   "coreInstanceCount":"10",
   "taskInstanceType":"m3.large",
   "taskInstanceCount":"10",
   "bootstrapAction":["s3://Region.elasticmapreduce/bootstrap-actions/configure-hadoop,-e, fs.s3.enableServerSideEncryption=false"]
}
```

# 停用 4.x 版本的伺服器端加密
<a name="emrcluster-example2-disable-encryption"></a>

**Example**  <a name="example4"></a>
您必須使用 `EmrConfiguration` 物件停用伺服器端加密。  
以下範例會建立停用伺服器端加密的 `EmrCluster` 活動：  

```
   {
      "name": "ReleaseLabelCluster",
      "releaseLabel": "emr-4.1.0",
      "applications": ["spark", "hive", "pig"],
      "id": "myResourceId",
      "type": "EmrCluster",
      "configuration": {
        "ref": "disableSSE"
      }
    },
    {
      "name": "disableSSE",
      "id": "disableSSE",
      "type": "EmrConfiguration",
      "classification": "emrfs-site",
      "property": [{
        "ref": "enableServerSideEncryption"
      }
      ]
    },
    {
      "name": "enableServerSideEncryption",
      "id": "enableServerSideEncryption",
      "type": "Property",
      "key": "fs.s3.enableServerSideEncryption",
      "value": "false"
    }
```

# 設定 Hadoop KMS ACL 並在 HDFS 中建立加密區域
<a name="emrcluster-example-hadoop-kms"></a>

**Example**  <a name="example5"></a>
下列物件會建立 Hadoop KMS 的 ACL，並在 HDFS 中建立加密區域及對應的加密金鑰：  

```
{
      "name": "kmsAcls",
      "id": "kmsAcls",
      "type": "EmrConfiguration",
      "classification": "hadoop-kms-acls",
      "property": [
        {"ref":"kmsBlacklist"},
        {"ref":"kmsAcl"}
      ]
    },
    {
      "name": "hdfsEncryptionZone",
      "id": "hdfsEncryptionZone",
      "type": "EmrConfiguration",
      "classification": "hdfs-encryption-zones",
      "property": [
        {"ref":"hdfsPath1"},
        {"ref":"hdfsPath2"}
      ]
    },
    {
      "name": "kmsBlacklist",
      "id": "kmsBlacklist",
      "type": "Property",
      "key": "hadoop.kms.blacklist.CREATE",
      "value": "foo,myBannedUser"
    },
    {
      "name": "kmsAcl",
      "id": "kmsAcl",
      "type": "Property",
      "key": "hadoop.kms.acl.ROLLOVER",
      "value": "myAllowedUser"
    },
    {
      "name": "hdfsPath1",
      "id": "hdfsPath1",
      "type": "Property",
      "key": "/myHDFSPath1",
      "value": "path1_key"
    },
    {
      "name": "hdfsPath2",
      "id": "hdfsPath2",
      "type": "Property",
      "key": "/myHDFSPath2",
      "value": "path2_key"
    }
```

# 指定自訂 IAM 角色
<a name="emrcluster-example-custom-iam-roles"></a>

**Example**  <a name="example6"></a>
根據預設， `DataPipelineDefaultRole`會以 Amazon EMR 服務角色和 Amazon EC2 執行個體描述檔`DataPipelineDefaultResourceRole`的形式 AWS Data Pipeline 傳遞，以代表您建立資源。不過，您可以建立自訂 Amazon EMR 服務角色和自訂執行個體描述檔，並改用它們。 AWS Data Pipeline 應該有足夠的許可來使用自訂角色建立叢集，而且您必須新增 AWS Data Pipeline 做為信任的實體。  
下列範例物件指定 Amazon EMR 叢集的自訂角色：  

```
{  
   "id":"MyEmrCluster",
   "type":"EmrCluster",
   "hadoopVersion":"2.x",
   "keyPair":"my-key-pair",
   "masterInstanceType":"m3.xlarge",
   "coreInstanceType":"m3.large",
   "coreInstanceCount":"10",
   "taskInstanceType":"m3.large",
   "taskInstanceCount":"10",
   "role":"emrServiceRole",
   "resourceRole":"emrInstanceProfile"
}
```

# 在適用於 Java 的 AWS 開發套件中使用 EmrCluster 資源
<a name="emrcluster-example-java"></a>

**Example**  <a name="example7"></a>
下列範例示範如何使用 `EmrCluster`和 `EmrActivity` 建立 Amazon EMR 4.x 叢集，以使用 Java 開發套件執行 Spark 步驟：  

```
public class dataPipelineEmr4 {

  public static void main(String[] args) {
    
	AWSCredentials credentials = null;
	credentials = new ProfileCredentialsProvider("/path/to/AwsCredentials.properties","default").getCredentials();
	DataPipelineClient dp = new DataPipelineClient(credentials);
	CreatePipelineRequest createPipeline = new CreatePipelineRequest().withName("EMR4SDK").withUniqueId("unique");
	CreatePipelineResult createPipelineResult = dp.createPipeline(createPipeline);
	String pipelineId = createPipelineResult.getPipelineId();
    
	PipelineObject emrCluster = new PipelineObject()
	    .withName("EmrClusterObj")
	    .withId("EmrClusterObj")
	    .withFields(
			new Field().withKey("releaseLabel").withStringValue("emr-4.1.0"),
			new Field().withKey("coreInstanceCount").withStringValue("3"),
			new Field().withKey("applications").withStringValue("spark"),
			new Field().withKey("applications").withStringValue("Presto-Sandbox"),
			new Field().withKey("type").withStringValue("EmrCluster"),
			new Field().withKey("keyPair").withStringValue("myKeyName"),
			new Field().withKey("masterInstanceType").withStringValue("m3.xlarge"),
			new Field().withKey("coreInstanceType").withStringValue("m3.xlarge")        
			);
  
	PipelineObject emrActivity = new PipelineObject()
	    .withName("EmrActivityObj")
	    .withId("EmrActivityObj")
	    .withFields(
			new Field().withKey("step").withStringValue("command-runner.jar,spark-submit,--executor-memory,1g,--class,org.apache.spark.examples.SparkPi,/usr/lib/spark/lib/spark-examples.jar,10"),
			new Field().withKey("runsOn").withRefValue("EmrClusterObj"),
			new Field().withKey("type").withStringValue("EmrActivity")
			);
      
	PipelineObject schedule = new PipelineObject()
	    .withName("Every 15 Minutes")
	    .withId("DefaultSchedule")
	    .withFields(
			new Field().withKey("type").withStringValue("Schedule"),
			new Field().withKey("period").withStringValue("15 Minutes"),
			new Field().withKey("startAt").withStringValue("FIRST_ACTIVATION_DATE_TIME")
			);
      
	PipelineObject defaultObject = new PipelineObject()
	    .withName("Default")
	    .withId("Default")
	    .withFields(
			new Field().withKey("failureAndRerunMode").withStringValue("CASCADE"),
			new Field().withKey("schedule").withRefValue("DefaultSchedule"),
			new Field().withKey("resourceRole").withStringValue("DataPipelineDefaultResourceRole"),
			new Field().withKey("role").withStringValue("DataPipelineDefaultRole"),
			new Field().withKey("pipelineLogUri").withStringValue("s3://myLogUri"),
			new Field().withKey("scheduleType").withStringValue("cron")
			);     
      
	List<PipelineObject> pipelineObjects = new ArrayList<PipelineObject>();
    
	pipelineObjects.add(emrActivity);
	pipelineObjects.add(emrCluster);
	pipelineObjects.add(defaultObject);
	pipelineObjects.add(schedule);
    
	PutPipelineDefinitionRequest putPipelineDefintion = new PutPipelineDefinitionRequest()
	    .withPipelineId(pipelineId)
	    .withPipelineObjects(pipelineObjects);
    
	PutPipelineDefinitionResult putPipelineResult = dp.putPipelineDefinition(putPipelineDefintion);
	System.out.println(putPipelineResult);
    
	ActivatePipelineRequest activatePipelineReq = new ActivatePipelineRequest()
	    .withPipelineId(pipelineId);
	ActivatePipelineResult activatePipelineRes = dp.activatePipeline(activatePipelineReq);
	
      System.out.println(activatePipelineRes);
      System.out.println(pipelineId);
    
    }

}
```

# 在私有子網路中設定 Amazon EMR 叢集
<a name="emrcluster-example-private-subnet"></a>

**Example**  <a name="example8"></a>
此範例包含組態，該組態會在 VPC 內的私有子網路中啟動叢集。如需詳細資訊，請參閱《[Amazon EMR 管理指南》中的在 VPC 中啟動 Amazon EMR 叢集](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-vpc-launching-job-flows.html)。 **此組態為選擇性。您可以在任何使用 `EmrCluster` 物件的管道中使用它。  
若要在私有子網路中啟動 Amazon EMR 叢集，請在`EmrCluster`組態`serviceAccessSecurityGroupId`中指定 `SubnetId`、`emrManagedSlaveSecurityGroupId`、 `emrManagedMasterSecurityGroupId`和 。  

```
{
  "objects": [
    {
      "output": {
        "ref": "S3BackupLocation"
      },
      "input": {
        "ref": "DDBSourceTable"
      },
      "maximumRetries": "2",
      "name": "TableBackupActivity",
      "step": "s3://dynamodb-emr-#{myDDBRegion}/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,#{output.directoryPath},#{input.tableName},#{input.readThroughputPercent}",
      "id": "TableBackupActivity",
      "runsOn": {
        "ref": "EmrClusterForBackup"
      },
      "type": "EmrActivity",
      "resizeClusterBeforeRunning": "false"
    },
    {
      "readThroughputPercent": "#{myDDBReadThroughputRatio}",
      "name": "DDBSourceTable",
      "id": "DDBSourceTable",
      "type": "DynamoDBDataNode",
      "tableName": "#{myDDBTableName}"
    },
    {
      "directoryPath": "#{myOutputS3Loc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}",
      "name": "S3BackupLocation",
      "id": "S3BackupLocation",
      "type": "S3DataNode"
    },
    {
      "name": "EmrClusterForBackup",
      "coreInstanceCount": "1",
      "taskInstanceCount": "1",
      "taskInstanceType": "m4.xlarge",
      "coreInstanceType": "m4.xlarge",
      "releaseLabel": "emr-4.7.0",
      "masterInstanceType": "m4.xlarge",
      "id": "EmrClusterForBackup",
      "subnetId": "#{mySubnetId}",
      "emrManagedMasterSecurityGroupId": "#{myMasterSecurityGroup}",
      "emrManagedSlaveSecurityGroupId": "#{mySlaveSecurityGroup}",
      "serviceAccessSecurityGroupId": "#{myServiceAccessSecurityGroup}",
      "region": "#{myDDBRegion}",
      "type": "EmrCluster",
      "keyPair": "user-key-pair"
    },
    {
      "failureAndRerunMode": "CASCADE",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "#{myPipelineLogUri}",
      "scheduleType": "ONDEMAND",
      "name": "Default",
      "id": "Default"
    }
  ],
  "parameters": [
    {
      "description": "Output S3 folder",
      "id": "myOutputS3Loc",
      "type": "AWS::S3::ObjectKey"
    },
    {
      "description": "Source DynamoDB table name",
      "id": "myDDBTableName",
      "type": "String"
    },
    {
      "default": "0.25",
      "watermark": "Enter value between 0.1-1.0",
      "description": "DynamoDB read throughput ratio",
      "id": "myDDBReadThroughputRatio",
      "type": "Double"
    },
    {
      "default": "us-east-1",
      "watermark": "us-east-1",
      "description": "Region of the DynamoDB table",
      "id": "myDDBRegion",
      "type": "String"
    }
  ],
  "values": {
     "myDDBRegion": "us-east-1",
      "myDDBTableName": "ddb_table",
      "myDDBReadThroughputRatio": "0.25",
      "myOutputS3Loc": "s3://s3_path",
      "mySubnetId": "subnet_id",
      "myServiceAccessSecurityGroup":  "service access security group",
      "mySlaveSecurityGroup": "slave security group",
      "myMasterSecurityGroup": "master security group",
      "myPipelineLogUri": "s3://s3_path"
  }
}
```

# 將 EBS 磁碟區連接到叢集節點
<a name="emrcluster-example-ebs"></a>

**Example**  <a name="example8"></a>
您可以將 EBS 磁碟區連接到您管道中 EMR 叢集內任何類型的節點。若要將 EBS 磁碟區連接到節點，請在您的 `EmrCluster` 組態中使用 `coreEbsConfiguration`、`masterEbsConfiguration` 和 `TaskEbsConfiguration`。  
此 Amazon EMR 叢集範例會將 Amazon EBS 磁碟區用於其主節點、任務和核心節點。如需詳細資訊，請參閱《[Amazon EMR 管理指南》中的 Amazon EMR 中的 Amazon EBS 磁碟區](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-storage.html)。 **  
這些組態都是選擇性的。您可以在任何使用 `EmrCluster` 物件的管道中使用他們。  
在管道中，按一下 `EmrCluster` 物件組態，選擇 **Master EBS Configuration (主要 EBS 組態)**、**Core EBS Configuration (核心 EBS 組態)** 或 **Task EBS Configuration (任務 EBS 組態)**，然後輸入與以下範例相似的組態詳細資訊。  

```
{
  "objects": [
    {
      "output": {
        "ref": "S3BackupLocation"
      },
      "input": {
        "ref": "DDBSourceTable"
      },
      "maximumRetries": "2",
      "name": "TableBackupActivity",
      "step": "s3://dynamodb-emr-#{myDDBRegion}/emr-ddb-storage-handler/2.1.0/emr-ddb-2.1.0.jar,org.apache.hadoop.dynamodb.tools.DynamoDbExport,#{output.directoryPath},#{input.tableName},#{input.readThroughputPercent}",
      "id": "TableBackupActivity",
      "runsOn": {
        "ref": "EmrClusterForBackup"
      },
      "type": "EmrActivity",
      "resizeClusterBeforeRunning": "false"
    },
    {
      "readThroughputPercent": "#{myDDBReadThroughputRatio}",
      "name": "DDBSourceTable",
      "id": "DDBSourceTable",
      "type": "DynamoDBDataNode",
      "tableName": "#{myDDBTableName}"
    },
    {
      "directoryPath": "#{myOutputS3Loc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}",
      "name": "S3BackupLocation",
      "id": "S3BackupLocation",
      "type": "S3DataNode"
    },
    {
      "name": "EmrClusterForBackup",
      "coreInstanceCount": "1",
      "taskInstanceCount": "1",
      "taskInstanceType": "m4.xlarge",
      "coreInstanceType": "m4.xlarge",
      "releaseLabel": "emr-4.7.0",
      "masterInstanceType": "m4.xlarge",
      "id": "EmrClusterForBackup",
      "subnetId": "#{mySubnetId}",
      "emrManagedMasterSecurityGroupId": "#{myMasterSecurityGroup}",
      "emrManagedSlaveSecurityGroupId": "#{mySlaveSecurityGroup}",
      "region": "#{myDDBRegion}",
      "type": "EmrCluster",
      "coreEbsConfiguration": {
        "ref": "EBSConfiguration"
      },
      "masterEbsConfiguration": {
        "ref": "EBSConfiguration"
      },
      "taskEbsConfiguration": {
        "ref": "EBSConfiguration"
      },
      "keyPair": "user-key-pair"
    },
    {
       "name": "EBSConfiguration",
        "id": "EBSConfiguration",
        "ebsOptimized": "true",
        "ebsBlockDeviceConfig" : [
            { "ref": "EbsBlockDeviceConfig" }
        ],
        "type": "EbsConfiguration"
    },
    {
        "name": "EbsBlockDeviceConfig",
        "id": "EbsBlockDeviceConfig",
        "type": "EbsBlockDeviceConfig",
        "volumesPerInstance" : "2",
        "volumeSpecification" : {
            "ref": "VolumeSpecification"
        }
    },
    {
      "name": "VolumeSpecification",
      "id": "VolumeSpecification",
      "type": "VolumeSpecification",
      "sizeInGB": "500",
      "volumeType": "io1",
      "iops": "1000"
    },
    {
      "failureAndRerunMode": "CASCADE",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "#{myPipelineLogUri}",
      "scheduleType": "ONDEMAND",
      "name": "Default",
      "id": "Default"
    }
  ],
  "parameters": [
    {
      "description": "Output S3 folder",
      "id": "myOutputS3Loc",
      "type": "AWS::S3::ObjectKey"
    },
    {
      "description": "Source DynamoDB table name",
      "id": "myDDBTableName",
      "type": "String"
    },
    {
      "default": "0.25",
      "watermark": "Enter value between 0.1-1.0",
      "description": "DynamoDB read throughput ratio",
      "id": "myDDBReadThroughputRatio",
      "type": "Double"
    },
    {
      "default": "us-east-1",
      "watermark": "us-east-1",
      "description": "Region of the DynamoDB table",
      "id": "myDDBRegion",
      "type": "String"
    }
  ],
  "values": {
     "myDDBRegion": "us-east-1",
      "myDDBTableName": "ddb_table",
      "myDDBReadThroughputRatio": "0.25",
      "myOutputS3Loc": "s3://s3_path",
      "mySubnetId": "subnet_id",
      "mySlaveSecurityGroup": "slave security group",
      "myMasterSecurityGroup": "master security group",
      "myPipelineLogUri": "s3://s3_path"
  }
}
```

## 另請參閱
<a name="emrcluster-seealso"></a>
+ [EmrActivity](dp-object-emractivity.md)

# HttpProxy
<a name="dp-object-httpproxy"></a>

HttpProxy 可讓您設定自己的代理，並讓 Task Runner 透過它存取 AWS Data Pipeline 服務。您不需要使用此資訊設定執行中的 Task Runner。

## TaskRunner 中的 HttpProxy 範例
<a name="example9"></a>

以下管道定義顯示 `HttpProxy` 物件：

```
{
  "objects": [
    {
      "schedule": {
        "ref": "Once"
      },
      "pipelineLogUri": "s3://myDPLogUri/path",
      "name": "Default",
      "id": "Default"
    },
    {
      "name": "test_proxy",
      "hostname": "hostname",
      "port": "port",
      "username": "username",
      "*password": "password",
      "windowsDomain": "windowsDomain",
      "type": "HttpProxy",
      "id": "test_proxy",
    },
    {
      "name": "ShellCommand",
      "id": "ShellCommand",
      "runsOn": {
        "ref": "Resource"
      },
      "type": "ShellCommandActivity",
      "command": "echo 'hello world' "
    },
    {
      "period": "1 day",
      "startDateTime": "2013-03-09T00:00:00",
      "name": "Once",
      "id": "Once",
      "endDateTime": "2013-03-10T00:00:00",
      "type": "Schedule"
    },
    {
      "role": "dataPipelineRole",
      "httpProxy": {
        "ref": "test_proxy"
      },
      "actionOnResourceFailure": "retrynone",
      "maximumRetries": "0",
      "type": "Ec2Resource",
      "terminateAfter": "10 minutes",
      "resourceRole": "resourceRole",
      "name": "Resource",
      "actionOnTaskFailure": "terminate",
      "securityGroups": "securityGroups",
      "keyPair": "keyPair",
      "id": "Resource",
      "region": "us-east-1"
    }
  ],
  "parameters": []
}
```

## 語法
<a name="httpproxy-slots"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| hostname | 用戶端用來連線到 AWS 服務的代理主機。 | String | 
| port | 用戶端用來連線到 AWS 服務的代理主機連接埠。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| \$1password | 代理的密碼。 | String | 
| s3NoProxy | 在連線到 Amazon S3 時停用 HTTP 代理 | Boolean | 
| 使用者名稱 | 代理的使用者名稱。 | String | 
| windowsDomain | NTLM 代理的 Windows 網域名稱。 | String | 
| windowsWorkgroup | NTLM 代理的 Windows 工作群組名稱。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# 先決條件
<a name="dp-object-preconditions"></a>

以下是 AWS Data Pipeline 先決條件物件：

**Topics**
+ [DynamoDBDataExists](dp-dynamodbdataexists.md)
+ [DynamoDBTableExists](dp-dynamodbtableexists.md)
+ [存在](dp-object-exists.md)
+ [S3KeyExists](dp-object-S3KeyExists.md)
+ [S3PrefixNotEmpty](dp-object-s3prefixnotempty.md)
+ [ShellCommandPrecondition](dp-object-shellcommandprecondition.md)

# DynamoDBDataExists
<a name="dp-dynamodbdataexists"></a>

 檢查 DynamoDB 資料表中是否存在資料的先決條件。

## 語法
<a name="dp-dynamodbdataexists-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| role | 指定要用來執行先決條件的角色。 | String | 
| tableName | 要檢查的 DynamoDB 資料表。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| preconditionTimeout | 自開始起的一段期間，在這段期間之後，如果仍未符合先決條件即會將其標示為失敗 | Period | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| currentRetryCount | 在這個嘗試中，已嘗試過先決條件的次數。 | String | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| lastRetryTime | 在這個嘗試中，上次嘗試先決條件的時間。 | String | 
| 節點 | 即將執行此先決條件的節點 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# DynamoDBTableExists
<a name="dp-dynamodbtableexists"></a>

 檢查 DynamoDB 資料表是否存在的先決條件。

## 語法
<a name="dp-dynamodbtableexists-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| role | 指定要用來執行先決條件的角色。 | String | 
| tableName | 要檢查的 DynamoDB 資料表。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| preconditionTimeout | 自開始起的一段期間，在這段期間之後，如果仍未符合先決條件即會將其標示為失敗 | Period | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在相依性鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| currentRetryCount | 在這個嘗試中，已嘗試過先決條件的次數。 | String | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| lastRetryTime | 在這個嘗試中，上次嘗試先決條件的時間。 | String | 
| 節點 | 即將執行此先決條件的節點 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# 存在
<a name="dp-object-exists"></a>

 檢查資料節點物件是否存在。

**注意**  
我們建議您改用系統管理的先決條件。如需詳細資訊，請參閱[先決條件](dp-concepts-preconditions.md)。

## 範例
<a name="exists-example"></a>

以下為此物件類型的範例。`InputData` 物件會參考此物件 (`Ready`)，加上其他您在相同管道定義檔案中定義的物件。`CopyPeriod` 是 `Schedule` 物件。

```
{
  "id" : "InputData",
  "type" : "S3DataNode",
  "schedule" : { "ref" : "CopyPeriod" },
  "filePath" : "s3://amzn-s3-demo-bucket/InputData/#{@scheduledStartTime.format('YYYY-MM-dd-hh:mm')}.csv",
  "precondition" : { "ref" : "Ready" }
},
{
  "id" : "Ready",
  "type" : "Exists"
}
```

## 語法
<a name="exists-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| preconditionTimeout | 自開始起的一段期間，在這段期間之後，如果仍未符合先決條件即會將其標示為失敗 | Period | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| 節點 | 即將執行此先決條件的節點。 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

## 另請參閱
<a name="exists-seealso"></a>
+ [ShellCommandPrecondition](dp-object-shellcommandprecondition.md)

# S3KeyExists
<a name="dp-object-S3KeyExists"></a>

 檢查金鑰是否存在於 Amazon S3 資料節點中。

## 範例
<a name="dp-object-S3KeyExists-example"></a>

以下為此物件類型的範例。當 `s3Key` 參數所參考的鍵 (`s3://amzn-s3-demo-bucket/mykey`) 存在時，便會觸發先決條件。

```
{
"id" : "InputReady",
"type" : "S3KeyExists",
"role" : "test-role",
"s3Key" : "s3://amzn-s3-demo-bucket/mykey"
}
```

您也可以在第二個管道上使用 `S3KeyExists` 做為先決條件，等待第一個管道完成。若要這麼做：

1. 在第一個管道完成時，將檔案寫入 Amazon S3。

1. 在第二個管道上建立 `S3KeyExists` 先決條件。

## 語法
<a name="S3KeyExists-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| role | 指定要用來執行先決條件的角色。 | String | 
| s3Key | Amazon S3 金鑰。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 再一次嘗試完成遠端工作之前逾時。如果設定，則系統可能會再次嘗試未在開始之後、設定時間內完成的遠端活動。 | Period | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為。 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maximumRetries | 在故障發生時可啟動的嘗試數量上限。 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| preconditionTimeout | 自開始起的一段期間，在這段期間之後，如果仍未符合先決條件即會將其標示為失敗。 | Period | 
| reportProgressTimeout | 遠端工作連續呼叫  reportProgress 的逾時。如果設定，則系統可能會將未回報指定時段進度的遠端活動視為已停滯並重試。 | Period | 
| retryDelay | 兩次連續嘗試之間的逾時持續時間。 | Period | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| currentRetryCount | 在這個嘗試中，已嘗試過先決條件的次數。 | String | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| lastRetryTime | 在這個嘗試中，上次嘗試先決條件的時間。 | String | 
| 節點 | 即將執行此先決條件的節點 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="S3KeyExists-seealso"></a>
+ [ShellCommandPrecondition](dp-object-shellcommandprecondition.md)

# S3PrefixNotEmpty
<a name="dp-object-s3prefixnotempty"></a>

檢查具有指定字首 （表示為 URI) 的 Amazon S3 物件是否存在的先決條件。

## 範例
<a name="s3prefixnotempty-example"></a>

以下是此物件類型的範例，使用必要、選擇性及表達式欄位。

```
{
  "id" : "InputReady",
  "type" : "S3PrefixNotEmpty",
  "role" : "test-role",
  "s3Prefix" : "#{node.filePath}"
}
```

## 語法
<a name="s3prefixnotempty-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| role | 指定要用來執行先決條件的角色。 | String | 
| s3Prefix | 用來檢查物件是否存在的 Amazon S3 字首。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| preconditionTimeout | 自開始起的一段期間，在這段期間之後，如果仍未符合先決條件即會將其標示為失敗 | Period | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| currentRetryCount | 在這個嘗試中，已嘗試過先決條件的次數。 | String | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| lastRetryTime | 在這個嘗試中，上次嘗試先決條件的時間。 | String | 
| 節點 | 即將執行此先決條件的節點。 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間。 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間。 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="s3prefixnotempty-seealso"></a>
+ [ShellCommandPrecondition](dp-object-shellcommandprecondition.md)

# ShellCommandPrecondition
<a name="dp-object-shellcommandprecondition"></a>

 可做為先決條件執行的 Unix/Linux 殼層命令。

## 範例
<a name="shellcommandprecondition-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "VerifyDataReadiness",
  "type" : "ShellCommandPrecondition",
  "command" : "perl check-data-ready.pl"
}
```

## 語法
<a name="shellcommandprecondition-syntax"></a>


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| command | 要執行的命令。此值和任何相關聯的參數，都必須在您執行任務執行器的環境中執行。 | String | 
| scriptUri | 要下載並以 shell 命令執行之檔案的 Amazon S3 URI 路徑。只應使用一個 scriptUri 或 command 欄位。scriptUri 無法使用參數，請改用 command。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| attemptStatus | 遠端活動最新回報的狀態。 | String | 
| attemptTimeout | 遠端工作完成的逾時。如果設定，則系統可能會重試未在設定開始時間內完成的遠端活動。 | Period | 
| failureAndRerunMode | 描述相依性故障或重新執行時的消費者節點行為 | 列舉 | 
| lateAfterTimeout | 物件必須完成的管道啟動後經過的時間。只有在排程類型未設定為 時，才會觸發它ondemand。 | Period | 
| maximumRetries | 故障時嘗試重試的次數上限 | Integer | 
| onFail | 目前物件發生故障時要執行的動作。 | 參考物件，例如 "onFail":\$1"ref":"myActionId"\$1 | 
| onLateAction | 某個物件尚未排程或仍未完成時，應該觸發的動作。 | 參考物件，例如 "onLateAction":\$1"ref":"myActionId"\$1 | 
| onSuccess | 目前物件成功時要執行的動作。 | 參考物件，例如 "onSuccess":\$1"ref":"myActionId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| preconditionTimeout | 自開始起的一段期間，在這段期間之後，如果仍未符合先決條件即會將其標示為失敗 | Period | 
| reportProgressTimeout | 遠端工作連續呼叫 reportProgress 的逾時。如果設定，則不回報指定時段進度的遠端活動，可能會視為已停滯而重試。 | Period | 
| retryDelay | 兩次重試嘗試之間的逾時持續時間。 | Period | 
| scriptArgument | 要傳遞給 shell 指令碼的引數 | String | 
| stderr | 從 命令接收重新導向系統錯誤訊息的 Amazon S3 路徑。如果您使用 runsOn 欄位，這必須是 Amazon S3 路徑，因為執行活動之資源的暫時性性質。不過，如果您指定 workerGroup 欄位，則允許使用本機檔案路徑。 | String | 
| stdout | 從 命令接收重新導向輸出的 Amazon S3 路徑。如果您使用 runsOn 欄位，這必須是 Amazon S3 路徑，因為執行活動之資源的暫時性性質。不過，如果您指定 workerGroup 欄位，則允許使用本機檔案路徑。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @activeInstances | 目前已排程的作用中執行個體物件清單。 | 參考物件，例如 "activeInstances":\$1"ref":"myRunnableObjectId"\$1 | 
| @actualEndTime | 此物件執行完成的時間。 | DateTime | 
| @actualStartTime | 此物件執行開始的時間。 | DateTime | 
| cancellationReason | 若此物件已取消，會提供 cancellationReason。 | String | 
| @cascadeFailedOn | 物件失敗所在的相依鏈的描述。 | 參考物件，例如 "cascadeFailedOn":\$1"ref":"myRunnableObjectId"\$1 | 
| emrStepLog | 只在 EMR 活動嘗試時才可使用的 EMR 步驟日誌 | String | 
| errorId | 若此物件失敗，會提供 errorId。 | String | 
| errorMessage | 若此物件失敗，會提供 errorMessage。 | String | 
| errorStackTrace | 如果此物件失敗，則為錯誤堆疊追蹤。 | String | 
| hadoopJobLog | 嘗試 EMR 型活動可用的 Hadoop 任務日誌。 | String | 
| hostname | 選取任務嘗試之用戶端的主機名稱。 | String | 
| 節點 | 即將執行此先決條件的節點 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| reportProgressTime | 遠端活動最近報告進度的時間。 | DateTime | 
| @scheduledEndTime | 物件的排程結束時間 | DateTime | 
| @scheduledStartTime | 物件的排程開始時間 | DateTime | 
| @status | 此物件的狀態。 | String | 
| @version | 建立物件使用的管道版本。 | String | 
| @waitingOn | 此物件等待之相依性清單的描述。 | 參考物件，例如 "waitingOn":\$1"ref":"myRunnableObjectId"\$1 | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="shellcommandprecondition-seealso"></a>
+ [ShellCommandActivity](dp-object-shellcommandactivity.md)
+ [存在](dp-object-exists.md)

# 資料庫
<a name="dp-object-databases"></a>

以下是 AWS Data Pipeline 資料庫物件：

**Topics**
+ [JdbcDatabase](dp-object-jdbcdatabase.md)
+ [RdsDatabase](dp-object-rdsdatabase.md)
+ [RedshiftDatabase](dp-object-redshiftdatabase.md)

# JdbcDatabase
<a name="dp-object-jdbcdatabase"></a>

定義 JDBC 資料庫。

## 範例
<a name="jdbcdatabase-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyJdbcDatabase",
  "type" : "JdbcDatabase",
  "connectionString" : "jdbc:redshift://hostname:portnumber/dbname",
  "jdbcDriverClass" : "com.amazon.redshift.jdbc41.Driver",
  "jdbcDriverJarUri" : "s3://redshift-downloads/drivers/RedshiftJDBC41-1.1.6.1006.jar",
  "username" : "user_name",
  "*password" : "my_password"
}
```

## 語法
<a name="jdbcdatabase-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| connectionString | 存取資料庫的 JDBC 連線字串。 | String | 
| jdbcDriverClass | 在建立 JDBC 連線之前要載入的驅動程式類別。 | String | 
| \$1password | 要提供的密碼。 | String | 
| 使用者名稱 | 連線至資料庫時要提供的使用者名稱。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| databaseName | 要連接的邏輯資料庫的名稱 | String | 
| jdbcDriverJarUri | 用來連線到資料庫之 JDBC 驅動程式 JAR 檔案在 Amazon S3 中的位置。AWS Data Pipeline 必須具有讀取此 JAR 檔案的許可。 | String | 
| jdbcProperties | 會在此資料庫 JDBC 連線上設為屬性的 A=B 形式對。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# RdsDatabase
<a name="dp-object-rdsdatabase"></a>

定義 Amazon RDS 資料庫。

**注意**  
RdsDatabase 不支援 Aurora。改為使用[JdbcDatabase](dp-object-jdbcdatabase.md)適用於 Aurora 的 。

## 範例
<a name="rdsdatabase-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyRdsDatabase",
  "type" : "RdsDatabase",
  "region" : "us-east-1",
  "username" : "user_name",
  "*password" : "my_password",
  "rdsInstanceId" : "my_db_instance_identifier"
}
```

針對 Oracle 引擎，`jdbcDriverJarUri` 欄位是必要欄位，並且您可以指定以下驅動程式：`http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html`。針對 SQL Server 引擎，`jdbcDriverJarUri` 欄位是必要欄位，並且您可以指定以下驅動程式：`https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774`。針對 MySQL 和 PostgreSQL 引擎，`jdbcDriverJarUri` 欄位是選擇性的。

## 語法
<a name="rdsdatabase-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| \$1password | 要提供的密碼。 | String | 
| rdsInstanceId | 資料庫執行個體的 DBInstanceIdentifier 屬性。 | String | 
| 使用者名稱 | 連線至資料庫時要提供的使用者名稱。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| databaseName | 要連接的邏輯資料庫的名稱 | String | 
| jdbcDriverJarUri | 用來連線到資料庫之 JDBC 驅動程式 JAR 檔案在 Amazon S3 中的位置。AWS Data Pipeline 必須具有讀取此 JAR 檔案的許可。針對 MySQL 和 PostgreSQL 引擎，若未指定此欄位，則會使用預設驅動程式，但您可以使用這個欄位來覆寫預設值。若是 Oracle 和 SQL Server 引擎，則此為必要欄位。 | String | 
| jdbcProperties | 會在此資料庫 JDBC 連線上設為屬性的 A=B 形式對。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| region | 資料庫所在的區域代碼。例如 us-east-1。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# RedshiftDatabase
<a name="dp-object-redshiftdatabase"></a>

定義 Amazon Redshift 資料庫。 `RedshiftDatabase`代表管道所使用的資料庫屬性。

## 範例
<a name="redshiftdatabase-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyRedshiftDatabase",
  "type" : "RedshiftDatabase",
  "clusterId" : "myRedshiftClusterId",
  "username" : "user_name",
  "*password" : "my_password",
  "databaseName" : "database_name"
}
```

根據預設，物件會使用 Postgres 驅動程式，而該驅動程式需要 `clusterId` 欄位。若要使用 Amazon Redshift 驅動程式，請在 `connectionString` 欄位中從 Amazon Redshift 主控台指定 Amazon Redshift 資料庫連線字串 （開頭為 "jdbc：redshift：")。

## 語法
<a name="redshiftdatabase-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| \$1password | 要提供的密碼。 | String | 
| 使用者名稱 | 連線至資料庫時要提供的使用者名稱。 | String | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| clusterId | 建立 Amazon Redshift 叢集時，使用者提供的識別符。例如，如果 Amazon Redshift 叢集的端點是 mydb.example.us-east-1.redshift.amazonaws.com，則正確的識別符是 mydb。在 Amazon Redshift 主控台中，您可以從叢集識別符或叢集名稱取得此值。 | String | 
| connectionString | 用於連線至與管道不同的 帳戶所擁有之 Amazon Redshift 執行個體的 JDBC 端點。您不能同時指定 connectionString 和 clusterId。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| databaseName | 要連接的邏輯資料庫的名稱。 | String | 
| jdbcProperties | 要在此資料庫 JDBC 連線上設為屬性的 A=B 形式對。 | String | 
| parent | 目前物件的父系，其插槽已被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| region | 資料庫所在的區域代碼。例如 us-east-1。 | 列舉 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# 資料格式
<a name="dp-object-dataformats"></a>

以下是 AWS Data Pipeline 資料格式物件：

**Topics**
+ [CSV 資料格式](dp-object-csv.md)
+ [自訂資料格式](dp-object-custom.md)
+ [DynamoDBDataFormat](dp-object-dynamodbdataformat.md)
+ [DynamoDBExportDataFormat](dp-object-dynamodbexportdataformat.md)
+ [RegEx 資料格式](dp-object-regex.md)
+ [TSV 資料格式](dp-object-tsv.md)

# CSV 資料格式
<a name="dp-object-csv"></a>

逗號分隔資料格式，其中資料行的分隔符號為逗號，記錄的分隔符號則是換行字元。

## 範例
<a name="csv-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyOutputDataType",
  "type" : "CSV",
  "column" : [
    "Name STRING",
    "Score INT",
    "DateOfBirth TIMESTAMP"
  ]
}
```

## 語法
<a name="csv-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING 若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| escapeChar | 可指示剖析器忽略下一個字元的字元 (例如 "\$1")。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# 自訂資料格式
<a name="dp-object-custom"></a>

合併特定資料行分隔符號、記錄分隔符號及逸出字元的自訂資料格式。

## 範例
<a name="custom-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyOutputDataType",
  "type" : "Custom",
  "columnSeparator" : ",",
  "recordSeparator" : "\n",
  "column" : [
    "Name STRING",
    "Score INT",
    "DateOfBirth TIMESTAMP"
  ]
}
```

## 語法
<a name="custom-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| columnSeparator | 指出資料檔案中資料行結尾的字元。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING 若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| recordSeparator | 指出資料檔案中資料列結尾的字元，例如 "\$1n"。僅支援單一字元。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# DynamoDBDataFormat
<a name="dp-object-dynamodbdataformat"></a>

將結構描述套用至 DynamoDB 資料表，讓 Hive 查詢可存取。 `DynamoDBDataFormat` 會與`HiveActivity`物件和`DynamoDBDataNode`輸入和輸出搭配使用。 `DynamoDBDataFormat`要求您指定 Hive 查詢中的所有資料欄。如需在 Hive 查詢或 Amazon S3 支援中指定特定資料欄的更多彈性，請參閱 [DynamoDBExportDataFormat](dp-object-dynamodbexportdataformat.md)。

**注意**  
DynamoDB Boolean (布林) 類型不會映射到 Hive Boolean (布林) 類型。但是，您可以將 DynamoDB 整數值 0 或 1 映射到 Hive Boolean 類型。

## 範例
<a name="dynamodbdataformat-example"></a>

以下範例會示範如何使用 `DynamoDBDataFormat` 來將結構描述指派給 `DynamoDBDataNode` 輸入，允許 `HiveActivity` 物件透過具名資料行存取資料，並將資料複製到 `DynamoDBDataNode` 輸出。

```
{
  "objects": [
    {
      "id" : "Exists.1",
      "name" : "Exists.1",
      "type" : "Exists"
    },
    {
      "id" : "DataFormat.1",
      "name" : "DataFormat.1",
      "type" : "DynamoDBDataFormat",
      "column" : [ 
         "hash STRING", 
        "range STRING" 
      ]
    },
    {
      "id" : "DynamoDBDataNode.1",
      "name" : "DynamoDBDataNode.1",
      "type" : "DynamoDBDataNode",
      "tableName" : "$INPUT_TABLE_NAME",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "DynamoDBDataNode.2",
      "name" : "DynamoDBDataNode.2",
      "type" : "DynamoDBDataNode",
      "tableName" : "$OUTPUT_TABLE_NAME",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "EmrCluster.1",
      "name" : "EmrCluster.1",
      "type" : "EmrCluster",
      "schedule" : { "ref" : "ResourcePeriod" },
      "masterInstanceType" : "m1.small",
      "keyPair" : "$KEYPAIR"
    },
    {
      "id" : "HiveActivity.1",
      "name" : "HiveActivity.1",
      "type" : "HiveActivity",
      "input" : { "ref" : "DynamoDBDataNode.1" },
      "output" : { "ref" : "DynamoDBDataNode.2" },
      "schedule" : { "ref" : "ResourcePeriod" },
      "runsOn" : { "ref" : "EmrCluster.1" },
      "hiveScript" : "insert overwrite table ${output1} select * from ${input1} ;"
    },
    {
      "id" : "ResourcePeriod",
      "name" : "ResourcePeriod",
      "type" : "Schedule",
      "period" : "1 day",
      "startDateTime" : "2012-05-04T00:00:00",
      "endDateTime" : "2012-05-05T00:00:00"
    }
  ]
}
```

## 語法
<a name="dynamodbdataformat-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如 hostname STRING。若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| parent | 目前物件的父系，其槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 用來建立物件的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# DynamoDBExportDataFormat
<a name="dp-object-dynamodbexportdataformat"></a>

將結構描述套用至 DynamoDB 資料表，讓 Hive 查詢可存取。搭配 `HiveCopyActivity` 物件及 `DynamoDBDataNode` 或 `S3DataNode` 輸入和輸出使用 `DynamoDBExportDataFormat`。`DynamoDBExportDataFormat` 具有下列優點：
+ 同時提供 DynamoDB 和 Amazon S3 支援
+ 可讓您在 Hive 查詢中透過特定資料行篩選資料
+ 即使您有稀疏結構描述，也會從 DynamoDB 匯出所有屬性

**注意**  
DynamoDB Boolean (布林) 類型不會映射到 Hive Boolean (布林) 類型。但是，您可以將 DynamoDB 整數值 0 或 1 映射到 Hive Boolean 類型。

## 範例
<a name="dynamodbexportdataformat-example"></a>

以下範例會示範如何使用 `HiveCopyActivity` 和 `DynamoDBExportDataFormat` 來將資料從一個 `DynamoDBDataNode` 複製到另一個，同時根據時間戳記來進行篩選。

```
{
  "objects": [
    {
      "id" : "DataFormat.1",
      "name" : "DataFormat.1",
      "type" : "DynamoDBExportDataFormat",
      "column" : "timeStamp BIGINT"
    },
    {
      "id" : "DataFormat.2",
      "name" : "DataFormat.2",
      "type" : "DynamoDBExportDataFormat"
    },
    {
      "id" : "DynamoDBDataNode.1",
      "name" : "DynamoDBDataNode.1",
      "type" : "DynamoDBDataNode",
      "tableName" : "item_mapped_table_restore_temp",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.1" }
    },
    {
      "id" : "DynamoDBDataNode.2",
      "name" : "DynamoDBDataNode.2",
      "type" : "DynamoDBDataNode",
      "tableName" : "restore_table",
      "region" : "us_west_1",
      "schedule" : { "ref" : "ResourcePeriod" },
      "dataFormat" : { "ref" : "DataFormat.2" }
    },
    {
      "id" : "EmrCluster.1",
      "name" : "EmrCluster.1",
      "type" : "EmrCluster",
      "schedule" : { "ref" : "ResourcePeriod" },
      "masterInstanceType" : "m1.xlarge",
      "coreInstanceCount" : "4"
    },
    {
      "id" : "HiveTransform.1",
      "name" : "Hive Copy Transform.1",
      "type" : "HiveCopyActivity",
      "input" : { "ref" : "DynamoDBDataNode.1" },
      "output" : { "ref" : "DynamoDBDataNode.2" },
      "schedule" : { "ref" : "ResourcePeriod" },
      "runsOn" : { "ref" : "EmrCluster.1" },
      "filterSql" : "`timeStamp` > unix_timestamp(\"#{@scheduledStartTime}\", \"yyyy-MM-dd'T'HH:mm:ss\")"
    },
    {
      "id" : "ResourcePeriod",
      "name" : "ResourcePeriod",
      "type" : "Schedule",
      "period" : "1 Hour",
      "startDateTime" : "2013-06-04T00:00:00",
      "endDateTime" : "2013-06-04T01:00:00"
    }
  ]
}
```

## 語法
<a name="dynamodbexportdataformat-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# RegEx 資料格式
<a name="dp-object-regex"></a>

規則表達式所定義的自訂資料格式。

## 範例
<a name="regex-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyInputDataType",
  "type" : "RegEx",
  "inputRegEx" : "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
  "outputFormat" : "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s",
  "column" : [
    "host STRING",
    "identity STRING",
    "user STRING",
    "time STRING",
    "request STRING",
    "status STRING",
    "size STRING",
    "referer STRING",
    "agent STRING"
  ]
}
```

## 語法
<a name="regex-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 針對此資料節點描述的資料，含每個欄位所指定之資料類型的欄位名稱。例如：hostname STRING 若是多個值，請使用欄位名稱和資料類型，並以空格分隔。 | String | 
| inputRegEx | 用來剖析 S3 輸入檔的規則表達式。inputRegEx 提供一種方法，可從檔案中相對非結構化的資料擷取資料欄。 | String | 
| outputFormat | inputRegEx 擷取的欄位，但使用 Java 格式化語法則參考為 %1\$1s %2\$1s。 | String | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# TSV 資料格式
<a name="dp-object-tsv"></a>

逗號分隔資料格式，其中資料行的分隔符號為 tab 字元，記錄的分隔符號則是換行字元。

## 範例
<a name="tsv-example"></a>

以下為此物件類型的範例。

```
{
  "id" : "MyOutputDataType",
  "type" : "TSV",
  "column" : [
    "Name STRING",
    "Score INT",
    "DateOfBirth TIMESTAMP"
  ]
}
```

## 語法
<a name="tsv-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 欄位 | 此資料節點描述之資料的資料欄名稱和資料類型。例如 "Name STRING" 代表名稱為 Name 的資料欄與 STRING 資料類型的欄位。以逗號分隔多個資料欄名稱和資料類型對 (如範例中所示)。 | String | 
| columnSeparator | 字元，其可將某個資料欄中的欄位與下一個資料欄的欄位分隔出來。預設為 '\$1t'。 | String | 
| escapeChar | 可指示剖析器忽略下一個字元的字元 (例如 "\$1")。 | String | 
| parent | 目前物件的父系，其插槽已被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| recordSeparator | 分隔記錄的字元。預設為 '\$1n'。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件引發 Instance 物件，這會執行 Attempt 物件。 | String | 

# 動作
<a name="dp-object-actions"></a>

以下是 AWS Data Pipeline 動作物件：

**Topics**
+ [SnsAlarm](dp-object-snsalarm.md)
+ [終止](dp-object-terminate.md)

# SnsAlarm
<a name="dp-object-snsalarm"></a>

 當活動失敗或成功完成時，傳送 Amazon SNS 通知訊息。

## 範例
<a name="snsalarm-example"></a>

以下為此物件類型的範例。`node.input` 和 `node.output` 的值來自在其 `onSuccess` 欄位中參考此物件的資料節點或活動。

```
{
  "id" : "SuccessNotify",
  "name" : "SuccessNotify",
  "type" : "SnsAlarm",
  "topicArn" : "arn:aws:sns:us-east-1:28619EXAMPLE:ExampleTopic",
  "subject" : "COPY SUCCESS: #{node.@scheduledStartTime}",
  "message" : "Files were copied from #{node.input} to #{node.output}."
}
```

## 語法
<a name="snsalarm-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| message | Amazon SNS 通知的內文文字。 | String | 
| role | 用來建立 Amazon SNS 警示的 IAM 角色。 | String | 
| subject | Amazon SNS 通知訊息的主旨行。 | String | 
| topicArn | 訊息的目的地 Amazon SNS 主題 ARN。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 節點 | 即將執行此動作的節點。 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件。 | String | 

# 終止
<a name="dp-object-terminate"></a>

觸發取消待處理或未完成的活動、資源或資料節點的動作。如果活動、資源或資料節點不是以 `lateAfterTimeout`值開頭，則會 AWS Data Pipeline 嘗試將活動、資源或資料節點置於取消狀態。

您無法終止包含 `onSuccess`、`OnFail` 或 `onLateAction` 資源的動作。

## 範例
<a name="terminate-example"></a>

以下為此物件類型的範例。在此範例中，`MyActivity` 的 `onLateAction` 欄位包含 `DefaultAction1` 動作的參考。當您為 `onLateAction` 提供動作時，您也必須提供 `lateAfterTimeout` 值來指出管道排程啟動後經過多長的時間，才會將活動視為延遲。

```
{
  "name" : "MyActivity",
  "id" : "DefaultActivity1",
  "schedule" : {
    "ref" : "MySchedule"
  },
  "runsOn" : {
    "ref" : "MyEmrCluster"
  },
  "lateAfterTimeout" : "1 Hours",
  "type" : "EmrActivity",
  "onLateAction" : {
    "ref" : "DefaultAction1"
  },
  "step" : [
    "s3://amzn-s3-demo-bucket/myPath/myStep.jar,firstArg,secondArg",
    "s3://amzn-s3-demo-bucket/myPath/myOtherStep.jar,anotherArg"
  ]
},
{
  "name" : "TerminateTasks",
  "id" : "DefaultAction1",
  "type" : "Terminate"
}
```

## 語法
<a name="terminate-syntax"></a>


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| parent | 目前物件的父系，其插槽已被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 節點 | 即將執行此動作的節點。 | 參考物件，例如 "node":\$1"ref":"myRunnableObjectId"\$1 | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件引發 Instance 物件，這會執行 Attempt 物件。 | String | 

# Schedule
<a name="dp-object-schedule"></a>

定義排程事件的時間，例如當活動執行時。

**注意**  
當排程的開始時間已過時， 會 AWS Data Pipeline 回填您的管道，並立即開始從指定的開始時間開始排程執行。針對測試/開發，請使用相對較短的間隔。否則， 會 AWS Data Pipeline 嘗試將管道的所有執行排入佇列並排程在該間隔內。如果管道元件`scheduledStartTime`早於 1 天，則 AWS Data Pipeline 嘗試封鎖管道啟用，以防止意外回填。

## 範例
<a name="schedule-example"></a>

以下為此物件類型的範例。它會定義每小時的排程，從 2012-09-01 的 00:00:00 小時開始，至 2012-10-01 的 00:00:00 小時結束。第一個期間會在 2012-09-01 的 01:00:00 結束。

```
{
  "id" : "Hourly",
  "type" : "Schedule",
  "period" : "1 hours",
  "startDateTime" : "2012-09-01T00:00:00",
  "endDateTime" : "2012-10-01T00:00:00"
}
```

以下管道會在 `FIRST_ACTIVATION_DATE_TIME` 時啟動，每個小時執行一次，直到 2014-04-25 的 22:00:00 小時為止。

```
{
     "id": "SchedulePeriod",
     "name": "SchedulePeriod",
     "startAt": "FIRST_ACTIVATION_DATE_TIME",
     "period": "1 hours",
     "type": "Schedule",
     "endDateTime": "2014-04-25T22:00:00"
   }
```

以下管道會在 `FIRST_ACTIVATION_DATE_TIME` 時啟動，每小時執行一次，並在執行三次後完成。

```
{
     "id": "SchedulePeriod",
     "name": "SchedulePeriod",
     "startAt": "FIRST_ACTIVATION_DATE_TIME",
     "period": "1 hours",
     "type": "Schedule",
     "occurrences": "3"
   }
```

以下管道會在 2014-04-25 的 22:00:00 時啟動，每小時執行一次，並在執行三次後結束。

```
{
     "id": "SchedulePeriod",
     "name": "SchedulePeriod",
     "startDateTime": "2014-04-25T22:00:00",
     "period": "1 hours",
     "type": "Schedule",
     "occurrences": "3"
   }
```

使用 Default 物件的隨需

```
{
  "name": "Default",
  "resourceRole": "DataPipelineDefaultResourceRole",
  "role": "DataPipelineDefaultRole",
  "scheduleType": "ondemand"
}
```

使用明確 Schedule 物件的隨需

```
{
  "name": "Default",
  "resourceRole": "DataPipelineDefaultResourceRole",
  "role": "DataPipelineDefaultRole",
  "scheduleType": "ondemand"
},
{
  "name": "DefaultSchedule",
  "type": "Schedule",
  "id": "DefaultSchedule",
  "period": "ONDEMAND_PERIOD",
  "startAt": "ONDEMAND_ACTIVATION_TIME"
},
```

下列範例會示範如何從預設物件繼承 Schedule，針對該物件明確設定，或是由父參考明確給予。

從 Default 物件繼承的 Schedule

```
{
  "objects": [
  {       
      "id": "Default",
      "failureAndRerunMode":"cascade",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "s3://myLogsbucket",
      "scheduleType": "cron",
      "schedule": {
        "ref": "DefaultSchedule"
      }
   },
   {
      "type": "Schedule",
      "id": "DefaultSchedule",
      "occurrences": "1",
      "period": "1 Day",
      "startAt": "FIRST_ACTIVATION_DATE_TIME"
    },
    { 
      "id": "A_Fresh_NewEC2Instance",
      "type": "Ec2Resource",
      "terminateAfter": "1 Hour"
    },
    {
      "id": "ShellCommandActivity_HelloWorld",
      "runsOn": {
        "ref": "A_Fresh_NewEC2Instance"
      },
      "type": "ShellCommandActivity",
      "command": "echo 'Hello World!'"
    }
  ]
}
```

物件上的明確排程

```
{
  "objects": [
  {       
      "id": "Default",
      "failureAndRerunMode":"cascade",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "s3://myLogsbucket",
      "scheduleType": "cron"
      
   },
   {
      "type": "Schedule",
      "id": "DefaultSchedule",
      "occurrences": "1",
      "period": "1 Day",
      "startAt": "FIRST_ACTIVATION_DATE_TIME"
    },
    { 
      "id": "A_Fresh_NewEC2Instance",
      "type": "Ec2Resource",
      "terminateAfter": "1 Hour"
    },
    {
      "id": "ShellCommandActivity_HelloWorld",
      "runsOn": {
        "ref": "A_Fresh_NewEC2Instance"
      },
      "schedule": {
        "ref": "DefaultSchedule"
      },
      "type": "ShellCommandActivity",
      "command": "echo 'Hello World!'"
    }
  ]
}
```

來自父參考的排程

```
{
  "objects": [
  {       
      "id": "Default",
      "failureAndRerunMode":"cascade",
      "resourceRole": "DataPipelineDefaultResourceRole",
      "role": "DataPipelineDefaultRole",
      "pipelineLogUri": "s3://myLogsbucket",
      "scheduleType": "cron"
      
   },
   {       
      "id": "parent1",
      "schedule": {
        "ref": "DefaultSchedule"
      }
      
   },
   {
      "type": "Schedule",
      "id": "DefaultSchedule",
      "occurrences": "1",
      "period": "1 Day",
      "startAt": "FIRST_ACTIVATION_DATE_TIME"
    },
    { 
      "id": "A_Fresh_NewEC2Instance",
      "type": "Ec2Resource",
      "terminateAfter": "1 Hour"
    },
    {
      "id": "ShellCommandActivity_HelloWorld",
      "runsOn": {
        "ref": "A_Fresh_NewEC2Instance"
      },
      "parent": {
        "ref": "parent1"
      },
      "type": "ShellCommandActivity",
      "command": "echo 'Hello World!'"
    }
  ]
}
```

## 語法
<a name="schedule-syntax"></a>


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| period | 管道應有的執行頻率。格式為 "N [minutes\$1hours\$1days\$1weeks\$1months]"，其中 N 是數字，後接其中一個時間指定元。例如 "15 minutes"，表示每 15 分鐘執行一次管道。最短期間為 15 分鐘，而最長期間為 3 年。 | Period | 

 


****  

| 必要的群組 (下列其中之一為必要) | Description | 槽類型 | 
| --- | --- | --- | 
| startAt | 開始執行排程管道的日期和時間。有效值為 FIRST\$1ACTIVATION\$1DATE\$1TIME，若要建立隨需管道則可將其移除。 | 列舉 | 
| startDateTime | 開始執行排程的日期和時間。您必須使用 startDateTime 或 startAt，但不能同時使用兩者。 | DateTime | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| endDateTime | 結束執行排程的日期和時間。此日期和時間必須晚於 startDateTime 或 startAt 值。預設行為是排程執行直到管道關閉為止。 | DateTime | 
| occurrences | 啟動管道之後的管道執行次數。您不能搭配使用 occurrences 與 endDateTime。 | Integer | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @firstActivationTime | 建立物件的時間。 | DateTime | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

# 公用程式
<a name="dp-object-utilities"></a>

下列公用程式物件會設定其他管道物件：

**Topics**
+ [ShellScriptConfig](dp-object-shellscriptconfig.md)
+ [EmrConfiguration](dp-object-emrconfiguration.md)
+ [屬性](dp-object-property.md)

# ShellScriptConfig
<a name="dp-object-shellscriptconfig"></a>

搭配 Activity 使用，來執行 preActivityTaskConfig 和 postActivityTaskConfig 的殼層指令碼。此物件可供 [HadoopActivity](dp-object-hadoopactivity.md)、[HiveActivity](dp-object-hiveactivity.md)、[HiveCopyActivity](dp-object-hivecopyactivity.md) 及 [PigActivity](dp-object-pigactivity.md) 使用。您可以指定 S3 URI 及指令碼的引數清單。

## 範例
<a name="shellscriptconfig-example"></a>

具備引數的 ShellScriptConfig：

```
{
   "id" : "ShellScriptConfig_1”,
   "name" : “prescript”,
   "type" : "ShellScriptConfig",
   "scriptUri": “s3://my-bucket/shell-cleanup.sh”,
   "scriptArgument" : ["arg1","arg2"]
 }
```

## 語法
<a name="shellscriptconfig-syntax"></a>

此物件包含以下欄位。


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| parent | 目前物件的父系，其插槽已被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| scriptArgument | 可搭配使用 shell 指令碼的引數清單。 | String | 
| scriptUri | Amazon S3 中應下載並執行的指令碼 URI。 | String | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件引發 Instance 物件，這會執行 Attempt 物件。 | String | 

# EmrConfiguration
<a name="dp-object-emrconfiguration"></a>

EmrConfiguration 物件是 EMR 4.0.0 版本或更新版本叢集所使用的組態。組態 (做為清單) 是一個傳遞給 RunJobFlow API 呼叫的參數。Amazon EMR 的組態 API 採用分類和屬性。 AWS Data Pipeline 會使用 EmrConfiguration 搭配對應的屬性物件，在管道執行中啟動的 EMR 叢集上設定[EmrCluster](dp-object-emrcluster.md)應用程式，例如 Hadoop、Hive、Spark 或 Pig。由於您只能為新叢集變更組態，因此您無法為現有的資源提供 EmrConfiguration 物件。如需詳細資訊，請參閱[https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/](https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/)。

## 範例
<a name="emrconfiguration-example"></a>

以下組態物件會設定 `core-site.xml` 中的 `io.file.buffer.size` 和 `fs.s3.block.size` 屬性：

```
[
   {  
      "classification":"core-site",
      "properties":
      {
         "io.file.buffer.size": "4096",
         "fs.s3.block.size": "67108864"
      }
   }
]
```

對應管道物件定義會使用 EmrConfiguration 物件，並在 `property` 欄位中使用 Property 物件的清單：

```
{
  "objects": [
    {
      "name": "ReleaseLabelCluster",
      "releaseLabel": "emr-4.1.0",
      "applications": ["spark", "hive", "pig"],
      "id": "ResourceId_I1mCc",
      "type": "EmrCluster",
      "configuration": {
        "ref": "coresite"
      }
    },
    {
      "name": "coresite",
      "id": "coresite",
      "type": "EmrConfiguration",
      "classification": "core-site",
      "property": [{
        "ref": "io-file-buffer-size"
      },
      {
        "ref": "fs-s3-block-size"
      }
      ]
    },
    {
      "name": "io-file-buffer-size",
      "id": "io-file-buffer-size",
      "type": "Property",
      "key": "io.file.buffer.size",
      "value": "4096"
    },
    {
      "name": "fs-s3-block-size",
      "id": "fs-s3-block-size",
      "type": "Property",
      "key": "fs.s3.block.size",
      "value": "67108864"
    }
  ]
}
```

以下範例是一個巢狀組態，使用 `hadoop-env` 分類設定 Hadoop 環境：

```
[
  {
    "classification": "hadoop-env",
    "properties": {},
    "configurations": [
      {
        "classification": "export",
        "properties": {
          "YARN_PROXYSERVER_HEAPSIZE": "2396"
        }
      }
    ]
  }
]
```

以下是使用此組態的對應管道定義物件：

```
{
  "objects": [
    {
      "name": "ReleaseLabelCluster",
      "releaseLabel": "emr-4.0.0",
      "applications": ["spark", "hive", "pig"],
      "id": "ResourceId_I1mCc",
      "type": "EmrCluster",
      "configuration": {
        "ref": "hadoop-env"
      }
    },
    {
      "name": "hadoop-env",
      "id": "hadoop-env",
      "type": "EmrConfiguration",
      "classification": "hadoop-env",
      "configuration": {
        "ref": "export"
      }
    },
    {
      "name": "export",
      "id": "export",
      "type": "EmrConfiguration",
      "classification": "export",
      "property": {
        "ref": "yarn-proxyserver-heapsize"
      }
    },
    {
      "name": "yarn-proxyserver-heapsize",
      "id": "yarn-proxyserver-heapsize",
      "type": "Property",
      "key": "YARN_PROXYSERVER_HEAPSIZE",
      "value": "2396"
    },
  ]
}
```

下列範例會修改 EMR 叢集的 Hive 特定屬性：

```
{
    "objects": [
        {
            "name": "hivesite",
            "id": "hivesite",
            "type": "EmrConfiguration",
            "classification": "hive-site",
            "property": [
                {
                    "ref": "hive-client-timeout"
                }
            ]
        },
        {
            "name": "hive-client-timeout",
            "id": "hive-client-timeout",
            "type": "Property",
            "key": "hive.metastore.client.socket.timeout",
            "value": "2400s"
        }
    ]
}
```

## 語法
<a name="emrconfiguration-syntax"></a>

此物件包含以下欄位。


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 分類 | 組態的分類。 | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 組態 | 此組態的子組態。 | 參考物件，例如 "configuration":\$1"ref":"myEmrConfigurationId"\$1 | 
| parent | 目前物件的父系，其插槽會被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 
| 屬性 | 組態屬性。 | 參考物件，例如 "property":\$1"ref":"myPropertyId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤 | String | 
| @pipelineId | 此物件所屬管道的 ID | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件會引發執行 Attempt 物件的 Instance 物件 | String | 

## 另請參閱
<a name="emrconfiguration-seealso"></a>
+ [EmrCluster](dp-object-emrcluster.md)
+ [屬性](dp-object-property.md)
+ [Amazon EMR 版本指南](https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/)

# 屬性
<a name="dp-object-property"></a>

搭配 EmrConfiguration 物件使用的單一鍵/值屬性。

## 範例
<a name="property-example"></a>

以下管道定義顯示了一個 EmrConfiguration 物件及對應的 Property 物件，來啟動 EmrCluster：

```
{
  "objects": [
    {
      "name": "ReleaseLabelCluster",
      "releaseLabel": "emr-4.1.0",
      "applications": ["spark", "hive", "pig"],
      "id": "ResourceId_I1mCc",
      "type": "EmrCluster",
      "configuration": {
        "ref": "coresite"
      }
    },
    {
      "name": "coresite",
      "id": "coresite",
      "type": "EmrConfiguration",
      "classification": "core-site",
      "property": [{
        "ref": "io-file-buffer-size"
      },
      {
        "ref": "fs-s3-block-size"
      }
      ]
    },
    {
      "name": "io-file-buffer-size",
      "id": "io-file-buffer-size",
      "type": "Property",
      "key": "io.file.buffer.size",
      "value": "4096"
    },
    {
      "name": "fs-s3-block-size",
      "id": "fs-s3-block-size",
      "type": "Property",
      "key": "fs.s3.block.size",
      "value": "67108864"
    }
  ]
}
```

## 語法
<a name="property-syntax"></a>

此物件包含以下欄位。


****  

| 必要欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| 金鑰 | 金鑰 | 字串 | 
| value | value | String | 

 


****  

| 選用欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| parent | 目前物件的父系，其插槽已被繼承。 | 參考物件，例如 "parent":\$1"ref":"myBaseObjectId"\$1 | 

 


****  

| 執行時間欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @version | 建立物件時使用的管道版本。 | String | 

 


****  

| 系統欄位 | Description | 槽類型 | 
| --- | --- | --- | 
| @error | 描述格式錯誤物件的錯誤。 | String | 
| @pipelineId | 此物件所屬管道的 ID。 | String | 
| @sphere | 物件範圍代表其在生命週期中的位置：Component 物件引發 Instance 物件，這會執行 Attempt 物件。 | String | 

## 另請參閱
<a name="property-seealso"></a>
+ [EmrCluster](dp-object-emrcluster.md)
+ [EmrConfiguration](dp-object-emrconfiguration.md)
+ [Amazon EMR 版本指南](https://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/)