技術專欄

使用AWS Cloud9及CDK在雲端進行建置

AWS 雲端運算服務
2022/03/02

1. 整合開發環境 Integrated Development Environment (IDE)

Integrated Development Environment(IDE) 是一種輔助程式開發人員開發軟體的應用程式。

IDE通常包括:

1. 程式語言編輯器;

2. 自動構建工具;

3. 除錯器。

部分IDE透過第三方的編輯器來做Build Code的動作,並提供相關Debug的方法。目前最新的IDE會整合版本控管(Source Control)和一些UI的設計工具且支援物件導向的現代化IDE還包括了類別瀏覽器、物件檢視器、物件結構圖。

 

2. AWS雲端開發套件Cloud Development Kit

AWS 雲端開發套件Cloud Development Kit (CDK) 是一套開源軟體開發架構,使用熟悉的程式設計語言定義您的雲端應用程式資源。

AWS CDK 透過 AWS CloudFormation,以安全、可重複的方式佈建您的資源。

AWS CDK 讓您能夠透過 TypeScript、Python、Java、.NET 和 Go 等,為應用程式基礎設施建模。

簡單來說,讓你透過CDK用程式語言佈建AWS資源。有點像是程式版的CloudFormation,若對程式足夠熟悉的話比起JSON或CSV佈置的方法來得更方便快捷。

透過CDK用簡短概略的程式碼就能定義應用程式的基礎資源,需要詳細設定時也能自己自訂建構。

還附CDK CLI來管理CFN範本,佈置也可以用CLI完成。

 

aws cloud9

3. AWS Cloud 9

Cloud 9 是一個雲端整合開發環境,比起傳統的IDE需要透過本地端的安裝使用,Cloud 9可以透過瀏覽器操作,不需要額外的安裝。另外Cloud 9 在建立時還會安裝開發時常用的Linux套件,其中也包含了AWS CDK。

目前Cloud 9 支援的開發環境的OS有 Amazon Linux 和Ubuntu 18.04 LTS。

如果有客製化需求,也可以透過客製化Amazon Linux的AMI做開發環境或者提供SSH連線來使用。

Cloud9 及 CDK組合比起建置一般應用架構,更適合用來建立無伺服器架構的應用程式,兩者都是Coding as a Service。

接下來會進行AWS Cloud9 及 CDK的實例展示。

 

實作例子

Task 1: 建立Cloud9開發環境

Task 2: 建立VPC 和EC2 Instance

Task 3: 更改EC2 Instance的Subnet

Task 4: 輸出Template和Clean up

 

Task 1: 建立Cloud9開發環境

Step 1 在Console打開找到Cloud9, 點選”Create Environment”

AWS Cloud9

 

Step 2 輸入Cloud9環境的名字和簡介

AWS Cloud9

 

Step 3 設定IDE的環境類型和Instance的類型環境設定有三個選項,分別為:

1. Create a new EC2 instance for environment (direct access)

    建立一個新的EC2實體,並且需要能夠直接存取

2. Create a new no-ingress EC2 instance for environment (access via Systems Manager)

    建立一個新的EC2實體,並且透過System Manager連線,並不直接存取

3. Create and run in remote server (SSH connection)

    透過SSH連線到一個開發環境

這邊演示會使用預設值1。主機的類型就看個人需求,通常需要build code 的環境會需要多一點記憶體。本次演示不會建立大型項目故使用預設值。

AWS Cloud9

 

Step 4 設定OS與閒置自動停機時間

最後選擇OS的環境,目前原生支援兩種,分別為Amazon Linux 和 Ubuntu 18.04 LTS,如果需要其他的環境,要透過SSH的方式進入開發。最後選擇網路,如果需要下載相關開發套件的話,網路最好選擇有對外的連線。/

 

還有Cost-saving setting的設定,當IDE閒置指定時間後將會自動停機,以節省開銷。這邊預設是閒置30分鐘將自動停機。

AWS Cloud9

Step 5 確認設定沒有問題,點選”Create Environment”

AWS Cloud9

 

Step 6 等待建置完成後進入Cloud 9,並確認界面佈置

界面佈置如下,分成三部分:

1. 編輯器:編寫程式的地方;

2. 終端機:使用指令的地方;

3. 檔案管理:專案建置的內容都可以在這找到。

AWS Cloud9

 

Step 7 建立Application的Directory,並CD到裡面

AWS Cloud9

Command:

$ mkdir TestApp

$ cd TestApp/

 

Step 8 使用CDK指定開發語言並套用Template

開發語言有JavaScript、TypeScript、Python、Java、C# 和 Go語言可以選用。 這邊使用按照個人習慣Python。

AWS Cloud9

Command:

$ cdk init –language

$(python) $(python)處可換上個人習慣之程式語言

 

Step 9 檢查CDK版本及是否需要更新

請留意CDK版本是v1還是v2,根據CDK版本不同元件定義方式及建立式也不同,詳細請參與AWS CDK 官方的Library。

這次實例將使用版本2.8.0。

AWS Cloud9

Command:

$ npm install –g aws-cdk (用yum也行, 若需要root權限請在指令前加上”sudo” )

 

Step 10 在左方的檔案找到Main Function並打開編輯

AWS Cloud9

 

Step 11 設定環境變數

更改建立應用程式的Stack所使用的AWS帳號的ARN及建立的目標Region.

AWS Cloud9

 

Step 12 使用CDK指令將剛設定的變數匯入

成功後會出現設定好的帳號和Region,失敗或沒設定的話會在使用建置指令時發生錯誤。

AWS Cloud9

Command:

$ cdk bootsrtap

這樣環境設置便完成。

 

Task 2 建立VPC 和EC2 Instance

使用建置好的IDE來建立VPC和EC2,查看CDK到底會幫忙做些什麼。

Step 1 找到Stack的建構程式

接下來所有要在Stack佈置的資源都會定義在這裡。

路徑:Testapp\test_app\test_app_stack.py

AWS Cloud9

 

Step 2 使用CDK的Library,建立VPC

匯入所需的Library,在建構式內增加建立VPC的程式碼。

使用CDK佈置資源時不需要指定所有細項,CDK會根據你應用程式的需求來佈置其餘資源。

這邊建立VPC只輸入VPC的名字及CIDR,其他不指定。

AWS Cloud9

 

Step 3 使用diff指令查看template的變更

AWS Cloud9

Command:

$ cdk diff

偶爾會出現CDK沒抓到的情況,當發生找不到模組的Error,請使用以下指令修正:

 

AWS Cloud9

Command:

$ pip install –r requiremnts.txt

 

Step 4 diff指令後確認將會建立的項目

在剛才的建構式之中,我們只有指定建立一個VPC,但確認將建立項目卻出現大量資源,其中有分割公私有Subnets,建立Routes,Internet Gateway及Security group等等應用程序所需要的資源。

這都是由CDK按建構式判斷該建立之資源。

AWS Cloud9

 

Step 5 增加建立EC2 Instance的程式碼

EC2的定義內容如下:

1. 名字

2. Instance_type指定為t2.micro

3. Amachine_image則是指定Amazon自家Linux

4. VPC指定自己剛建的

aws cloud9

 

Step 6 再次使用diff指令確認變更

這次因應新加入的EC2 Instance,增加了IAM Role及Security Group的變更。

AWS Cloud9

 

Step 7 使用deploy指令建立Stack

確認要建置好的資源後即可以用deploy指令建立Stack。aws cloud9Command:

$ cdk deploy

 

Step 8 完成後確認Stack的ARN

建立成功後會出現提示及Stack的ARN。

aws cloud9

 

Step 9 前往Console的CloudFormation,確認已建立的Stack

點開查看剛建立好的Stack。

aws cloud9

 

Step 10 點開tab上的Resources查看所有資源

點擊Resources便可查看建立資源的資料。

aws cloud9

 

Step 11 前往EC2的Console確認Instance

確認所建立的EC2 Instance是否與程式定義相同。

AWS CLOUD9

 

Task 3 更改EC2 Instance的Subnet

CDK也能修改或指定細項設定,但這次以修改剛建立的EC2 Instance的Subnet為例。

Step 1 在EC2的建構式加指定Subnet屬性,再deploy。

回到剛剛的EC2建構式再指定建立在Public Subnet。

aws cloud9

 

Step 2 前往EC2的Console確認Instance

確認被設置在Public Subnet中,亦自動被分配Public IP。

aws cloud9

 

Task 4 輸出Template及Clean up

使用CDK輸出CloudFormation可用的JSON及Clean up指令。

Step 1 使用synth指令生成JSON檔

輸出JSON檔可交付到其他環境中重建設定好的應用程式,不需要重寫JSON或程式碼。

aws cloud9Command:

$ cdk synth

Step 2 從左邊的檔案管理找到檔案

在路徑TestApp\cdk.out\中能找到JSON檔

aws cloud9

 

Step 3 使用destroy指令刪減已建立Stack

當Stack已經不再需要的時候,可以使用指令Stack刪除。

aws cloud9

Command:

$ cdk destroy

 

Step 4 回到CloudFormation確認Stack已刪除

aws cloud9

 

總結

透過使用AWS Cloud 9 及 CDK服務,可達到使用程式語言建置資源,並利用CDK的特性自動佈署所指定之外的其餘所需元件,更可利用程式的邏輯性快速重複建置;以達到簡化佈置過程的效果。

CaaS在建置Serverless architecture 時更能顯出其便利之處。

聯絡 我們