

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

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

# 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)