@cloud-carbon-footprint/aws
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions from Amazon Web Services.
55 lines • 2.92 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@cloud-carbon-footprint/common");
const ComputeOptimizerRecommendationWithProcessors_1 = __importDefault(require("./ComputeOptimizerRecommendationWithProcessors"));
const core_1 = require("@cloud-carbon-footprint/core");
class LambdaCurrentComputeOptimizerRecommendation extends ComputeOptimizerRecommendationWithProcessors_1.default {
constructor(computeOptimizerRecommendationData) {
super(computeOptimizerRecommendationData);
this.accountName = this.accountId;
this.region = this.getRegion(computeOptimizerRecommendationData.functionArn);
this.type = `Lambda-${computeOptimizerRecommendationData.finding}`;
this.memorySize =
computeOptimizerRecommendationData.currentConfiguration_memorySize;
this.description = `${this.memorySize}MB`;
this.functionVersion = computeOptimizerRecommendationData.functionVersion;
this.resourceId = this.getResourceId(computeOptimizerRecommendationData.functionArn);
this.vCpus = this.getVcpusForLambda(this.memorySize);
this.vCpuHours = this.getVCpuHours(this.vCpus);
this.usageAmount = (0, common_1.getHoursInMonth)();
this.recommendationOptions = [
{
memorySize: computeOptimizerRecommendationData.recommendationOptions_1_configuration_memorySize,
costSavings: computeOptimizerRecommendationData.recommendationOptions_1_estimatedMonthlySavings_value,
},
{
memorySize: computeOptimizerRecommendationData.recommendationOptions_2_configuration_memorySize,
costSavings: computeOptimizerRecommendationData.recommendationOptions_2_estimatedMonthlySavings_value,
},
{
memorySize: computeOptimizerRecommendationData.recommendationOptions_3_configuration_memorySize,
costSavings: computeOptimizerRecommendationData.recommendationOptions_3_estimatedMonthlySavings_value,
},
];
}
getResourceId(functionArn) {
const functionData = functionArn.split(':');
const name = functionData[functionData.length - 2];
const version = functionData[functionData.length - 1];
return `${name}:${version}`;
}
getVcpusForLambda(memorySize) {
return (parseFloat(memorySize) / 1769).toString();
}
getComputeProcessors() {
return [core_1.COMPUTE_PROCESSOR_TYPES.UNKNOWN];
}
getGPUComputeProcessors() {
return [core_1.COMPUTE_PROCESSOR_TYPES.UNKNOWN];
}
}
exports.default = LambdaCurrentComputeOptimizerRecommendation;
//# sourceMappingURL=LambdaCurrentComputeOptimizerRecommendation.js.map