

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

# 基礎設施即程式碼
<a name="infrastructure-as-code"></a>

 DevOps 的基本原則是以開發人員處理程式碼的方式對待基礎設施。應用程式碼具有定義的格式和語法。如果程式碼不是根據程式設計語言的規則撰寫，則無法建立應用程式。程式碼存放在版本管理或來源控制系統中，記錄程式碼開發、變更和錯誤修正的歷史記錄。當程式碼編譯或內建於應用程式中時，我們預期會建立一致的應用程式，而且建置可重複且可靠。

 將*基礎設施視為程式碼*表示將相同的嚴格應用程式程式碼開發套用至基礎設施佈建。所有組態應以宣告方式定義，並存放在來源控制系統中，例如 [AWS CodeCommit](https://aws.amazon.com/codecommit)，與應用程式碼相同。基礎設施佈建、協同運作和部署也應支援使用基礎設施做為程式碼。

傳統上，基礎設施是使用指令碼和手動程序的組合進行佈建。有時候，這些指令碼會存放在版本控制系統中，或逐步記錄在文字檔案或執行手冊中。撰寫執行手冊的人員通常與執行這些指令碼或遵循執行手冊的人員不同。如果這些指令碼或 Runbook 不頻繁更新，它們可能會在部署中成為顯示停止。這會導致新環境的建立不一定是可重複、可靠或一致的。

相反地， AWS 提供以 DevOps 為重心的方法來建立和維護基礎設施。與軟體開發人員編寫應用程式程式碼的方式類似， AWS 提供以程式設計、描述性和宣告方式啟用基礎設施建立、部署和維護的服務。這些服務提供嚴謹、清晰和可靠性。本文討論 AWS 的服務是 DevOps 方法的核心，並構成許多高階 AWS DevOps 原則和實務的基礎。

AWS 提供下列 服務，將基礎設施定義為程式碼。

**Topics**
+ [CloudFormation](aws-cloudformation.md)
+ [AWS Serverless Application Model](aws-serverless-application-model.md)
+ [AWS Cloud Development Kit (AWS CDK)](aws-cdk.md)
+ [適用於 Kubernetes 的 AWS 雲端開發套件](aws-cdk-for-kubernetes.md)
+ [適用於 Terraform 的 AWS 雲端開發套件](aws-cdk-for-terraform.md)
+ [AWS 雲端控制 API](aws-cloud-control-api.md)