AWS Cloud9 不再提供給新客戶。的現有客戶 AWS Cloud9 可以繼續正常使用服務。進一步了解
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS CDK 的 教學課程 AWS Cloud9
本教學課程說明如何 AWS Cloud Development Kit (AWS CDK) 在 AWS Cloud9 開發環境中使用 。 AWS CDK 是一組軟體工具和程式庫,開發人員可用來將 AWS 基礎設施元件建模為程式碼。
AWS CDK 包含 AWS 建構程式庫,您可以用來快速解決許多任務 AWS。例如,您可以使用 Fleet 建構,完全且安全地部署程式碼到主機群。您可以建立自己的結構,為您的架構的各種元素建立模型,或與他人共享,或將它們發佈到社群。如需詳細資訊,請參閱 AWS Cloud Development Kit 開發人員指南。
遵循本教學課程並建立此範例,可能會對您的帳戶 AWS 收取費用。其中包括 Amazon EC2 和 Amazon SNS 和 Amazon SQS 這類服務可能的費用。如需詳細資訊,請參閱 Amazon EC2 定價
先決條件
在您使用此範例前,請務必確認您的設定符合下列要求:
-
您必須擁有現有的 AWS Cloud9 EC2 開發環境。本範例假設您已具備 EC2 環境,且該環境已連線到執行 Amazon Linux 或 Ubuntu Server 的 Amazon EC2 執行個體。如果您有不同類型的環境或作業系統,您可能需要依照此範例的說明來設定相關工具。如需詳細資訊,請參閱在 中建立環境 AWS Cloud9。
-
您已開啟現有環境的 AWS Cloud9 IDE。當您開啟環境時,請在 Web 瀏覽器中 AWS Cloud9 開啟該環境的 IDE。如需詳細資訊,請參閱在 中開啟環境 AWS Cloud9。
步驟 1:安裝必要工具
在此步驟中,您會在環境中安裝 執行以 TypeScript 程式設計語言撰寫之範例 AWS CDK 所需的所有工具。
-
Node Version Manager 或
nvm(用於稍後安裝 Node.js)。 -
範例需要的 Node.js 包含 Node Package Manager 或
npm,可用來安裝 TypeScript 和 AWS CDK 更新版本。 -
TypeScript,其為此範例所需。( AWS CDK 也支援數種其他程式設計語言。)
步驟 1.1:安裝 Node Version Manager (nvm)
-
在 IDE AWS Cloud9 的終端機工作階段中,確保已安裝最新的安全性更新和錯誤修正。若要這麼做,請執行
yum update命令 (適用於 Amazon Linux) 或apt update命令 (適用於 Ubuntu Server)。(若要啟動新終端機工作階段,請在選單列上,選擇 Window (視窗)、New Terminal (新增終端機)。針對 Amazon Linux:
sudo yum -y update針對 Ubuntu Server:
sudo apt update -
確認是否已安裝
nvm。若要這樣做,請執行nvm命令與--version選項。nvm --version如果成功,輸出內容會包含
nvm版本編號,而您可以直接跳到 步驟 1.2:安裝 Node.js。 -
下載並安裝
nvm。若要執行此操作,請執行安裝指令碼。這個範例已安裝 v0.33.0,但您可以在此確認最新版本的 nvm。curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash -
開始使用
nvm。您可以先關閉終端機工作階段,然後再重新啟動,或是援引~/.bashrc檔案,其中包含載入nvm的命令。. ~/.bashrc
步驟 1.2:安裝 Node.js
-
確認您是否已安裝 Node.js,若已安裝,請確認安裝的版本為 16.17.0 或更高版本。此範例已經用 Node.js 16.17.0 測試過。若要確認終端機工作階段仍在 IDE 中開啟,請以
--version選項執行node命令。node --version若已安裝 Node.js,輸出包含版本編號。如果版本編號為 v16.17.0,請直接跳到 步驟 1.3:安裝 TypeScript。
-
使用
install動作執行nvm命令來安裝 Node.js 16。注意
您也可以執行
nvm install node來安裝 Node.js. AWS Cloud9 support 的長期支援 (LTS) 版本,以追蹤 Node.js 的 LTS 版本。nvm install v16 -
開始使用 Node.js 16。若要執行此操作,請執行
nvm命令與alias動作、對應別名的版本編號,以及用於該別名的版本,如下所示。nvm alias default 16注意
上述命令會將 Node.js 16 設定為 Node.js 的預設版本。或者,您可以執行
nvm命令與use動作,而不是alias動作 (例如,nvm use 16.17.0)。不過,use動作會使該 Node.js 版本僅在目前終端工作階段執行時執行。 -
若要確認您使用的是 Node.js 16,請再次執行
node --version命令。如果安裝了正確的版本,輸出會包含 v16 版本。
步驟 1.3:安裝 TypeScript
-
確認您是否已安裝 TypeScript。若要執行此操作,請於終端機工作階段在 IDE 中仍開啟的狀態,使用
--version選項執行命令列 TypeScript 編譯器。tsc --version若已安裝 TypeScript,輸出包含 TypeScript 版本編號。若已安裝 TypeScript,請直接跳到步驟 1.4:安裝 AWS CDK。
-
安裝 TypeScript。若要執行此操作,請以
install動作、-g選項,以及 TypeScript 套件的名稱執行npm命令。這個動作會在環境中將 TypeScript 安裝為全域套件。npm install -g typescript -
確認 TypeScript 已安裝。若要執行此操作,請執行命令列 TypeScript 編譯器及
--version選項。tsc --version若已安裝 TypeScript,輸出包含 TypeScript 版本編號。
步驟 1.4:安裝 AWS CDK
-
確認您是否已 AWS CDK 安裝 。若要執行此操作,請於終端機工作階段在 IDE 中仍開啟的狀態,使用
--version選項執行cdk命令。cdk --version如果已安裝 AWS CDK ,輸出會包含 AWS CDK 版本和建置號碼。直接跳到步驟 2:新增程式碼。
-
AWS CDK 執行
npm命令並搭配install動作、要安裝的 AWS CDK 套件名稱,以及在環境中全域安裝套件-g的選項,來安裝 。npm install -g aws-cdk -
確認 AWS CDK 已安裝並正確參考。若要這樣做,請執行
cdk命令與--version選項。cdk --version如果成功,則會顯示 AWS CDK 版本和組建編號。
步驟 2:新增程式碼
在此步驟中,您會建立範例 TypeScript 專案,其中包含 AWS CDK 以程式設計方式部署 AWS CloudFormation 堆疊所需的所有原始程式碼。此堆疊會在您的帳戶中建立 Amazon SNS 主題和 Amazon SQS 佇列, AWS 然後訂閱該主題的佇列。
-
在 IDE 仍開啟終端機工作階段的情況下,建立要存放專案原始碼的目錄,例如環境中的
~/environment/hello-cdk目錄。然後,切換到該目錄。rm -rf ~/environment/hello-cdk # Remove this directory if it already exists. mkdir ~/environment/hello-cdk # Create the directory. cd ~/environment/hello-cdk # Switch to the directory. -
設定目錄做為 AWS CDK的 TypeScript 語言專案。若要執行此操作,請以
init動作、sample-app範本與--language選項搭配程式設計語言的名稱來執行cdk命令。cdk init sample-app --language typescript此在目錄中建立下列檔案和子目錄。
-
隱藏的
.git子目錄和隱藏的.gitignore檔案,這讓專案相容於來源控制工具如 Git。 -
包含
hello-cdk-stack.ts檔案的lib子目錄。此檔案包含 AWS CDK 堆疊的程式碼。此程式碼描述於此程序的後續步驟。 -
包含
hello-cdk.ts檔案的bin子目錄。此檔案包含您 AWS CDK 應用程式的進入點。 -
node_modules子目錄,其中包含支援的程式碼套件,其可供應用程式和堆疊視需來使用。 -
隱藏的
.npmignore檔案,其中列出當建置程式碼時npm不需要的子目錄和檔案類型。 -
cdk.json檔案,其中包含可讓cdk命令更輕鬆地執行的資訊。 -
package-lock.json檔案,其中包含npm可用於降低可能的建置和執行錯誤的相關資訊。 -
package.json檔案,其中包含可讓npm命令更輕鬆地執行,且減少建置和執行錯誤的相關資訊。 -
README.md檔案,列出您可以使用npm和 執行的實用命令 AWS CDK。 -
tsconfig.json檔案,其中包含可讓tsc命令更輕鬆地執行,且減少建置和執行錯誤的相關資訊。
-
-
在 Environment (環境) 視窗中,開啟
lib/hello-cdk-stack.ts檔案,並瀏覽該檔案中的以下程式碼。import sns = require('@aws-cdk/aws-sns'); import sqs = require('@aws-cdk/aws-sqs'); import cdk = require('@aws-cdk/cdk'); export class HelloCdkStack extends cdk.Stack { constructor(parent: cdk.App, name: string, props?: cdk.StackProps) { super(parent, name, props); const queue = new sqs.Queue(this, 'HelloCdkQueue', { visibilityTimeoutSec: 300 }); const topic = new sns.Topic(this, 'HelloCdkTopic'); topic.subscribeQueue(queue); } }-
Stack、App、StackProps、Queue和Topic類別分別代表 AWS CloudFormation 堆疊及其屬性、可執行程式、Amazon SQS 佇列和 Amazon SNS 主題。 -
HelloCdkStack類別代表此應用程式的 AWS CloudFormation 堆疊。此堆疊包含適用於此應用程式的新 Amazon SQS 佇列和 Amazon SNS 主題。
-
-
在 Environment (環境) 視窗中,開啟
bin/hello-cdk.ts檔案,並瀏覽該檔案中的以下程式碼。#!/usr/bin/env node import cdk = require('@aws-cdk/cdk'); import { HelloCdkStack } from '../lib/hello-cdk-stack'; const app = new cdk.App(); new HelloCdkStack(app, 'HelloCdkStack'); app.run();此程式碼會載入
lib/hello-cdk-stack.ts檔案中的HelloCdkStack類別、建立其執行個體,然後執行它。 -
使用
npm執行 TypeScript 編譯器來檢查編碼錯誤,然後啟用 AWS CDK 來執行專案bin/hello-cdk.js的檔案。若要執行此操作,請從專案的根目錄以run動作執行npm命令, 且需將package.json檔案中的build命令值指定如下。npm run build上述命令會執行 TypeScript 編譯器,這會新增對
bin/hello-cdk.d.ts和lib/hello-cdk-stack.d.ts檔案的支援。這個編譯器也會將hello-cdk.ts和hello-cdk-stack.ts檔案轉換為hello-cdk.js和hello-cdk-stack.js檔案。
步驟 3:執行程式碼
在此步驟中,您會指示 根據 bin/hello-cdk.js 檔案中的程式碼 AWS CDK 建立 AWS CloudFormation 堆疊範本。然後,指示 AWS CDK 部署堆疊,這會建立 Amazon SNS 主題和 Amazon SQS 佇列,然後訂閱該主題的佇列。然後,確認已成功部署主題和佇列,做法是從主題傳送訊息到佇列。
-
讓 AWS CDK 建立 AWS CloudFormation 堆疊範本。若要執行此操作,請在 IDE 仍開啟終端機工作階段的情況下,從專案的根目錄,以
synth動作和堆疊的名稱執行cdk命令。cdk synth HelloCdkStack如果成功,輸出會顯示 AWS CloudFormation 堆疊範本的
Resources區段。 -
第一次將 AWS CDK 應用程式部署到特定 AWS 帳戶和 AWS 區域組合的環境時,您必須安裝引導堆疊。此堆疊包含 完成其各種操作 AWS CDK 所需的各種資源。例如,此堆疊包含 Amazon S3 儲存貯體, AWS CDK 會在其部署程序期間用來存放範本和資產。若要安裝引導堆疊,請執行
cdk命令,搭配bootstrap動作。cdk bootstrap注意
如果您在
cdk bootstrap未指定任何選項的情況下執行 ,則會使用預設 AWS 帳戶和 AWS 區域。您也可以指定設定檔和帳戶/區域組合來引導特定環境。例如:cdk bootstrap --profile test 123456789012/us-east-1 -
讓 AWS CDK 執行 AWS CloudFormation 堆疊範本來部署堆疊。若要執行此操作,請自專案的根目錄執行
cdk命令與deploy動作,以及堆疊的名稱。cdk deploy HelloCdkStack如果成功,輸出會顯示
HelloCdkStack堆疊已部署成功,沒有出現錯誤。注意
如果輸出顯示訊息,指出堆疊未定義環境,且無法從標準位置取得 AWS 登入資料或未設定區域,請確定您的 AWS 登入資料已在 IDE 中正確設定,然後再次執行
cdk deploy命令。如需詳細資訊,請參閱AWS 服務 從 中的環境呼叫 AWS Cloud9。 -
要確認已成功部署 Amazon SNS 主題和 Amazon SQS 佇列,請將訊息傳送到主題,然後檢查收到訊息的佇列。若要這樣做,您可以使用 AWS Command Line Interface (AWS CLI) 或 等工具 AWS CloudShell。如需這些工具的詳細資訊,請參閱 AWS CLI 的 和 aws-shell 教學課程 AWS Cloud9。
例如,若要傳送訊息至主題,在 IDE 中仍開啟終端機工作階段的情況下,請使用 AWS CLI 執行 Amazon SNS
publish命令、提供訊息的主旨和內文、主題 AWS 的區域,以及主題的 Amazon Resource Name (ARN)。aws sns publish --subject "Hello from the AWS CDK" --message "This is a message from the AWS CDK." --topic-arn arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K在上述命令中,
arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K將 取代為 AWS CloudFormation 指派給主題的 ARN。若要取得 ID,您可以執行 Amazon SNSlist-topics命令。aws sns list-topics --output table --query 'Topics[*].TopicArn'如果成功,
publish命令的輸出會顯示已發佈訊息的MessageId值。若要檢查已接收訊息的佇列,請執行 Amazon SQS
receive-message命令,其中包括佇列的 URL。aws sqs receive-message --queue-url https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K在上述命令中,
https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K將 取代為 AWS CloudFormation 指派給佇列的 ARN。若要取得 URL,您可以執行 Amazon SQSlist-queues命令。aws sqs list-queues --output table --query 'QueueUrls[*]'如果成功,
receive-message命令的輸出會顯示已接收訊息的相關資訊。
步驟 4:清理
為了避免在您完成使用此範例後持續向您的 AWS 帳戶收取費用,您應該刪除 AWS CloudFormation 堆疊。這麼做會刪除 Amazon SNS 主題和 Amazon SQS 佇列。您也應該刪除環境。
步驟 4.1:刪除堆疊
在 IDE 仍開啟終端機工作階段的情況下,請以 destroy 動作和堆疊的名稱從專案的根目錄執行 cdk 命令。
cdk destroy HelloCdkStack
當系統提示您刪除堆疊時,請輸入 y,然後按下 Enter。
如果成功,輸出會顯示 HelloCdkStack 堆疊已刪除,沒有出現錯誤。
步驟 4.2:刪除環境
若要刪除環境,請參閱在 中刪除環境 AWS Cloud9。