第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 Boto3,如何在 EC2 實(shí)例列表中獲取小于 Y 的卷?

使用 Boto3,如何在 EC2 實(shí)例列表中獲取小于 Y 的卷?

波斯汪 2022-05-19 16:10:00
我有大約 400 個(gè) redis 服務(wù)器需要連接 60gb EBS 卷。一些較舊的節(jié)點(diǎn)將小于 60gb。我的方法是遍歷每個(gè)實(shí)例,找到卷,如果卷小于 60GB,則返回 instance_id 但它似乎不起作用。redis = []def has_small_vols(instlist):    for i in instlist:        instance = ec2.Instance(str(i))        instid = i.instance_id        vols = instance.volumes.all()        for volume in vols:            if volume.size < 60:                redis.append(instid)但是for volume in vols循環(huán)中有問(wèn)題,我不確定為什么。我從這里得到了這個(gè)想法我已經(jīng)嘗試過(guò) boto3.resource('ec2') 并且我不確定我是否需要使用 boto3.client('ec2') 。創(chuàng)建實(shí)例列表不是問(wèn)題:import boto3ec2 = boto3.resource('ec2')def get_redis_nodes():    filters = [{'Name':'tag:Service', 'Values':['redis']}]    filt = [{'Name':'tag:Environment', 'Values':['production*']}]    instlist = list(ec2.instances.filter(Filters=filters).filter(Filters=filt).instance_id)    return instlist我所期望的是代碼會(huì)通過(guò)過(guò)濾的實(shí)例,獲取 EBS 卷,找到適合 IF 的 EBS 卷,然后附加到列表中。但是,如果我嘗試通過(guò)迭代打印,我不會(huì)得到卷大?。?nbsp;    for i in instlist:         instance = ec2.Instance(str(i))         vols = instance.volumes.all()         print(i.instance_id)         print(vols)         for volume in vols:             print(volume.size)>>> get_redis_info()i-a689ba6efaec2.Instance.volumesCollection(ec2.Instance(id="ec2.Instance(id='i-a689ba6efa')"), ec2.Volume)i-f4b8212aev5748dec2.Instance.volumesCollection(ec2.Instance(id="ec2.Instance(id='i-f4b8212aev5748d')"), ec2.Volume)i-0Ad235afh3a1d0f4ec2.Instance.volumesCollection(ec2.Instance(id="ec2.Instance(id='i-0Ad235afh3a1d0f4')"), ec2.Volume)
查看完整描述

1 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

您過(guò)濾和檢索實(shí)例的代碼中存在小錯(cuò)誤。


請(qǐng)注意,ec2.instances.filter()EC2 資源 API 上的方法返回 EC2 實(shí)例,就像在ec2.Instance類(lèi)型的對(duì)象中一樣,無(wú)需將其減少為實(shí)例 ID 列表,然后在您的has_small_vols()方法中將實(shí)例 ID 轉(zhuǎn)換回對(duì)象的類(lèi)型ec2.Instance。您可以簡(jiǎn)單地在ec2.Instance整個(gè)過(guò)程中使用對(duì)象列表,如果需要,最后轉(zhuǎn)換為實(shí)例 ID 列表。


嘗試以下操作:


import boto3


ec2 = boto3.resource('ec2')


def has_small_vols(instance):

    vols = instance.volumes.all()

    for volume in vols:

        if volume.size < 60:

            return True

    return False


def get_redis_nodes():

    filters = [

        {'Name':'tag:Service', 'Values':['redis']},

        {'Name':'tag:Environment', 'Values':['production*']}

    ]

    return ec2.instances.filter(Filters=filters)


redis_instances = get_redis_nodes()

redis_instances_small = [i for i in redis_instances if has_small_vols(i)]

print(redis_instances_small)


redis_small_ids = [i.id for i in redis_instances_small]

print(redis_small_ids)

請(qǐng)注意,boto3中的客戶(hù)端和資源 API 完全不同。


查看完整回答
反對(duì) 回復(fù) 2022-05-19
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)