@cloud-carbon-footprint/aws
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions from Amazon Web Services.
30 lines (26 loc) • 1.2 kB
text/typescript
/*
* © 2021 Thoughtworks, Inc.
*/
import { RightsizingRecommendation as AwsRightsizingRecommendation } from '@aws-sdk/client-cost-explorer'
import { getHoursInMonth } from '@cloud-carbon-footprint/common'
import RightsizingRecommendation from './RightsizingRecommendation'
export default class RightsizingTargetRecommendation extends RightsizingRecommendation {
constructor(rightsizingRecommendationData: AwsRightsizingRecommendation) {
super(rightsizingRecommendationData)
const targetInstance =
rightsizingRecommendationData.ModifyRecommendationDetail.TargetInstances.pop()
this.accountId = rightsizingRecommendationData.AccountId
this.type = rightsizingRecommendationData.RightsizingType
this.region = this.getMappedRegion(
targetInstance.ResourceDetails.EC2ResourceDetails.Region,
)
this.instanceName = 'Recommend new instance'
this.instanceType =
targetInstance.ResourceDetails.EC2ResourceDetails.InstanceType
this.vCpuHours = this.getVCpuHours(
targetInstance.ResourceDetails.EC2ResourceDetails,
)
this.costSavings = parseFloat(targetInstance.EstimatedMonthlySavings)
this.usageAmount = getHoursInMonth()
}
}