メニュー
AWS Data Pipeline
開発者ガイド (API Version 2012-10-29)

ShellCommandActivity

コマンドまたはスクリプトを実行します。ShellCommandActivity を使用して、時系列で、または cron 風に、スケジュールしたタスクを実行できます。

stage フィールドを true に設定して S3DataNode と共に使用する場合、ShellCommandActivity ではデータのステージングという概念がサポートされます。つまり、データを Amazon S3 から Amazon EC2 などのステージング用の場所またはローカル環境に移動し、そこでスクリプトと ShellCommandActivity を使用してデータの処理を実行して、Amazon S3 にデータを戻すことができます。この場合、シェルコマンドを入力 S3DataNode に接続すると、シェルスクリプトは、${INPUT1_STAGING_DIR}${INPUT2_STAGING_DIR} などを使用してデータを直接操作できます (これらは ShellCommandActivity 入力フィールドを参照します)。同様に、シェルコマンドの出力も、${OUTPUT1_STAGING_DIR}${OUTPUT2_STAGING_DIR} などで参照される出力ディレクトリにステージングして、自動的に Amazon S3 に戻すことができます。これらの式は、コマンドライン引数としてシェルコマンドに渡して、データ変換ロジックで使用することができます。

ShellCommandActivity では、Linux 形式のエラーコードと文字列が返されます。ShellCommandActivity の結果がエラーであれば、返される error はゼロ以外の値になります。

以下は、このオブジェクト型の例です。

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

構文

オブジェクト呼び出しフィールド 説明 スロットタイプ
schedule このオブジェクトは、スケジュール期間の実行中に呼び出されます。ユーザーは、このオブジェクトの依存関係の実行順序を設定するには、別のオブジェクトへのスケジュール参照を指定する必要があります。ユーザーは、オブジェクトでスケジュールを明示的に設定して、この要件を満たすことができます。たとえば、"schedule": {"ref": "DefaultSchedule"} と指定します。ほとんどの場合、すべてのオブジェクトがそのスケジュールを継承するように、スケジュール参照をデフォルトのパイプラインオブジェクトに配置することをお勧めします。または、パイプラインにスケジュールのツリー (マスタースケジュール内のスケジュール) がある場合、ユーザーは、スケジュール参照がある親オブジェクトを作成することができます。オプションのスケジュール設定の例については、「http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-schedule.html」を参照してください。 参照オブジェクト。たとえば、"schedule":{"ref":"myScheduleId"}

必須のグループ (次のいずれかが必要です) 説明 スロットタイプ
コマンド 実行するコマンド。$ を使用して位置指定パラメーターを参照し、scriptArgument を使用してコマンドのパラメーターを指定します。この値および関連するパラメーターは、Task Runner を実行している環境で機能する必要があります。 文字列
scriptUri ダウンロードして、シェルコマンドとして実行するファイルの Amazon S3 URI パス。指定できる scriptUri または command フィールドは 1 つだけです。scriptUri はパラメーターを使用できません。代わりに command を使用します。 文字列

必須のグループ (次のいずれかが必要です) 説明 スロットタイプ
runsOn アクティビティまたはコマンドを実行するコンピューティングリソース。たとえば、Amazon EC2 インスタンスまたは Amazon EMR クラスター。 参照オブジェクト。たとえば、"runsOn":{"ref":"myResourceId"}
workerGroup ワーカーグループ。これはルーティングタスクに使用されます。runsOn 値を指定して、workerGroup がある場合、workerGroup は無視されます。 文字列

オプションのフィールド 説明 スロットタイプ
attemptStatus リモートアクティビティから最も最近報告されたステータス。 文字列
attemptTimeout リモートの作業完了のタイムアウト。設定された場合、設定された開始時間内に完了しなかったリモートアクティビティを再試行することができます。 間隔
dependsOn 実行可能な別のオブジェクトで依存関係を指定します。 参照オブジェクト。たとえば、"dependsOn":{"ref":"myActivityId"}
failureAndRerunMode 依存関係が失敗または再実行されたときのコンシューマーノードの動作を示します。 一覧表
input 入力データの場所。 参照オブジェクト。たとえば、"input":{"ref":"myDataNodeId"}
lateAfterTimeout オブジェクトが開始する必要がある、パイプライン開始後の経過時間。 間隔
maxActiveInstances コンポーネントで同時にアクティブになるインスタンスの最大数。再実行はアクティブなインスタンスの数にはカウントされません。 整数
maximumRetries 失敗時の最大再試行回数 整数
onFail 現在のオブジェクトが失敗したときに実行するアクション。 参照オブジェクト。たとえば、"onFail":{"ref":"myActionId"}
onLateAction オブジェクトが予定されていないか、まだ完了していない場合にトリガーされるアクション。 参照オブジェクト。たとえば、"onLateAction":{"ref":"myActionId"}
onSuccess 現在のオブジェクトが成功したときに実行するアクション。 参照オブジェクト。たとえば、"onSuccess":{"ref":"myActionId"}
出力 出力データの場所。 参照オブジェクト。たとえば、"output":{"ref":"myDataNodeId"}
parent スロットの継承元となる現在のオブジェクトの親。 参照オブジェクト。たとえば、"parent":{"ref":"myBaseObjectId"}
pipelineLogUri パイプラインのログをアップロードするための S3 URI (s3://BucketName/Key/ など)。 文字列
precondition オプションで前提条件を定義します。すべての前提条件を満たすまで、データノードは "READY" とマークされません。 参照オブジェクト。たとえば、"precondition":{"ref":"myPreconditionId"}
reportProgressTimeout reportProgress へのリモート作業の連続した呼び出しのタイムアウト。設定された場合、指定された期間の進捗状況を報告しないリモートアクティビティは停止されたと見なし、再試行できます。 間隔
retryDelay 2 回の再試行の間のタイムアウト期間。 間隔
scheduleType スケジュールタイプによって、パイプライン定義のオブジェクトを、期間の最初にスケジュールするか、最後にスケジュールするかを指定できます。[Time Series Style Scheduling] は、インスタンスが各間隔の最後にスケジュールされることを意味し、[Cron Style Scheduling] は、インスタンスが各間隔の最初にスケジュールされることを意味します。オンデマンドスケジュールにより、アクティベーションごとに 1 回パイプラインを実行することができます。つまり、パイプラインを再実行するために、クローンしたり再作成したりする必要はありません。オンデマンドスケジュールを使用する場合は、デフォルトオブジェクトで指定し、パイプラインのオブジェクトに対して指定される唯一の scheduleType である必要があります。オンデマンドパイプラインを使用するには、それ以降の実行ごとに、ActivatePipeline オペレーションを呼び出すだけです。値は、cron、ondemand、および timeseries です。 一覧表
scriptArgument 指定したコマンドに渡す文字列の JSON 形式の配列。たとえば、コマンドが echo $1 $2 の場合、scriptArgument を "param1", "param2" として指定できます。複数の引数およびパラメーターがある場合は、次のように scriptArgument を渡すことができます: "scriptArgument":"arg1","scriptArgument":"param1","scriptArgument":"arg2","scriptArgument":"param2" . scriptArgument はコマンドでのみ使用でき、scriptUri で使用するとエラーが発生します。 文字列
stage ステージングが有効かどうか決定し、ステージングされたデータ変数 (${INPUT1_STAGING_DIR} や ${OUTPUT1_STAGING_DIR} など) にシェルコマンドがアクセスできるようにします。 Boolean
stderr コマンドからリダイレクトされたシステムエラーメッセージを受け取るパス。runsOn フィールドを使用する場合、アクティビティを実行するリソースが一時的であるため、これは Amazon S3 パスにする必要があります。ただし、workerGroup フィールドを指定した場合は、ローカルファイルパスを指定できます。 文字列
stdout コマンドからリダイレクトされた出力を受け取る Amazon S3 パス。runsOn フィールドを使用する場合、アクティビティを実行するリソースが一時的であるため、これは Amazon S3 パスにする必要があります。ただし、workerGroup フィールドを指定した場合は、ローカルファイルパスを指定できます。 文字列

実行時フィールド 説明 スロットタイプ
@activeInstances 現在スケジュールされているアクティブなインスタンスオブジェクトのリスト。 参照オブジェクト。たとえば、"activeInstances":{"ref":"myRunnableObjectId"}
@actualEndTime このオブジェクトの実行が終了した時刻。 DateTime
@actualStartTime このオブジェクトの実行が開始された時刻。 DateTime
cancellationReason このオブジェクトがキャンセルされた場合の cancellationReason。 文字列
@cascadeFailedOn オブジェクトが失敗した際の依存関係チェーンの説明。 参照オブジェクト。たとえば、"cascadeFailedOn":{"ref":"myRunnableObjectId"}
emrStepLog EMR アクティビティの試行でのみ使用可能な EMR ステップログ 文字列
errorId このオブジェクトが失敗した場合は errorId。 文字列
errorMessage このオブジェクトが失敗した場合は errorMessage。 文字列
errorStackTrace このオブジェクトが失敗した場合は、エラースタックトレース。 文字列
@finishedTime このオブジェクトが実行を終了した時刻。 DateTime
hadoopJobLog EMR ベースのアクティビティで試みることができる Hadoop ジョブのログ。 文字列
@healthStatus 終了状態に達した最後のオブジェクトインスタンスの成功または失敗を反映する、オブジェクトのヘルスステータス。 文字列
@healthStatusFromInstanceId 終了状態に達した最後のインスタンスオブジェクトの ID。 文字列
@healthStatusUpdatedTime ヘルス状態が最後に更新された時間。 DateTime
hostname タスクの試行を取得したクライアントのホスト名。 文字列
@lastDeactivatedTime このオブジェクトが最後に非アクティブ化された時刻。 DateTime
@latestCompletedRunTime 実行が完了した最後の実行の時刻。 DateTime
@latestRunTime 実行がスケジュールされた最後の実行の時刻。 DateTime
@nextRunTime 次回にスケジュールされた実行の時刻。 DateTime
reportProgressTime リモートアクティビティで進捗状況が報告された最新の時刻。 DateTime
@scheduledEndTime オブジェクトの予定された終了時刻 DateTime
@scheduledStartTime オブジェクトの予定された開始時刻 DateTime
@status このオブジェクトのステータス。 文字列
@バージョン オブジェクトが作成されたパイプラインのバージョン。 文字列
@waitingOn このオブジェクトが待機している依存関係のリストの説明。 参照オブジェクト。たとえば、"waitingOn":{"ref":"myRunnableObjectId"}

システムフィールド 説明 スロットタイプ
@error 形式が正しくないオブジェクトを説明するエラー 文字列
@pipelineId このオブジェクトが属するパイプラインの ID 文字列
@sphere オブジェクトの球は、ライフサイクルにおける場所を示します。コンポーネントオブジェクトにより、試行オブジェクトを実行するインスタンスオブジェクトが発生します 文字列

以下の資料も参照してください。