本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用參數化範本建立管線
您可以使用參數化範本來自訂管道定義。這可讓您建立常見的管道定義,但仍可以在您將管道定義新增到新的管道時提供不同的參數。
將 My變數新增至管線定義
當您建立管道定義檔案時,請使用以下語法指定變數:#{myVariable
}。您必須為變數加上 my
前綴。例如,下列管線定義檔案包含下列變數:myShellCmd
、MyS3 InputLoc
和 MyS 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 InputLoc
和 MyS3 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 的上限。