溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

AWS 通過(guò)成本分配標(biāo)簽來(lái)查看賬單

發(fā)布時(shí)間:2020-06-29 04:51:04 來(lái)源:網(wǎng)絡(luò) 閱讀:3500 作者:beanxyz 欄目:云計(jì)算

公司的AWS上運(yùn)行了很多不同的服務(wù),EC2,S3,VPC等等,他們屬于20多個(gè)不同的診所。之前的管理員并沒(méi)有進(jìn)行很好的Tag,因此每個(gè)月底的賬單都只能看見(jiàn)一大堆總的開(kāi)支,具體到每個(gè)服務(wù),每個(gè)診所很難確定具體的開(kāi)支,結(jié)果就是所有的開(kāi)支都從IT部門的預(yù)算走的,而不是分?jǐn)偟綄?shí)際的各個(gè)診所上去。

為了解決這個(gè)問(wèn)題,可以對(duì)每個(gè)服務(wù)都進(jìn)行自定義的Tag標(biāo)簽,然后在Cost Allocation Tag的控制臺(tái)里激活自定義的標(biāo)簽,一天之后,就可以在Billing賬單里面根據(jù)自己定義的標(biāo)簽來(lái)過(guò)濾查詢了。

比如說(shuō),為了區(qū)分診所,我定義了一個(gè)Tag,key是Clinic,value就是每個(gè)診所的名字了

AWS 通過(guò)成本分配標(biāo)簽來(lái)查看賬單

因?yàn)槲矣猩习賯€(gè)volume和上千個(gè)Snapshot,豆子寫了個(gè)簡(jiǎn)單的PowerShell腳本來(lái)添加標(biāo)簽。EC2實(shí)例上手動(dòng)添加了對(duì)應(yīng)的標(biāo)簽,然后根據(jù)EC2關(guān)聯(lián)的volume添加Tag,再通過(guò)volume來(lái)關(guān)聯(lián)snapshot添加Tag

Write-Host "Checking EC2 instance Tags status" -ForegroundColor Yellow

$all=Get-EC2Instance | select -expand instances

$return=$all | Where-Object {$_.tag.key -notcontains "Clinic"}

if($return -ne $null){
$username = "example@aa.com" 
$password = "password" | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username,$password)

Send-MailMessage -From example@aa.com -to example@bb.com -SmtpServer smtp.office365.com -Port 587 -UseSsl -Subject "EC2 instance Tag" -Credential $credential
exit

}
# confirm EC2 instances were tagged

$result=@()
foreach($item in $all){

    $Name=$item.tag | Where-Object {$_.Key -eq 'Name'} | select -ExpandProperty value
    $clinic=$item.tag | Where-Object {$_.Key -eq 'clinic'} | select -ExpandProperty value
    $item | add-member -NotePropertyName Description -NotePropertyValue $name
    $item | add-member -NotePropertyName Clinic -NotePropertyValue $clinic

    $item = $item | select *
    $result+=$item

}

$result | select Description, InstanceId, privateIpaddress, Clinic | Group-Object Clinic

write-host "Updating Volume Tags Status ... " -ForegroundColor Yellow 
#Tag all volumes based on their attached EC2 Clinic Tag

$allvol=Get-EC2Volume | Where-Object {$_.tag.key -notcontains "Clinic"}

foreach($item in $result){
    foreach($item2 in $allvol){

        if ($item2.attachments.instanceid -eq $item.InstanceId){
                $value=$item.Clinic
              New-EC2Tag -Resource $item2.VolumeId -Tag @{Key="Clinic";value=$value} 
           }

        }

}

write-host "Done !" -ForegroundColor Yellow

Write-Host "Updating Snapshot Tags Status..." -ForegroundColor Yellow 
#Tag all snapshots based on the volume Tag
$allvol=Get-EC2Volume 
$filter= New-Object Amazon.EC2.Model.Filter -Property @{Name = "owner-id"; Values ='xxxxxxx' } 
$snapshots=Get-EC2Snapshot -Filter $filter 

$snapshots= $snapshots | ? {$_.Tag.key -notcontains "Clinic"} 

foreach($i in $snapshots){
    $volid=$i.VolumeId

    foreach($j in $allvol){

        if($volid -eq $j.Volumeid){

            $value=$j.tag | Where-Object {$_.key -eq 'Clinic'} | select -ExpandProperty value

            $name=$j.Tag | Where-Object {$_.key -eq "Name"} | select -ExpandProperty value

            $snapid=$i.snapshotid
            $snapid
            New-EC2Tag -Resource $snapid -Tag @{Key="Clinic";value=$value} 
            New-EC2Tag -Resource $snapid -Tag @{Key="Name";value=$name}

        }
    }

}

write-host "Done !" -ForegroundColor Yellow

執(zhí)行之后大概是這樣, 確認(rèn)工作之后把他放到任務(wù)計(jì)劃里面自動(dòng)跑就行了

AWS 通過(guò)成本分配標(biāo)簽來(lái)查看賬單

然后過(guò)了24小時(shí),登錄billing的控制臺(tái),根據(jù)Tag來(lái)分類,就可以看見(jiàn)每個(gè)診所的開(kāi)支記錄了

AWS 通過(guò)成本分配標(biāo)簽來(lái)查看賬單

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI