

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

# 步驟 4. 建立管道
<a name="step4"></a>

![建立管道。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/ml-production-ready-pipelines/images/step4.png)


 在邏輯上定義管道之後，是時候建立基礎設施以支援管道。此步驟至少需要下列功能：
+ 儲存，以託管和管理管道輸入和輸出，包括程式碼、模型成品和用於訓練和推論執行的資料。
+ 運算 (GPU 或 CPU)，用於建模和推論，以及資料預先處理和後置處理。
+ 協調，以管理正在使用的資源並排程任何定期執行。例如，當有新資料可用時，可能會定期重新訓練模型。
+ 記錄和提醒、監控管道模型準確性、資源使用率和故障診斷。

## 使用 實作 AWS CloudFormation
<a name="cfn"></a>

建立我們使用的管道 AWS CloudFormation，這是一種以程式碼形式部署和管理基礎設施 AWS 的服務。 AWS CloudFormation 範本包含使用 Step Functions SDK 在上一個步驟中建立的 Step Functions 定義。此步驟包含建立 AWS 受管的 Step Functions 執行個體，稱為 *Step Functions 狀態機器*。在此階段不會建立訓練和推論資源，因為訓練和推論任務只有在需要時才隨需執行，做為 SageMaker AI 任務。此步驟也包含建立 AWS Identity and Access Management (IAM) 角色以執行 Step Functions、執行 SageMaker AI，以及從 Amazon S3 讀取和寫入。

## 修改 Step Functions SDK 的輸出
<a name="modify-output"></a>

我們必須對上一節的 CloudFormation 輸出進行一些微幅修改。我們使用簡單的 Python 字串比對來執行下列動作：
+ 我們新增了建立 CloudFormation 範本`Parameters`區段的邏輯。這是因為我們希望建立兩個角色，並將管道名稱定義為 參數以及部署環境。此步驟也涵蓋您可能想要建立的任何其他資源和角色，如步驟 6 所述。
+ 我們會重新格式化三個欄位，使其具有必要的`!Sub`字首和引號，以便做為部署程序的一部分動態更新：
  + `StateMachineName` 屬性，其會命名狀態機器。
  + `DefinitionString` 屬性，定義狀態機器。
  + 狀態機器傳回的 `RoleArn` 屬性。