DevOps課程-AWS CLI 1

AWS CLI建立EC2 instance

ZONGRU Li
8 min readFeb 4, 2022

之前上DevOps課程前我自己研究ECR的時候已經有在桌機安裝AWS CLI了

這邊講師把AWS CLI工具完整講述

首先要注意的是帳號有啟用CLI工具

在最早上K8s CKA課程時申請IAM服務建議帳號的時候有以下截圖:

其中注意到:

上面的CLI工具許可項目要勾起來才能用

這邊重複當初ECR的部分,我在CMD模式執行以下指令:

#登入AWS的IAM帳號綁定(過程需要填入Access key ID,Secret access key,region)
aws configure

參考:

其中儲存的資訊會在個人的home目錄內的.aws目錄內

windows下是在:

以下這張圖就是講師的檔案內容:

也可以透過指令查看目前的cinfig設置:

#執行以下指令查看config設置:
aws config list

前面上課都是用AWS的UI介面建立EC2 instance

透過AWS CLI工具同樣也可以做到,例如隨便打個:

aws ec2 aa
看到許多指令提示

基本透過AWS CLI建立EC2 instance大概可能的指令整理如下:

aws ec2 run-instances
--image-id ami-xxxxxx(OS的image id)
--count 1(數量)
--instance-type t2.micro(Resource大小)
--key-name MyKeyPair
--security-group-ids sg-900018f1(防火牆安全群組id)
--subnet-id subnet-6e7f829e

這邊課程講師打算重新建立key-name(也就是key-pair) & security-group-ids這兩樣

建立security-group-ids:

在建立新的防火牆安全群組前,我們先將現有的清單列出來,執行:

#用以下指令可以查看現有的ec2 security-groups:
aws ec2 describe-security-groups
很長

其中在建立sg(security group)的時候要選定vpc id(如上是一個)

#執行以下指令直接查看有哪些vpc(id)可用:
aws ec2 describe-vpcs
拿到可用的vpc id

此時就可以建立sg(security group)

順便附帶一張之前建立的UI畫面:

實際建立sg(security group)指令整理如下:

#sg(security group)建立指令:
aws ec2 create-security-group --group-name my-sg --description "MY SG" --vpc-id {剛剛看到的VPC id}
執行成功!

如上可以看到Output是json,也就是當初aws configure設置的

從UI上面看:

並且也可以從指令來確認完整資訊:

#執行以下指令直接查看該SG內容:
aws ec2 describe-security-groups --group-ids {剛剛拿到的sg id-->sg-09578129db307f891}

但是上面尚未有任何的防火牆規則!

也就是此時得到sg id →sg-09578129db307f891

在上面建立得到的SG內設置防火牆規則:

#在上述的SG內建立inbound規則,讓我本機可以連上去
aws ec2 authorize-security-group-ingress \
--group-id {上面得到的SG id} \
--protocol tcp \
--port 22 \
--cidr {我本機對外IP/32 後面32位不變動意思就是唯一IP位置}
查看web就會看到有新增的防火牆規則!

或重新用指令觀看這個sg id的內容:

建立新的key-pair:

#建立新的連線用的key-pair指令(其中'KeyMaterial'可以從指令help看到):
aws ec2 create-key-pair \
--key-name {key名稱,這邊用MyKpCli} \
--query 'KeyMaterial' \
--output text > MyKpCli.pem

先切換到需要輸出的目錄去才執行:

出現了!

這邊要在取得subnet-id:

回過頭來看建立EC2 instance的指令:

aws ec2 run-instances
--image-id ami-xxxxxx(這個還缺!)
--count 1
--instance-type t2.micro
--key-name MyKpCli
--security-group-ids sg-09578129db307f891
--subnet-id subnet-6e7f829e(這個也還缺)

所以還需要:

#取得subnet的清單指令:
aws ec2 describe-subnets

直接取用上面第一個的SubnetId →subnet-00416c53d2d4a9db6

其實也可以從UI上直接查:

一樣會看到subnet id

再來還要拿到image-id:

同樣可以在啟動新的執行個體頁面就可以挑選image-id

所以拿到image-id →ami-03d79d440297083e3

最終透過AWS CLI工具來建立EC2的指令完成:

#最終透過AWS CLI工具來建立EC2的指令完成:
aws ec2 run-instances
--image-id ami-03d79d440297083e3
--count 1
--instance-type t2.micro
--key-name MyKpCli
--security-group-ids sg-09578129db307f891
--subnet-id subnet-00416c53d2d4a9db6
執行成功!!

並且可以透過指令查看現有的EC2 instance:

#查看現有的EC2 instance
aws ec2 describe-instances

另外講師特別提醒,在Linux或Mac環境下使用前面建立的pem檔案做遠端

ssh連線到該機台,會有以下錯誤提示:

講師連線的畫面提示

意思就是目前pem檔案的權限開太大了,會有風險,建議改一下權限

所以可以直接改一下pem金鑰檔案權限大小:

講師畫面

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet