パラメータ化されたテンプレートを使用したパイプラインの作成 - AWS Data Pipeline

パラメータ化されたテンプレートを使用したパイプラインの作成

パラメータ化されたテンプレートを使用して、パイプライン定義をカスタマイズできます。これにより、共通のパイプライン定義を作成しておき、このパイプライン定義を新しいパイプラインに追加するときに、異なるパラメータを指定することができます。

パイプライン定義への myVariables の追加

パイプライン定義ファイルを作成する場合、#{my変数} という構文を使用して変数を指定します。変数の前にプレフィックス my を付ける必要があります。たとえば、次のパイプライン定義ファイル(pipeline-definition.json)には、myShellCmdmyS3InputLoc、および myS3OutputLoc という変数が含まれています。

注記

パイプライン定義には、50 パラメーターという上限があります。

{ "objects": [ { "id": "ShellCommandActivityObj", "input": { "ref": "S3InputLocation" }, "name": "ShellCommandActivityObj", "runsOn": { "ref": "EC2ResourceObj" }, "command": "#{myShellCmd}", "output": { "ref": "S3OutputLocation" }, "type": "ShellCommandActivity", "stage": "true" }, { "id": "Default", "scheduleType": "CRON", "failureAndRerunMode": "CASCADE", "schedule": { "ref": "Schedule_15mins" }, "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "id": "S3InputLocation", "name": "S3InputLocation", "directoryPath": "#{myS3InputLoc}", "type": "S3DataNode" }, { "id": "S3OutputLocation", "name": "S3OutputLocation", "directoryPath": "#{myS3OutputLoc}/#{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}", "type": "S3DataNode" }, { "id": "Schedule_15mins", "occurrences": "4", "name": "Every 15 minutes", "startAt": "FIRST_ACTIVATION_DATE_TIME", "type": "Schedule", "period": "15 Minutes" }, { "terminateAfter": "20 Minutes", "id": "EC2ResourceObj", "name": "EC2ResourceObj", "instanceType":"t1.micro", "type": "Ec2Resource" } ] }

パラメータオブジェクトの定義

パイプライン定義に含まれる変数を定義したパラメータオブジェクトのファイルは、個別に作成することができます。たとえば、次の JSON ファイル (parameters.json) には、上のパイプライン定義例の myShellCmdmyS3InputLoc、および myS3OutputLoc という変数に対するパラメータオブジェクトが含まれています。

{ "parameters": [ { "id": "myShellCmd", "description": "Shell command to run", "type": "String", "default": "grep -rc \"GET\" ${INPUT1_STAGING_DIR}/* > ${OUTPUT1_STAGING_DIR}/output.txt" }, { "id": "myS3InputLoc", "description": "S3 input location", "type": "AWS::S3::ObjectKey", "default": "s3://us-east-1.elasticmapreduce.samples/pig-apache-logs/data" }, { "id": "myS3OutputLoc", "description": "S3 output location", "type": "AWS::S3::ObjectKey" } ] }
注記

個別のファイルを使用する代わりに、これらのオブジェクトをパイプライン定義ファイルに直接追加することもできます。

次の表では、パラメータオブジェクトの属性を説明しています。

パラメータ属性
属性 タイプ 説明
id 文字列 パラメータの一意な識別子。入力中または表示中に値を隠すには、プレフィックスとしてアスタリスク(*)を追加します 例: *myVariable—。この場合、AWS Data Pipeline によって保存される前に値が暗号化される点にも注意してください。
description 文字列 パラメータの説明。
type String、Integer、Double、または AWS::S3::ObjectKey パラメータの型。入力値の許容範囲と検証規則を定義します。デフォルト値は String です。
オプション ブール値 パラメータがオプションか必須かを示します。デフォルトは false です。
allowedValues Strings のリスト パラメータに許可されている値をすべて列挙します。
デフォルト 文字列 パラメータのデフォルト値。パラメータ値を使用して、このパラメータの値を指定すると、デフォルト値を上書きします。
isArray ブール値 パラメータが配列かどうかを示します。

パラメータ値の定義

個別のファイルを作成し、パラメータ値を使用して変数を定義することができます。たとえば、次に示す JSON ファイル(file://values.json)には、上のパイプライン定義例で使用した myS3OutputLoc 変数の値が含まれています。

{ "values": { "myS3OutputLoc": "myOutputLocation" } }

パイプライン定義の送信

パイプライン定義を送信する際には、パラメータ、パラメータオブジェクト、パラメータ値を指定できます。例えば、以下のように put-pipeline-definition AWS CLI コマンドを使用できます。

$ aws datapipeline put-pipeline-definition --pipeline-id id --pipeline-definition file://pipeline-definition.json \ --parameter-objects file://parameters.json --parameter-values-uri file://values.json
注記

パイプライン定義には、50 パラメーターという上限があります。parameter-values-uri 用のファイルサイズには、15 KB という上限があります。