Integrated Development Environment(IDE) 是一種輔助程式開發人員開發軟體的應用程式。
IDE通常包括:
1. 程式語言編輯器;
2. 自動構建工具;
3. 除錯器。
部分IDE透過第三方的編輯器來做Build Code的動作,並提供相關Debug的方法。目前最新的IDE會整合版本控管(Source Control)和一些UI的設計工具且支援物件導向的現代化IDE還包括了類別瀏覽器、物件檢視器、物件結構圖。
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完成。
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
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 的環境會需要多一點記憶體。本次演示不會建立大型項目故使用預設值。
最後選擇OS的環境,目前原生支援兩種,分別為Amazon Linux 和 Ubuntu 18.04 LTS,如果需要其他的環境,要透過SSH的方式進入開發。最後選擇網路,如果需要下載相關開發套件的話,網路最好選擇有對外的連線。/
還有Cost-saving setting的設定,當IDE閒置指定時間後將會自動停機,以節省開銷。這邊預設是閒置30分鐘將自動停機。
界面佈置如下,分成三部分:
1. 編輯器:編寫程式的地方;
2. 終端機:使用指令的地方;
3. 檔案管理:專案建置的內容都可以在這找到。
Command:
$ mkdir TestApp
$ cd TestApp/
開發語言有JavaScript、TypeScript、Python、Java、C# 和 Go語言可以選用。 這邊使用按照個人習慣Python。
Command:
$ cdk init –language
$(python) $(python)處可換上個人習慣之程式語言
請留意CDK版本是v1還是v2,根據CDK版本不同元件定義方式及建立式也不同,詳細請參與AWS CDK 官方的Library。
這次實例將使用版本2.8.0。
Command:
$ npm install –g aws-cdk (用yum也行, 若需要root權限請在指令前加上”sudo” )
更改建立應用程式的Stack所使用的AWS帳號的ARN及建立的目標Region.
成功後會出現設定好的帳號和Region,失敗或沒設定的話會在使用建置指令時發生錯誤。
Command:
$ cdk bootsrtap
這樣環境設置便完成。
使用建置好的IDE來建立VPC和EC2,查看CDK到底會幫忙做些什麼。
接下來所有要在Stack佈置的資源都會定義在這裡。
路徑:Testapp\test_app\test_app_stack.py
匯入所需的Library,在建構式內增加建立VPC的程式碼。
使用CDK佈置資源時不需要指定所有細項,CDK會根據你應用程式的需求來佈置其餘資源。
這邊建立VPC只輸入VPC的名字及CIDR,其他不指定。
Command:
$ cdk diff
偶爾會出現CDK沒抓到的情況,當發生找不到模組的Error,請使用以下指令修正:
Command:
$ pip install –r requiremnts.txt
在剛才的建構式之中,我們只有指定建立一個VPC,但確認將建立項目卻出現大量資源,其中有分割公私有Subnets,建立Routes,Internet Gateway及Security group等等應用程序所需要的資源。
這都是由CDK按建構式判斷該建立之資源。
EC2的定義內容如下:
1. 名字
2. Instance_type指定為t2.micro
3. Amachine_image則是指定Amazon自家Linux
4. VPC指定自己剛建的
這次因應新加入的EC2 Instance,增加了IAM Role及Security Group的變更。
確認要建置好的資源後即可以用deploy指令建立Stack。Command:
$ cdk deploy
建立成功後會出現提示及Stack的ARN。
點開查看剛建立好的Stack。
點擊Resources便可查看建立資源的資料。
確認所建立的EC2 Instance是否與程式定義相同。
CDK也能修改或指定細項設定,但這次以修改剛建立的EC2 Instance的Subnet為例。
回到剛剛的EC2建構式再指定建立在Public Subnet。
確認被設置在Public Subnet中,亦自動被分配Public IP。
使用CDK輸出CloudFormation可用的JSON及Clean up指令。
輸出JSON檔可交付到其他環境中重建設定好的應用程式,不需要重寫JSON或程式碼。
Command:
$ cdk synth
在路徑TestApp\cdk.out\中能找到JSON檔
當Stack已經不再需要的時候,可以使用指令Stack刪除。
Command:
$ cdk destroy
透過使用AWS Cloud 9 及 CDK服務,可達到使用程式語言建置資源,並利用CDK的特性自動佈署所指定之外的其餘所需元件,更可利用程式的邏輯性快速重複建置;以達到簡化佈置過程的效果。
CaaS在建置Serverless architecture 時更能顯出其便利之處。