今天會使用vscode,來建立AWS上的環境,以下架構圖為主:
首先,開啟VScode然後建立資料夾,方便做檔案的管理以及區分,建立一個YAML檔案(xxx.yaml)。
建立AWS Resource,可以依照上述架構圖來建立,有完整的觀念可以在編寫上有所幫助
首先,建立EC2,在編輯區,打ec2的關鍵字就可以看到相關提示
YAML檔需要有Resources的關鍵字,在使用CloudFormation的時候會根據Resources底下的撰寫,去建立你需要的服務。YAML檔類似於python會需要tab去判斷你的程式規則
myEC2Instance:
Type: AWS::EC2::Instance
Properties:
BlockDeviceMappings:
- DeviceName: "/dev/xvda"
Ebs:
VolumeSize: 10
VolumeType: gp3
KeyName: "itdemo"
SubnetId: !Ref subnetName
DisableApiTermination: false
ImageId: ami-0443305dabd4be2bc
InstanceType: "t3.micro"
SecurityGroupIds:
- !Ref secGroupName
UserData: !Base64 |
#!/bin/bash -ex
# put your script here
Tags:
- Key: itdemo-ec2-cf
Value: v1
myEC2Instance:屬於名字的識別,可以自由定義
Type:根據不同的Type會辨識出不同的AWS上的服務
BlockDeviceMappings: 配置硬碟的記憶體空間
DeviceName: "/dev/xvda"掛載的硬碟位置
Ebs: EC2的Volume名字
VolumeSize: 10,單位是GB,機器一開始會安裝一些套件,所以要預留一些空間給系統使用
VolumeType: gp3,不同的類型,會有不同的IOPS,以及其他的用途。其他類型:gp2, gp3, io1, io2, sc1, st1, standard
KeyName:根據你的SSH key去定義
DisableApiTermination:一開始建立如果會需要刪掉整個CloudFormation的話,建議採用false,若是到正式環境則採用true,可以防止誤動作刪掉機器,本次演練,之後會刪掉,所以使用false可以在刪掉CloudFormation的stack時,刪掉template所有的服務
ImageId: OS id,上述ID是Amazon linux 2
SecurityGroupIds: !Ref會去參考secGroupName建立的這個Id值
SubnetId: 如上建立的方式
UserData:在機器建立時,可以自動執行指令
Tags:方便做管理,Key-Value可以自行定義
明日會繼續介紹架構圖上的其他服務