利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照-創(chuàng)新互聯(lián)

利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照

此文章參考了AWS中國區(qū)關(guān)于構(gòu)建自動化EBS快照周期的官方文檔,參考鏈接“https://amazonaws-china.com/cn/blogs/china/construct-ebs-life-circle-management/” 本文與之不同的是,本文沒有使用dynamoDB服務(wù),僅通過lambda完成了EBS的快照備份。當(dāng)然,自動快照一定要搭配自動刪除功能使用,否則快照容量越來越大,無形中增加了企業(yè)的IT成本。

使用阿里云和騰訊云的平臺的時(shí)候,一直覺得自動快照策略是云廠商最基本的功能,所以在接手aws云項(xiàng)目后還保持著這種思維定式。直到我負(fù)責(zé)的一個(gè)aws 云上項(xiàng)目遷移完畢后,真正開始做快照備份時(shí),才發(fā)現(xiàn)AWS 中國區(qū)平臺上并沒有創(chuàng)建快照策略的功能,而是要自己寫Lambda函數(shù),然后通過Cloudwatch event去觸發(fā)...此處省略1千字...

成都創(chuàng)新互聯(lián)公司基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)雙線服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
  • 創(chuàng)建/刪除快照的步驟:為需要打快照的EBS磁盤打上tag---->創(chuàng)建策略和運(yùn)行l(wèi)amda函數(shù)的角色---->創(chuàng)建函數(shù)---->添加觸發(fā)器和日志

快照創(chuàng)建自動化


  • 1、對需要做快照的 EBS 卷打上標(biāo)簽,標(biāo)簽至少要有兩組;
Key Value 說明
Name用戶自定義不能包含中文字符
SnapshotSnapshot必須項(xiàng),且Key為Snapshot
  • 2、創(chuàng)建策略和角色
    step1:進(jìn)入IAM控制臺,創(chuàng)建策略,選擇json格式并輸入如下字符串(代表該賬號對EC2有查看信息和操作快照的功能)
    利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照
    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateSnapshot",
                "ec2:DeleteSnapshot",
                "ec2:CreateTags",
                "ec2:ModifySnapshotAttribute",
                "ec2:ResetSnapshotAttribute"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
    }

點(diǎn)擊查看策略,可以看到該json文件是指定對EC2和Log服務(wù)的部分權(quán)限。輸入策略名稱lambda_ebs_snapshot和描述后點(diǎn)擊保存。
利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照
step2、創(chuàng)建角色
選擇受信任的實(shí)體為(lambda)--->設(shè)置策略為(lambda_ebs_snapshot)--->創(chuàng)建標(biāo)簽--->輸入角色名稱和描述后點(diǎn)擊保存。

注意:此處的信任實(shí)體必須選擇lambda,否則后續(xù)使用該角色調(diào)用lambda函數(shù)時(shí)會發(fā)生權(quán)限未認(rèn)證的錯誤。
  • 3、創(chuàng)建函數(shù)
    step1、進(jìn)入lambda控制臺,點(diǎn)擊左側(cè)函數(shù),點(diǎn)擊右上角的新建函數(shù)。
    利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照進(jìn)入到創(chuàng)建函數(shù)頁面,輸入函數(shù)名稱為my_ebs_snapshots、和運(yùn)行平臺Python3.6、權(quán)限這里選擇現(xiàn)有角色、點(diǎn)擊現(xiàn)有角色,選擇剛才創(chuàng)建的角色lambda_ebs_snapshots,點(diǎn)擊創(chuàng)建。
    利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照
    step2、函數(shù)創(chuàng)建完成后,進(jìn)入到配置階段。
    前面操作都無誤的情況下,此處可以看到我們的lambda函數(shù)對Log和EC2都有操作權(quán)限。
    利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照
    點(diǎn)擊下方在線編輯代碼,輸入自動備份ebs快照的代碼。
    利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照
    import boto3
    import os,time
    from botocore.exceptions import ClientError
    from datetime import datetime, timedelta, timezone
    client = boto3.client('ec2')
    ec2 = boto3.resource('ec2')
    def lambda_handler(event, context):
    os.environ['TZ'] = 'Asia/Shanghai'
    time.tzset()
    i=time.strftime('%X %x %Z')     
    # set volume id, get volume who has a tag-key is 'Snapshot'
    describe_volumes=client.describe_volumes(
    Filters=[
    {
    'Name': 'tag-key',
    'Values': ['Snapshot',
    ]      
    }
    ]
    )
    volume_id_list = []
    for vol in describe_volumes['Volumes']:
    volume_id_list.append(vol.get('VolumeId'))    
    # set snapshot
    for volume_id in volume_id_list:
    volume = ec2.Volume(volume_id)
    for tags in volume.tags:
    if(tags.get('Key') == 'Name'):
    volume_name = tags.get('Value')
    description = volume_name + ' volume snapshot is created at ' + i  
    try:
    response = client.create_snapshot(
    Description=description,
    VolumeId=volume_id)
    except:
    print('Create Snapshot occured error, Volume id is ' + volume_id)
    else:
    print('Snapshot is created succeed, Snapshot id is ' + response.get('SnapshotId'))
  • 4、創(chuàng)建觸發(fā)器
    step1、點(diǎn)擊左側(cè)CloudWatch Event,開始配置。如下表示每天晚上23:00開始觸發(fā)執(zhí)行函數(shù)。
    利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照

完成后,點(diǎn)擊添加。
step2、接下來開始配置CloudWatch log,點(diǎn)擊添加。
利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照

以上步驟均完成后,點(diǎn)擊右上角保存。

附:Lambda函數(shù)執(zhí)行日志
利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照

快照刪除自動化


此處以保留6天快照數(shù)據(jù)為例,大家可以根據(jù)實(shí)際情況進(jìn)行測試和調(diào)整。my_ebs_snapshot_delete函數(shù)代碼如下:

import re
import boto3
import os,time
from botocore.exceptions import ClientError
from datetime import datetime, timedelta, timezone

client = boto3.client('ec2')
ec2 = boto3.resource('ec2')

def lambda_handler(event, context):
    s=0
    os.environ['TZ'] = 'Asia/Shanghai'
    time.tzset()
    # i=time.strftime('%X %x %Z')
    i=time.strftime('%x %Z')
    j=((datetime.now()-timedelta(days=7)).strftime('%x %Z'))
    print (j)

     # set volume id, get volume who has a tag-key is 'Snapshot'
    describe_volumes=client.describe_volumes(
        Filters=[
            {
                'Name': 'tag-key',
                'Values': ['Snapshot',
                ]

            }
        ]
    )
    volume_id_list = []
    for vol in describe_volumes['Volumes']:
        volume_id_list.append(vol.get('VolumeId'))

    # set snapshot
    for volume_id in volume_id_list:
        volume = ec2.Volume(volume_id)
        #print (volume_id)

        for tags in volume.tags:
            if(tags.get('Key') == 'Name'):
                volume_name = tags.get('Value')
        #description = volume_name + ' volume snapshot is created at ' + i
        for snapshot in volume.snapshots.all():
                match=re.findall(j,snapshot.description)
                if match: 
                    s=s+1
                    print(snapshot.description)
                    snapshot.delete()

    print ('符合條件的快照個(gè)數(shù)為'+str(s))

為了便于測試函數(shù)執(zhí)行結(jié)果,建議大家在函數(shù)頁面內(nèi)配置測試事件,這樣就不需要頻繁修改觸發(fā)器來完成觸發(fā)了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)頁題目:利用lambda函數(shù)自動創(chuàng)建EBS快照和刪除快照-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://bm7419.com/article36/gecpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣靜態(tài)網(wǎng)站、網(wǎng)站營銷企業(yè)網(wǎng)站制作、微信公眾號微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)