最近開始從頭學(xué)習(xí)Lambda 在AWS里面的自動(dòng)化運(yùn)用。我的操作主要是基于Python 3.7的版本,AWS的Python模塊叫做Boto。具體的語法和概念都不贅述了,直接來看具體的例子。

首先來看看第一個(gè)簡單的操作,如何創(chuàng)建一個(gè)新的EC2實(shí)例。

第一步,創(chuàng)建一個(gè)新的lambda函數(shù),選擇 author from scratch,這里他默認(rèn)會(huì)自動(dòng)創(chuàng)建一個(gè)IAM的role,并賦予訪問cloudwatch log的權(quán)限

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第1張圖片

默認(rèn)的權(quán)限顯示如下
Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第2張圖片

這里我們需要授予創(chuàng)建EC2的權(quán)限 ,因此需要修改對(duì)應(yīng)的JSON。我們可以在IAM的role里面找到這個(gè)默認(rèn)創(chuàng)建的Role,在默認(rèn)的權(quán)限上面添加對(duì) ec2:runinstances 訪問就可以了。當(dāng)然我們也可以一開始就手動(dòng)創(chuàng)建一個(gè)新的role。

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第3張圖片

下面是更新之后的權(quán)限圖
Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第4張圖片

接下來是Lambda函數(shù)。Lambda函數(shù)都是靠事件來觸發(fā)的,因此傳入?yún)?shù)里面有event和context。

函數(shù)里面首先是導(dǎo)入模塊
接下來傳入幾個(gè)環(huán)境變量,這幾個(gè)環(huán)境變量是直接在函數(shù)下面的表格里面自定義的
然后在lambda_handler這個(gè)入口函數(shù)里面,直接創(chuàng)建一個(gè)新的EC2實(shí)例,傳入?yún)?shù)。注意這個(gè)函數(shù)有2個(gè)形式參數(shù)event和context,這個(gè)是函數(shù)自帶的,這里我們用不上,但是仍然需要寫上

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第5張圖片

這幾個(gè)環(huán)境變量分別代表 AMI的代碼,實(shí)例類型,Key pair的名字和 subnet的子網(wǎng)代碼

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第6張圖片

點(diǎn)擊test,會(huì)提醒配置test的事件,這里我們不需要傳入任何參數(shù),因此選擇最簡單的hello world模板,傳入一個(gè)空的參數(shù)就行了

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第7張圖片

保存之后再次點(diǎn)擊test, 會(huì)顯示成功執(zhí)行

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第8張圖片

查看一下EC2實(shí)例 ,的確一個(gè)新的實(shí)例已經(jīng)創(chuàng)建了!
Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例

這個(gè)例子創(chuàng)建成功了,但是我已經(jīng)發(fā)現(xiàn)在控制臺(tái)里面輸入腳本不那么方便了。豆子寫Python更習(xí)慣在windows下使用Pycharm,那么如何在Pycharm里面使用boto3呢?

首先需要安裝boto3

pip install boto3

然后還需要安裝一個(gè)工具叫做 pyboto3, 這是因?yàn)槟J(rèn)情況下Pycharm沒法自動(dòng)為boto3 進(jìn)行autocomplete,安裝pyboto3之后就可以提示函數(shù)了,不過目前只支持boto3.client的使用。

pip install pyboto3

最后打開Pycharm的設(shè)置,添加Project Interpreter

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第9張圖片

為了訪問我的aws賬戶,我還需要配置credential。下載安裝
AWS CLI。然后在cmd里面輸入

aws configure

根據(jù)提示填寫對(duì)應(yīng)的信息。

配置完成之后,下面簡單的測試一下是否工作。

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例_第10張圖片

執(zhí)行一下

            
              import boto3

def getEC2():

    ec2=boto3.client('ec2')
    """ :type : pyboto3.ec2 """
    instance=ec2.describe_instances()
    print(instance)

if __name__ == '__main__':
    getEC2()
            
          

獲取到我剛剛創(chuàng)建的EC2 信息。

Lambda,AWS和Python的自動(dòng)化管理操作 - 創(chuàng)建新的EC2 實(shí)例