

AWS Data Pipeline 不再提供給新客戶。的現有客戶 AWS Data Pipeline 可以繼續正常使用服務。[進一步了解](https://aws.amazon.com/blogs/big-data/migrate-workloads-from-aws-data-pipeline/)

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

# 管道定義檔案語法
<a name="dp-writing-pipeline-definition"></a>

本節中的指示適用於使用 AWS Data Pipeline 命令列界面 (CLI) 手動使用管道定義檔案。這是使用 AWS Data Pipeline 主控台以互動方式設計管道的替代方案。

您可以使用支援使用 UTF-8 檔案格式儲存檔案的任何文字編輯器手動建立管道定義檔案，並使用 AWS Data Pipeline 命令列界面提交檔案。

AWS Data Pipeline 也支援管道定義中的各種複雜表達式和函數。如需詳細資訊，請參閱[管道表達式和函數](dp-expressions-functions.md)。

## 檔案結構
<a name="dp-file-structure"></a>

建立管道的第一個步驟是在管道定義檔案中撰寫管道定義物件。以下範例會說明管道定義檔案的一般結構。此檔案會定義兩個物件，以 '\$1' 和 '\$1' 及逗號分隔。

在以下範例中，第一個物件會定義兩個名稱值對，稱為「欄位」**。第二個物件定義三個欄位。

```
{
  "objects" : [
    {
       "name1" : "value1",
       "name2" : "value2"
    },
    {
       "name1" : "value3",
       "name3" : "value4",
       "name4" : "value5"
    }
  ]
}
```

建立管道定義檔案時，您必須選取您需要的管道物件類型，將他們新增到管道定義檔案，然後新增適當的欄位。如需管道物件的詳細資訊，請參閱[管道物件參考](dp-pipeline-objects.md)。

例如，您可以為輸入資料節點建立管道定義物件，並為輸出資料節點建立另一個物件。然後為活動建立另一個管道定義物件，例如使用 Amazon EMR 處理輸入資料。

## 管道欄位
<a name="dp-add-fields"></a>

在您了解要將哪些物件類型包含在管道定義檔案中後，您可以將欄位新增到每個管道物件的定義。欄位名稱會包在引號中，並以空格、冒號和空格與欄位值區隔，如以下範例所示。

```
"name" : "value"
```

欄位值可以是文字字串、另一個物件的參考、函數呼叫、表達式，或是任何上述類型的排序清單。如需可用於欄位值資料類型的詳細資訊，請參閱[簡單資料類型](dp-expressions-functions.md#dp-pipeline-datatypes)。如需可用來評估欄位值函數的詳細資訊，請參閱[表達式評估](dp-pipeline-expressions.md#dp-datatype-functions)。

欄位限制為 2048 個字元。物件大小可為 20 KB，這表示您無法將許多大型欄位新增到物件。

每個管道物件都必須包含下列欄位：`id` 和 `type`，如以下範例所示。根據物件類型，可能還需要其他欄位。為 `id` 選取有意義的值，且該值在管道定義中必須是唯一的。`type` 的值則會指定物件類型。指定其中一個支援的管道定義物件類型，如[管道物件參考](dp-pipeline-objects.md)主題中所列。

```
{
  "id": "MyCopyToS3",
  "type": "CopyActivity"
}
```

如需每個物件必要及選用欄位的詳細資訊，請參閱物件的文件。

若要在一個物件中包含來自另一個物件的欄位，請使用 `parent` 欄位，並參考該物件。例如，物件 "B" 包含其欄位 ("B1" 和 "B2")，以及來自物件 "A" 的欄位 ("A1" 和 "A2")。

```
{
  "id" : "A",
  "A1" : "value",
  "A2" : "value"
},
{
  "id" : "B",
  "parent" : {"ref" : "A"},
  "B1" : "value",
  "B2" : "value"
}
```

您可以使用 ID "Default"，在物件中定義常用欄位。這些欄位會自動包含在管道定義檔案中每個未明確設定參考不同物件 `parent` 欄位的物件內。

```
{
  "id" : "Default",
  "onFail" : {"ref" : "FailureNotification"},
  "maximumRetries" : "3",
  "workerGroup" : "myWorkerGroup"
}
```

## 使用者定義的欄位
<a name="dp-userdefined-fields"></a>

您可以在您的管道元件上建立使用者定義或自訂欄位，並使用表達式參考他們。以下範例顯示新增到 S3DataNode 物件，名為 `myCustomField` 和 `my_customFieldReference` 的自訂欄位：

```
{
  "id": "S3DataInput",
  "type": "S3DataNode",
  "schedule": {"ref": "TheSchedule"},
  "filePath": "s3://bucket_name",
  "myCustomField": "This is a custom value in a custom field.",
  "my_customFieldReference": {"ref":"AnotherPipelineComponent"}
  },
```

使用者定義欄位的名稱都必須加上全部小寫的 "my" 前綴，並接續大寫字母或底線字元。此外，使用者定義欄位可以是字串值 (例如上述的 `myCustomField` 範例)，或是參考其他管道元件 (例如上述的 `my_customFieldReference` 範例)。

**注意**  
在使用者定義的欄位中， AWS Data Pipeline 僅檢查對其他管道元件的有效參考，而不是您新增的任何自訂欄位字串值。