使用參數化範本建立管線 - AWS Data Pipeline

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

使用參數化範本建立管線

您可以使用參數化範本來自訂管道定義。這可讓您建立常見的管道定義,但仍可以在您將管道定義新增到新的管道時提供不同的參數。

將 My變數新增至管線定義

當您建立管道定義檔案時,請使用以下語法指定變數:#{myVariable}。您必須為變數加上 my 前綴。例如,下列管線定義檔案包含下列變數:myShellCmdMyS3 InputLocMyS OutputLoc 3。pipeline-definition.json

注意

管道定義具有 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 檔案包含上述範例管線定義中之 MyS3 InputLocMyS3 OutputLoc 變數的參數物件。parameters.json myShellCmd

{ "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 存放它之前加密該值。
描述 字串 參數的描述。
類型 字串、整數、雙精度或 AWS::S3::ObjectKey 定義輸入值允許範圍及驗證規則的參數類型。預設為 String (字串)。
選擇性 Boolean 指出參數為選擇性或必要參數。預設值為 false
allowedValues List of Strings (字串清單) 列舉參數所有允許的值。
預設 字串 參數的預設值。若您使用參數值指定此參數的值,則會覆寫預設值。
isArray Boolean 指出參數是否是陣列。

定義參數值

您可以使用參數值建立個別檔案,來定義您的變數。例如,下列 JSON 檔案包含上述範例管線定義中 MyS3 OutputLoc 變數的值。file://values.json

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

提交管道定義

當您提交管道定義時,您可以指定參數、參數物件和參數值。例如,您可以使用put-pipeline-definitionAWS 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 的上限。