簡體   English   中英

未使用的AWS預留實例中的問題

[英]Issue in Unused AWS Reserved Instances

在檢查未使用的預留實例時,我從Github使用python腳本檢索了名為ec2-check-reserved-instances的實例 它包含:

            running_instances = {}
            for reservation in reservations:
            for instance in reservation.instances:
            if instance.state != "running":
                  sys.stderr.write("Disqualifying instance %s: not running\n" % ( instance.id ) )
            elif instance.spot_instance_request_id:
                sys.stderr.write("Disqualifying instance %s: spot\n" % ( instance.id ) )
            else:
                 **if instance.vpc_id:**
                       print "Does not support vpc yet, please be careful when trusting these results"
                else:
                      az = instance.placement
                      instance_type = instance.instance_type
                      running_instances[ (instance_type, az ) ] = running_instances.get( (instance_type, az ) , 0 ) + 1


   # pprint( running_instances )

它使我正在運行的實例為空,而沒有保留的實例也為空,但是輸出未使用的保留實例。

當我使用相同的代碼而不檢查if instance.vpc_id ,如下所示:

            running_instances = {}
            for reservation in reservations:
            for instance in reservation.instances:
            if instance.state != "running":
                sys.stderr.write("Disqualifying instance %s: not running\n" % ( instance.id ) )
            elif instance.spot_instance_request_id:
                   sys.stderr.write("Disqualifying instance %s: spot\n" % ( instance.id ) )
            else:
                 az = instance.placement
                 instance_type = instance.instance_type
                 running_instances[ (instance_type, az ) ] = running_instances.get( (instance_type, az ) , 0 ) + 1


           # pprint( running_instances )

它給了我一個正在運行的實例列表,而不是創建的實例。 但是它不會顯示未使用的保留實例。 僅顯示“您沒有未使用的保留實例”。

使用和不使用instance.vpc_id檢查時,為什么會得到不同的結果? 哪一個是對的?

實際上,它是通過比較正在運行的實例和保留的實例部分來檢查未使用的實例的。

競價型實例又意味着什么,為什么我們也必須忽略競價型實例?

我不會遍歷代碼(使用該代碼是您的選擇),但是我將解釋一些概念,這些概念可能會使事情更容易理解。

Amazon EC2預留實例是對某些Amazon EC2容量的預購買。 通過購買預留實例,您有權免費使用匹配的Amazon EC2實例(因為預留實例是按年或按月收費)。

無需指定“保留” 哪個實例。 而是,AWS計費系統查看每小時使用的EC2實例,並將其與購買的預留實例容量進行比較。 如果您擁有與使用的實例匹配的預留實例,則該實例不收取小時費用。 匹配由實例類型,操作系統和可選的可用區完成。

如果您擁有一個預留實例但運行了兩個匹配的EC2實例,則該小時內只有一個 EC2實例與預留實例匹配。 另一個EC2實例按正常的按需計費。

因此, 未使用的預留實例僅表示您已購買了預留實例,並且當前運行的EC2實例數量不及預留實例的數量。 因此,您可以免費運行其他EC2實例(因為它已通過預留實例預付費)。

推出, 現貨實例的Amazon EC2實例有自己的定價方法,基於當前現貨價格基礎上的實例類型和可用區的實例。 競價型實例將永遠不會消耗預留實例的容量,因此應將它們從“未使用的”預留實例的任何計算中排除。

同樣,在計算未使用的預留實例時,也應忽略未運行的EC2實例。

至於腳本中的instance.vpc_id行,該腳本似乎寫於2012年,無法正確處理將Amazon EC2實例啟動到Amazon VPC中的情況。 這些天,默認設置是使用Amazon VPC,所以我不建議您使用此腳本,因為它已過期並且無法處理此用例。

相反,我建議使用AWS管理控制台中提供的預留實例利用率報告 ,該報告可以提供您要查找的信息:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM