Preparation: Create EC2 Instances with TF
首先引用前面課程的TF程式碼來建立三台EC2
main.tf:
可以看到上面建立了三台EC2並有執行一個腳本做一些安裝
terraform.tfvars:
entry-script.sh:
以上建置假若沒有問題,就可以先來撰寫準備確認狀態的Python程式碼
由於我使用的Boto3 Library版本跟講師有落差,所以只能嘗試自己撰寫
這邊先看到要取得EC2狀態的方法是 → describe_instances()
看到裡面的Response的物件內容:
其中注意有很多State資料,我們要找的Response的State資料是:
撰寫出以下的Python搭配Boto3 Library的程式碼:
可以注意到我上面region_name有換到東京
然後小心describe_instances()的Response物件的階層關係取得資料
我先嘗試手動建立一個EC2可以正常印出以下:
然後移除這個手動建立的EC2後
改用Terraform建立三台:
執行Python程式看到:
就在這個狀況下嘗試移除其中一個Terraform的aws_instance
然後再次執行Terraform:
回頭立刻執行Python程式看到:
接著要來研究的是狀態檢查也就是英文介面的"Status check"資料怎麼取
但是其實找遍describe_instances()的Response內容可能都不會看到
因為這項資訊是在另一個Fun.裡面,Fun.叫describe_instance_status()
看起來有兩處有一樣的內容,挑其中一個就好
然後我們這邊只是想知道EC2能不能用了,所以預計取這個值:
這邊要特別注意的是這個回傳值是多筆
所以先寫到另一個for迴圈
印出看到:
Get everything in 1 AWS API call
其實可以注意到的是
describe_instances()回傳的內容龐大
但是其實describe_instance_status()也已經包含我們要的Instance State資料了:
所以可以只透過describe_instance_status()取得就好
最後改寫為如下:
印出來結果:
看到EC2的instance是running,instance狀態ok,系統狀態也都ok