AWS 雲端開發套件常見問答集

一般問題

AWS 雲端開發套件 (AWS CDK) 是開放原始碼軟體開發架構,使用現代程式設計語言將雲端基礎設施定義為程式碼,並透過 AWS CloudFormation 進行部署。

您可以使用 AWS CDK Command Line Interface (CLI) 與 CDK 應用程式互動。CDK CLI 可讓您列出 CDK 應用程式定義的堆疊、將堆疊合成為 CloudFormation 範本、判斷執行堆疊執行個體與 CDK 程式碼中定義的堆疊之間的差異,以及將堆疊部署至任何公有 AWS 區域。

您使用 AWS CDK 架構來編寫 AWS CDK 專案,然後執行該專案以產生 CloudFormation 範本。您可以使用 AWS CDK 命令列或持續交付系統執行 AWS CDK 專案。

要開始使用 AWS CDK 最好的方法,就是仔細閱讀 AWS CDK 開發人員指南的入門部分。您可以在幾分鐘內定義及部署您的第一個 AWS CDK 應用程式。如需更多深入引導教學,請查看 https://CDKworkshop.com

是,您可以在https://github.com/aws-samples/aws-cdk-examples 找到多個以不同程式設計語言撰寫的 AWS CDK 範例。AWS 開發人員指南也包含範例,請前往 https://docs.thinkwithwp.com/cdk/latest/guide/examples.html

AWS 使用 TypeScript 建置 AWS 建構程式庫套件的商業邏輯,並為每個支援的程式設計語言提供對應的項目。這可確保 AWS CDK 建構行為在每個語言都保持一致,並允許提供一組完整、適用於所有語言的建構套件。您在 AWS CDK 專案編寫的程式碼都是您偏好之程式設計語言的原生程式碼,而 JavaScript 執行時間則是程式設計體驗的實作細節。您可以參考 https://github.com/aws/jsii 中的 jsii 專案。

AWS CDK 程式碼是開放原始碼,可在 GitHub 取得,網址為 https://github.com/awslabs/aws-cdk

若要將應用程式遷移至 AWS CDK v2,請先在 cdk.json 中更新功能旗標。然後根據其程式設計語言的需要更新應用程式的相依關係和匯入。您可以在此進一步了解︰https://docs.thinkwithwp.com/cdk/latest/guide/work-with-cdk-v2.html

我們正在公開開發 AWS CDK,歡迎任何人為程式碼基底做出貢獻。要進一步了解,請前往 https://github.com/awslabs/aws-cdk/blob/master/CONTRIBUTING.md

AWS CDK 一般以 JavaScript、TypeScript、Python、Java、C# 和 Go 提供 (開發人員預覽版)。我們正在計畫未來推出其他語言的 AWS CDK 繫結,請於 GitHub 為您的最愛投票

AWS CDK 可以在所有公有區域定義及部署 AWS 資源。由於 AWS CDK 使用 CloudFormation 服務,請參閱區域產品與服務以了解每個 AWS 區域可用之特定資源的詳細資訊。

由於 AWS CDK 使用 CloudFormation,因此 AWS CDK 應用程式需遵守與 CloudFormation 服務相同的限制。

AWS Solutions Constructs 是 AWS CDK 的開放原始碼程式庫擴充功能。AWS Solutions Constructs 為您提供大量經過審查的多服務架構模式,這些模式都是使用 AWS Well-Architected Framework 確立的最佳實務建置而成。必須先安裝 AWS CDK,才能使用 AWS Solutions Constructs。如需如何將 AWS Solutions Constructs 新增至 AWS CDK 環境的指示,請參閱我們的開發指南

AWS 建構程式庫

AWS CDK 建構在 AWS 建構程式庫中交付,並代表抽象的雲端基礎設施邏輯,經過封裝後即可重複使用。建構可以在本機定義或發佈至套件管理員 (例如 npm、Maven、NuGet 或 PyPI) 以便在組織間共享。

我們為許多常用的 AWS 服務和功能提供豐富、高級的建構,並完整涵蓋低層級的 CloudFormation 資源,包含剛推出不久的新資源。每次 CloudFormation 規格變更時會自動產生資源級 API,讓 AWS 建構程式庫能夠處於最新狀態。除了這些自動產生的 API 之外,我們還提供手動、較高層級的抽象,使其更容易與每個服務搭配運作。我們還沒有為每個 AWS 服務提供這種高階、方便的抽象,但我們一直在增加新功能,專注在現代雲端應用程式中最常用的服務。瀏覽 AWS 建構程式庫 API 參考以進一步了解。

透過將發佈不久的 CloudFormation 新功能新增到 AWS CDK,我們可保持 AWS 建構程式庫與 CloudFormation 資源規格的同步。

AWS CDK 建構程式庫就如同任何其他程式庫。它們透過您使用的程式設計語言套件管理員加以使用,讓這些程式庫保持在最新狀態是日常工作流程的一部分。所有套件都支援語意版本控制,讓您針對何時移轉到新基礎設施模型做出理性的選擇。

CloudFormation 和 SAM

您可以將 AWS CDK 視為以開發人員為中心的工具組,它利用現代程式設計語言的完整功能,將您的 AWS 基礎設施定義為程式碼。當 AWS CDK 應用程式執行時,它們會編譯為完整格式的 CloudFormation JSON/YAML 範本,然後提交至 CloudFormation 服務進行佈建。由於 AWS CDK 利用 CloudFormation,您仍然可以享有 CloudFormation 提供的所有優點,例如安全部署、自動回復和偏離偵測。

AWS Serverless Application Model 和 AWS CDK 都將 AWS 基礎設施抽象化為程式碼,讓您更容易定義雲端基礎設施。AWS SAM 特別專注於無伺服器使用案例和架構,並可讓您在緊密的宣告式 JSON/YAML 範本中定義基礎設施。AWS CDK 在所有 AWS 服務提供廣泛的涵蓋範圍,並可讓您以現代程式設計語言 (例如 TypeScript、Python、C# 和 Java) 定義雲端基礎設施。AWS SAM 和 AWS CDK 都利用 CloudFormation 做為基礎設施堆疊的佈建引擎。如果您偏好在簡潔的宣告式範本中定義無伺服器基礎設施,SAM 更適合您。如果您想要以熟悉的程式設計語言定義 AWS 基礎設施,我們鼓勵您試用 AWS CDK。不管是哪種案例,您都可以透過 CloudFormation 依賴可重複、安全的基礎設施部署。

是,您可以在本機將 AWS CDK 應用程式合成為 CloudFormation 範本,然後在 SAM CLI 參考產生的 AWS Lambda 處理常式 ID。如需更多詳細資訊,請參閱 CDK 開發人員指南中的 SAM CLI 區段。

成本

AWS CDK 根據 Apache 授權,版本 2.0 進行分發。如需詳細資訊,請參閱授權聲明

AWS CDK 無須額外收費。使用 AWS CDK,以手動建立資源的相同方式建立的 AWS 資源 (例如 Amazon EC2 執行個體、Elastic Load Balancing 負載平衡器),需支付相關費用。您只需按實際用量付費;沒有最低費用,也不需要前期承諾。