ShellCommandActivity - AWS Data Pipeline

AWS Data Pipeline は、新規顧客には利用できなくなりました。の既存のお客様 AWS Data Pipeline は、通常どおりサービスを引き続き使用できます。詳細はこちら

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ShellCommandActivity

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

stage フィールドが true に設定されS3DataNode、 で使用されると、 はデータのステージングの概念ShellCommandActivityをサポートします。つまり、Amazon S3 から Amazon EC2やローカル環境などのステージロケーションにデータを移動し、スクリプトと を使用してデータに対して作業を実行しShellCommandActivity、Amazon S3 に戻すことができます。

この場合、シェルコマンドを入力 S3DataNode に接続すると、シェルスクリプトは、ShellCommandActivity の入力フィールドを参照する ${INPUT1_STAGING_DIR}${INPUT2_STAGING_DIR} などのフィールドを使用して直接データを操作できます。

同様に、シェルコマンドの出力も、${OUTPUT1_STAGING_DIR}${OUTPUT2_STAGING_DIR} などで参照される出力ディレクトリにステージングして、自動的に Amazon S3 に戻すことができます。

これらの式は、コマンドライン引数としてシェルコマンドに渡して、データ変換ロジックで使用することができます。

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

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

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

構文

オブジェクト呼び出しフィールド 説明 スロットタイプ
schedule

このオブジェクトは、schedule 期間の実行中に呼び出されます。

このオブジェクトの依存関係の実行順序を設定するには、別のオブジェクトへの schedule 参照を指定します。

この要件を満たすには、オブジェクトで明示的に schedule を設定します。たとえば、"schedule": {"ref": "DefaultSchedule"} を指定します。

ほとんどの場合、すべてのオブジェクトがそのスケジュールを継承するように、schedule 参照をデフォルトのパイプラインオブジェクトに配置することをお勧めします。パイプラインがスケジュールのツリー (マスタースケジュール内のスケジュール) で構成されている場合は、スケジュール参照がある親オブジェクトを作成します。

負荷を分散するために、 は物理オブジェクトをスケジュールより少し前に AWS Data Pipeline 作成しますが、スケジュールに従って実行します。

オプションのスケジュール設定の例については、「https://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 リモートの作業完了のタイムアウト。設定された場合、指定された開始時間内に完了しなかったリモートアクティビティを再試行することができます。 [Period] (期間)
dependsOn 実行可能な別のオブジェクトで依存関係を指定します。 リファレンスオブジェクト、例: "dependsOn":{"ref"myActivityId"}
failureAndRerunモード 依存関係が失敗または再実行されたときのコンシューマーノードの動作を示します。 一覧表
input 入力データの場所。 リファレンスオブジェクト、例:「input」:{「ref"myDataNodeId」}
lateAfterTimeout オブジェクトが完了しなければならない、パイプライン開始からの経過時間。スケジュールタイプが ondemand に設定されていない場合にのみトリガーされます。 [Period] (期間)
maxActiveInstances コンポーネントで同時にアクティブになるインスタンスの最大数。再実行はアクティブなインスタンスの数にはカウントされません。 整数
maximumRetries 失敗時の最大再試行回数。 整数
onFail 現在のオブジェクトが失敗したときに実行するアクション。 リファレンスオブジェクト、例: "onFail":{"ref"myActionId"}
onLateAction オブジェクトが予定されていないか、完了していない場合にトリガーされるアクション。 リファレンスオブジェクト、例: "onLateAction":{"ref"myActionId"}
onSuccess 現在のオブジェクトが成功したときに実行するアクション。 リファレンスオブジェクト、例: "onSuccess":{"ref"myActionId"}
output 出力データの場所。 リファレンスオブジェクト、例:「output」:{「ref"myDataNodeId」}
parent スロットの継承元となる現在のオブジェクトの親。 リファレンスオブジェクト、例:「parent」:{「ref"myBaseObjectId」}
pipelineLogUri パイプラインのログをアップロードする 's3://BucketName/Key/' URIなどの Amazon S3 。 文字列
precondition オプションで前提条件を定義します。データノードは、すべての前提条件が満たされREADYるまで「」とマークされません。 リファレンスオブジェクト、例:「precondition」:{「ref"myPreconditionId」}
reportProgressTimeout リモートアクティビティによる reportProgress への連続した呼び出しのタイムアウト。設定された場合、指定された期間の進捗状況を報告しないリモートアクティビティは停止されたと見なし、再試行できます。 [Period] (期間)
retryDelay 2 回の再試行の間のタイムアウト期間。 [Period] (期間)
scheduleType

パイプライン定義のオブジェクトを、期間の最初にスケジュールするか、最後にスケジュールするかを指定できます。

値は、cronondemand、および timeseries です。

timeseries に設定された場合、インスタンスは各間隔の最後にスケジュールされます。

Cron に設定された場合、インスタンスは各間隔の最初にスケジュールされます。

ondemand に設定された場合、アクティベーションごとに 1 回パイプラインを実行することができます。つまり、パイプラインを再実行するために、クローンしたり再作成したりする必要はありません。ondemand スケジュールを使用する場合は、パイプラインのオブジェクトに対する唯一の scheduleType として、デフォルトオブジェクトで指定します。ondemand パイプラインを使用するには、それ以降の実行ごとに、ActivatePipeline オペレーションを呼び出します。

一覧表
scriptArgument コマンドで指定されたコマンドに渡す文字列の JSON形式の配列。たとえば、コマンドが echo $1 $2 であれば、scriptArgument"param1", "param2" のように指定できます。複数の引数およびパラメータがある場合は、次のように scriptArgument を渡すことができます。 "scriptArgument":"arg1","scriptArgument":"param1","scriptArgument":"arg2","scriptArgument":"param2"scriptArgumentcommand でのみ使用できます。scriptUri で使用するとエラーが発生します。 文字列
ステージ ステージングが有効かどうか決定し、ステージングされたデータ変数(${INPUT1_STAGING_DIR} ${OUTPUT1_STAGING_DIR} など)にシェルコマンドがアクセスできるようにします。 ブール値
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 Amazon EMR ステップログは、Amazon EMRアクティビティの試行でのみ使用できます。 文字列
errorId このオブジェクトが失敗した場合は errorId 文字列
errorMessage このオブジェクトが失敗した場合は errorMessage 文字列
errorStackTrace このオブジェクトが失敗した場合は、エラースタックトレース。 文字列
@finishedTime このオブジェクトが実行を終了した時刻。 DateTime
hadoopJobLog Amazon EMRベースのアクティビティの試行で利用可能な Hadoop ジョブログ。 文字列
@healthStatus 終了状態に達した最後のオブジェクトインスタンスの成功または失敗を反映する、オブジェクトのヘルスステータス。 文字列
@healthStatusFromInstanceId 終了状態に達した最後のインスタンスオブジェクトの ID。 文字列
@healthStatusUpdatedTime ヘルス状態が最後に更新された時間。 DateTime
hostname タスクの試行を取得したクライアントのホスト名。 文字列
@lastDeactivatedTime このオブジェクトが最後に非アクティブ化された時刻。 DateTime
@latestCompletedRunTime 実行が完了した最後の実行の時刻。 DateTime
@latestRunTime 実行がスケジュールされた最後の実行の時刻。 DateTime
@nextRunTime 次回にスケジュールされた実行の時刻。 DateTime
reportProgressTime リモートアクティビティで進捗状況が報告された最新の時刻。 DateTime
@scheduledEndTime オブジェクトの予定された終了時刻。 DateTime
@scheduledStartTime オブジェクトの予定された開始時刻。 DateTime
@status オブジェクトのステータス。 文字列
@version オブジェクトの作成に使用される AWS Data Pipeline バージョン。 文字列
@waitingOn このオブジェクトが待機している依存関係のリストの説明。 リファレンスオブジェクト、例: "waitingOn":{"ref"myRunnableObjectId"}

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

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