From 15509fdf784c1b8f32f6df9b299c7e77bfe68dd6 Mon Sep 17 00:00:00 2001 From: awstools Date: Wed, 20 Nov 2024 19:12:54 +0000 Subject: [PATCH] feat(client-compute-optimizer): This release enables AWS Compute Optimizer to analyze and generate optimization recommendations for Amazon Aurora database instances. It also enables Compute Optimizer to identify idle Amazon EC2 instances, Amazon EBS volumes, Amazon ECS services running on Fargate, and Amazon RDS databases. --- clients/client-compute-optimizer/README.md | 16 + .../src/ComputeOptimizer.ts | 47 + .../src/ComputeOptimizerClient.ts | 12 + .../DeleteRecommendationPreferencesCommand.ts | 2 +- ...DescribeRecommendationExportJobsCommand.ts | 2 +- .../ExportIdleRecommendationsCommand.ts | 148 ++ ...ExportRDSDatabaseRecommendationsCommand.ts | 2 +- .../commands/GetIdleRecommendationsCommand.ts | 187 +++ ...seRecommendationProjectedMetricsCommand.ts | 2 +- .../GetRDSDatabaseRecommendationsCommand.ts | 9 +- .../GetRecommendationPreferencesCommand.ts | 4 +- .../GetRecommendationSummariesCommand.ts | 20 + .../PutRecommendationPreferencesCommand.ts | 2 +- .../src/commands/index.ts | 2 + .../src/models/models_0.ts | 795 ++++++++++- .../src/protocols/Aws_json1_0.ts | 231 ++++ .../aws-models/compute-optimizer.json | 1209 +++++++++++++++-- 17 files changed, 2542 insertions(+), 148 deletions(-) create mode 100644 clients/client-compute-optimizer/src/commands/ExportIdleRecommendationsCommand.ts create mode 100644 clients/client-compute-optimizer/src/commands/GetIdleRecommendationsCommand.ts diff --git a/clients/client-compute-optimizer/README.md b/clients/client-compute-optimizer/README.md index 31cd6318e3f8..a22a0c4aba01 100644 --- a/clients/client-compute-optimizer/README.md +++ b/clients/client-compute-optimizer/README.md @@ -261,6 +261,14 @@ ExportECSServiceRecommendations [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/compute-optimizer/command/ExportECSServiceRecommendationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/ExportECSServiceRecommendationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/ExportECSServiceRecommendationsCommandOutput/) + +
+ +ExportIdleRecommendations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/compute-optimizer/command/ExportIdleRecommendationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/ExportIdleRecommendationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/ExportIdleRecommendationsCommandOutput/) +
@@ -357,6 +365,14 @@ GetEnrollmentStatusesForOrganization [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/compute-optimizer/command/GetEnrollmentStatusesForOrganizationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/GetEnrollmentStatusesForOrganizationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/GetEnrollmentStatusesForOrganizationCommandOutput/) +
+
+ +GetIdleRecommendations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/compute-optimizer/command/GetIdleRecommendationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/GetIdleRecommendationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-compute-optimizer/Interface/GetIdleRecommendationsCommandOutput/) +
diff --git a/clients/client-compute-optimizer/src/ComputeOptimizer.ts b/clients/client-compute-optimizer/src/ComputeOptimizer.ts index d3ebd02fc4d5..cb27bc92cd1d 100644 --- a/clients/client-compute-optimizer/src/ComputeOptimizer.ts +++ b/clients/client-compute-optimizer/src/ComputeOptimizer.ts @@ -32,6 +32,11 @@ import { ExportECSServiceRecommendationsCommandInput, ExportECSServiceRecommendationsCommandOutput, } from "./commands/ExportECSServiceRecommendationsCommand"; +import { + ExportIdleRecommendationsCommand, + ExportIdleRecommendationsCommandInput, + ExportIdleRecommendationsCommandOutput, +} from "./commands/ExportIdleRecommendationsCommand"; import { ExportLambdaFunctionRecommendationsCommand, ExportLambdaFunctionRecommendationsCommandInput, @@ -92,6 +97,11 @@ import { GetEnrollmentStatusesForOrganizationCommandInput, GetEnrollmentStatusesForOrganizationCommandOutput, } from "./commands/GetEnrollmentStatusesForOrganizationCommand"; +import { + GetIdleRecommendationsCommand, + GetIdleRecommendationsCommandInput, + GetIdleRecommendationsCommandOutput, +} from "./commands/GetIdleRecommendationsCommand"; import { GetLambdaFunctionRecommendationsCommand, GetLambdaFunctionRecommendationsCommandInput, @@ -141,6 +151,7 @@ const commands = { ExportEBSVolumeRecommendationsCommand, ExportEC2InstanceRecommendationsCommand, ExportECSServiceRecommendationsCommand, + ExportIdleRecommendationsCommand, ExportLambdaFunctionRecommendationsCommand, ExportLicenseRecommendationsCommand, ExportRDSDatabaseRecommendationsCommand, @@ -153,6 +164,7 @@ const commands = { GetEffectiveRecommendationPreferencesCommand, GetEnrollmentStatusCommand, GetEnrollmentStatusesForOrganizationCommand, + GetIdleRecommendationsCommand, GetLambdaFunctionRecommendationsCommand, GetLicenseRecommendationsCommand, GetRDSDatabaseRecommendationProjectedMetricsCommand, @@ -267,6 +279,23 @@ export interface ComputeOptimizer { cb: (err: any, data?: ExportECSServiceRecommendationsCommandOutput) => void ): void; + /** + * @see {@link ExportIdleRecommendationsCommand} + */ + exportIdleRecommendations( + args: ExportIdleRecommendationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + exportIdleRecommendations( + args: ExportIdleRecommendationsCommandInput, + cb: (err: any, data?: ExportIdleRecommendationsCommandOutput) => void + ): void; + exportIdleRecommendations( + args: ExportIdleRecommendationsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ExportIdleRecommendationsCommandOutput) => void + ): void; + /** * @see {@link ExportLambdaFunctionRecommendationsCommand} */ @@ -477,6 +506,24 @@ export interface ComputeOptimizer { cb: (err: any, data?: GetEnrollmentStatusesForOrganizationCommandOutput) => void ): void; + /** + * @see {@link GetIdleRecommendationsCommand} + */ + getIdleRecommendations(): Promise; + getIdleRecommendations( + args: GetIdleRecommendationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getIdleRecommendations( + args: GetIdleRecommendationsCommandInput, + cb: (err: any, data?: GetIdleRecommendationsCommandOutput) => void + ): void; + getIdleRecommendations( + args: GetIdleRecommendationsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetIdleRecommendationsCommandOutput) => void + ): void; + /** * @see {@link GetLambdaFunctionRecommendationsCommand} */ diff --git a/clients/client-compute-optimizer/src/ComputeOptimizerClient.ts b/clients/client-compute-optimizer/src/ComputeOptimizerClient.ts index 7af960a88bde..fdd035a070e8 100644 --- a/clients/client-compute-optimizer/src/ComputeOptimizerClient.ts +++ b/clients/client-compute-optimizer/src/ComputeOptimizerClient.ts @@ -77,6 +77,10 @@ import { ExportECSServiceRecommendationsCommandInput, ExportECSServiceRecommendationsCommandOutput, } from "./commands/ExportECSServiceRecommendationsCommand"; +import { + ExportIdleRecommendationsCommandInput, + ExportIdleRecommendationsCommandOutput, +} from "./commands/ExportIdleRecommendationsCommand"; import { ExportLambdaFunctionRecommendationsCommandInput, ExportLambdaFunctionRecommendationsCommandOutput, @@ -125,6 +129,10 @@ import { GetEnrollmentStatusesForOrganizationCommandInput, GetEnrollmentStatusesForOrganizationCommandOutput, } from "./commands/GetEnrollmentStatusesForOrganizationCommand"; +import { + GetIdleRecommendationsCommandInput, + GetIdleRecommendationsCommandOutput, +} from "./commands/GetIdleRecommendationsCommand"; import { GetLambdaFunctionRecommendationsCommandInput, GetLambdaFunctionRecommendationsCommandOutput, @@ -178,6 +186,7 @@ export type ServiceInputTypes = | ExportEBSVolumeRecommendationsCommandInput | ExportEC2InstanceRecommendationsCommandInput | ExportECSServiceRecommendationsCommandInput + | ExportIdleRecommendationsCommandInput | ExportLambdaFunctionRecommendationsCommandInput | ExportLicenseRecommendationsCommandInput | ExportRDSDatabaseRecommendationsCommandInput @@ -190,6 +199,7 @@ export type ServiceInputTypes = | GetEffectiveRecommendationPreferencesCommandInput | GetEnrollmentStatusCommandInput | GetEnrollmentStatusesForOrganizationCommandInput + | GetIdleRecommendationsCommandInput | GetLambdaFunctionRecommendationsCommandInput | GetLicenseRecommendationsCommandInput | GetRDSDatabaseRecommendationProjectedMetricsCommandInput @@ -209,6 +219,7 @@ export type ServiceOutputTypes = | ExportEBSVolumeRecommendationsCommandOutput | ExportEC2InstanceRecommendationsCommandOutput | ExportECSServiceRecommendationsCommandOutput + | ExportIdleRecommendationsCommandOutput | ExportLambdaFunctionRecommendationsCommandOutput | ExportLicenseRecommendationsCommandOutput | ExportRDSDatabaseRecommendationsCommandOutput @@ -221,6 +232,7 @@ export type ServiceOutputTypes = | GetEffectiveRecommendationPreferencesCommandOutput | GetEnrollmentStatusCommandOutput | GetEnrollmentStatusesForOrganizationCommandOutput + | GetIdleRecommendationsCommandOutput | GetLambdaFunctionRecommendationsCommandOutput | GetLicenseRecommendationsCommandOutput | GetRDSDatabaseRecommendationProjectedMetricsCommandOutput diff --git a/clients/client-compute-optimizer/src/commands/DeleteRecommendationPreferencesCommand.ts b/clients/client-compute-optimizer/src/commands/DeleteRecommendationPreferencesCommand.ts index c9845ffad0c9..13e723becc7a 100644 --- a/clients/client-compute-optimizer/src/commands/DeleteRecommendationPreferencesCommand.ts +++ b/clients/client-compute-optimizer/src/commands/DeleteRecommendationPreferencesCommand.ts @@ -44,7 +44,7 @@ export interface DeleteRecommendationPreferencesCommandOutput * // const { ComputeOptimizerClient, DeleteRecommendationPreferencesCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import * const client = new ComputeOptimizerClient(config); * const input = { // DeleteRecommendationPreferencesRequest - * resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance", // required + * resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance" || "Idle", // required * scope: { // Scope * name: "Organization" || "AccountId" || "ResourceArn", * value: "STRING_VALUE", diff --git a/clients/client-compute-optimizer/src/commands/DescribeRecommendationExportJobsCommand.ts b/clients/client-compute-optimizer/src/commands/DescribeRecommendationExportJobsCommand.ts index 4ce6f62cf5e0..c262ea1edbc6 100644 --- a/clients/client-compute-optimizer/src/commands/DescribeRecommendationExportJobsCommand.ts +++ b/clients/client-compute-optimizer/src/commands/DescribeRecommendationExportJobsCommand.ts @@ -71,7 +71,7 @@ export interface DescribeRecommendationExportJobsCommandOutput * // metadataKey: "STRING_VALUE", * // }, * // }, - * // resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance", + * // resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance" || "Idle", * // status: "Queued" || "InProgress" || "Complete" || "Failed", * // creationTimestamp: new Date("TIMESTAMP"), * // lastUpdatedTimestamp: new Date("TIMESTAMP"), diff --git a/clients/client-compute-optimizer/src/commands/ExportIdleRecommendationsCommand.ts b/clients/client-compute-optimizer/src/commands/ExportIdleRecommendationsCommand.ts new file mode 100644 index 000000000000..28409d0cbbff --- /dev/null +++ b/clients/client-compute-optimizer/src/commands/ExportIdleRecommendationsCommand.ts @@ -0,0 +1,148 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { ComputeOptimizerClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../ComputeOptimizerClient"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ExportIdleRecommendationsRequest, ExportIdleRecommendationsResponse } from "../models/models_0"; +import { de_ExportIdleRecommendationsCommand, se_ExportIdleRecommendationsCommand } from "../protocols/Aws_json1_0"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ExportIdleRecommendationsCommand}. + */ +export interface ExportIdleRecommendationsCommandInput extends ExportIdleRecommendationsRequest {} +/** + * @public + * + * The output of {@link ExportIdleRecommendationsCommand}. + */ +export interface ExportIdleRecommendationsCommandOutput extends ExportIdleRecommendationsResponse, __MetadataBearer {} + +/** + *

+ * Export optimization recommendations for your idle resources. + *

+ *

Recommendations are exported in a comma-separated values (CSV) file, and its metadata + * in a JavaScript Object Notation (JSON) file, to an existing Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more information, see Exporting + * Recommendations in the Compute Optimizer User + * Guide.

+ *

You can have only one idle resource export job in progress per Amazon Web Services Region.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { ComputeOptimizerClient, ExportIdleRecommendationsCommand } from "@aws-sdk/client-compute-optimizer"; // ES Modules import + * // const { ComputeOptimizerClient, ExportIdleRecommendationsCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import + * const client = new ComputeOptimizerClient(config); + * const input = { // ExportIdleRecommendationsRequest + * accountIds: [ // AccountIds + * "STRING_VALUE", + * ], + * filters: [ // IdleRecommendationFilters + * { // IdleRecommendationFilter + * name: "Finding" || "ResourceType", + * values: [ // FilterValues + * "STRING_VALUE", + * ], + * }, + * ], + * fieldsToExport: [ // ExportableIdleFields + * "AccountId" || "ResourceArn" || "ResourceId" || "ResourceType" || "LastRefreshTimestamp" || "LookbackPeriodInDays" || "SavingsOpportunity" || "SavingsOpportunityAfterDiscount" || "UtilizationMetricsCpuMaximum" || "UtilizationMetricsMemoryMaximum" || "UtilizationMetricsNetworkOutBytesPerSecondMaximum" || "UtilizationMetricsNetworkInBytesPerSecondMaximum" || "UtilizationMetricsDatabaseConnectionsMaximum" || "UtilizationMetricsEBSVolumeReadIOPSMaximum" || "UtilizationMetricsEBSVolumeWriteIOPSMaximum" || "UtilizationMetricsVolumeReadOpsPerSecondMaximum" || "UtilizationMetricsVolumeWriteOpsPerSecondMaximum" || "Finding" || "FindingDescription" || "Tags", + * ], + * s3DestinationConfig: { // S3DestinationConfig + * bucket: "STRING_VALUE", + * keyPrefix: "STRING_VALUE", + * }, + * fileFormat: "Csv", + * includeMemberAccounts: true || false, + * }; + * const command = new ExportIdleRecommendationsCommand(input); + * const response = await client.send(command); + * // { // ExportIdleRecommendationsResponse + * // jobId: "STRING_VALUE", + * // s3Destination: { // S3Destination + * // bucket: "STRING_VALUE", + * // key: "STRING_VALUE", + * // metadataKey: "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param ExportIdleRecommendationsCommandInput - {@link ExportIdleRecommendationsCommandInput} + * @returns {@link ExportIdleRecommendationsCommandOutput} + * @see {@link ExportIdleRecommendationsCommandInput} for command's `input` shape. + * @see {@link ExportIdleRecommendationsCommandOutput} for command's `response` shape. + * @see {@link ComputeOptimizerClientResolvedConfig | config} for ComputeOptimizerClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You do not have sufficient access to perform this action.

+ * + * @throws {@link InternalServerException} (server fault) + *

An internal error has occurred. Try your call again.

+ * + * @throws {@link InvalidParameterValueException} (client fault) + *

The value supplied for the input parameter is out of range or not valid.

+ * + * @throws {@link LimitExceededException} (client fault) + *

The request exceeds a limit of the service.

+ * + * @throws {@link MissingAuthenticationToken} (client fault) + *

The request must contain either a valid (registered) Amazon Web Services access key ID + * or X.509 certificate.

+ * + * @throws {@link OptInRequiredException} (client fault) + *

The account is not opted in to Compute Optimizer.

+ * + * @throws {@link ServiceUnavailableException} (server fault) + *

The request has failed due to a temporary failure of the server.

+ * + * @throws {@link ThrottlingException} (client fault) + *

The request was denied due to request throttling.

+ * + * @throws {@link ComputeOptimizerServiceException} + *

Base exception class for all service exceptions from ComputeOptimizer service.

+ * + * @public + */ +export class ExportIdleRecommendationsCommand extends $Command + .classBuilder< + ExportIdleRecommendationsCommandInput, + ExportIdleRecommendationsCommandOutput, + ComputeOptimizerClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: ComputeOptimizerClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("ComputeOptimizerService", "ExportIdleRecommendations", {}) + .n("ComputeOptimizerClient", "ExportIdleRecommendationsCommand") + .f(void 0, void 0) + .ser(se_ExportIdleRecommendationsCommand) + .de(de_ExportIdleRecommendationsCommand) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: ExportIdleRecommendationsRequest; + output: ExportIdleRecommendationsResponse; + }; + sdk: { + input: ExportIdleRecommendationsCommandInput; + output: ExportIdleRecommendationsCommandOutput; + }; + }; +} diff --git a/clients/client-compute-optimizer/src/commands/ExportRDSDatabaseRecommendationsCommand.ts b/clients/client-compute-optimizer/src/commands/ExportRDSDatabaseRecommendationsCommand.ts index 3c1ee0d1ac80..c5dded83bad9 100644 --- a/clients/client-compute-optimizer/src/commands/ExportRDSDatabaseRecommendationsCommand.ts +++ b/clients/client-compute-optimizer/src/commands/ExportRDSDatabaseRecommendationsCommand.ts @@ -60,7 +60,7 @@ export interface ExportRDSDatabaseRecommendationsCommandOutput * }, * ], * fieldsToExport: [ // ExportableRDSDBFields - * "ResourceArn" || "AccountId" || "Engine" || "EngineVersion" || "Idle" || "MultiAZDBInstance" || "CurrentDBInstanceClass" || "CurrentStorageConfigurationStorageType" || "CurrentStorageConfigurationAllocatedStorage" || "CurrentStorageConfigurationMaxAllocatedStorage" || "CurrentStorageConfigurationIOPS" || "CurrentStorageConfigurationStorageThroughput" || "CurrentInstanceOnDemandHourlyPrice" || "CurrentStorageOnDemandMonthlyPrice" || "LookbackPeriodInDays" || "UtilizationMetricsCpuMaximum" || "UtilizationMetricsMemoryMaximum" || "UtilizationMetricsEBSVolumeStorageSpaceUtilizationMaximum" || "UtilizationMetricsNetworkReceiveThroughputMaximum" || "UtilizationMetricsNetworkTransmitThroughputMaximum" || "UtilizationMetricsEBSVolumeReadIOPSMaximum" || "UtilizationMetricsEBSVolumeWriteIOPSMaximum" || "UtilizationMetricsEBSVolumeReadThroughputMaximum" || "UtilizationMetricsEBSVolumeWriteThroughputMaximum" || "UtilizationMetricsDatabaseConnectionsMaximum" || "InstanceFinding" || "InstanceFindingReasonCodes" || "StorageFinding" || "StorageFindingReasonCodes" || "InstanceRecommendationOptionsDBInstanceClass" || "InstanceRecommendationOptionsRank" || "InstanceRecommendationOptionsPerformanceRisk" || "InstanceRecommendationOptionsProjectedUtilizationMetricsCpuMaximum" || "StorageRecommendationOptionsStorageType" || "StorageRecommendationOptionsAllocatedStorage" || "StorageRecommendationOptionsMaxAllocatedStorage" || "StorageRecommendationOptionsIOPS" || "StorageRecommendationOptionsStorageThroughput" || "StorageRecommendationOptionsRank" || "InstanceRecommendationOptionsInstanceOnDemandHourlyPrice" || "InstanceRecommendationOptionsSavingsOpportunityPercentage" || "InstanceRecommendationOptionsEstimatedMonthlySavingsCurrency" || "InstanceRecommendationOptionsEstimatedMonthlySavingsValue" || "InstanceRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage" || "InstanceRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts" || "InstanceRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" || "StorageRecommendationOptionsOnDemandMonthlyPrice" || "StorageRecommendationOptionsSavingsOpportunityPercentage" || "StorageRecommendationOptionsEstimatedMonthlySavingsCurrency" || "StorageRecommendationOptionsEstimatedMonthlySavingsValue" || "StorageRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage" || "StorageRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts" || "StorageRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" || "EffectiveRecommendationPreferencesCpuVendorArchitectures" || "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics" || "EffectiveRecommendationPreferencesLookBackPeriod" || "EffectiveRecommendationPreferencesSavingsEstimationMode" || "LastRefreshTimestamp" || "Tags", + * "ResourceArn" || "AccountId" || "Engine" || "EngineVersion" || "Idle" || "MultiAZDBInstance" || "CurrentDBInstanceClass" || "CurrentStorageConfigurationStorageType" || "CurrentStorageConfigurationAllocatedStorage" || "CurrentStorageConfigurationMaxAllocatedStorage" || "CurrentStorageConfigurationIOPS" || "CurrentStorageConfigurationStorageThroughput" || "CurrentInstanceOnDemandHourlyPrice" || "CurrentStorageOnDemandMonthlyPrice" || "LookbackPeriodInDays" || "CurrentInstancePerformanceRisk" || "UtilizationMetricsCpuMaximum" || "UtilizationMetricsMemoryMaximum" || "UtilizationMetricsEBSVolumeStorageSpaceUtilizationMaximum" || "UtilizationMetricsNetworkReceiveThroughputMaximum" || "UtilizationMetricsNetworkTransmitThroughputMaximum" || "UtilizationMetricsEBSVolumeReadIOPSMaximum" || "UtilizationMetricsEBSVolumeWriteIOPSMaximum" || "UtilizationMetricsEBSVolumeReadThroughputMaximum" || "UtilizationMetricsEBSVolumeWriteThroughputMaximum" || "UtilizationMetricsDatabaseConnectionsMaximum" || "UtilizationMetricsStorageNetworkReceiveThroughputMaximum" || "UtilizationMetricsStorageNetworkTransmitThroughputMaximum" || "UtilizationMetricsAuroraMemoryHealthStateMaximum" || "UtilizationMetricsAuroraMemoryNumDeclinedSqlTotalMaximum" || "UtilizationMetricsAuroraMemoryNumKillConnTotalMaximum" || "UtilizationMetricsAuroraMemoryNumKillQueryTotalMaximum" || "UtilizationMetricsReadIOPSEphemeralStorageMaximum" || "UtilizationMetricsWriteIOPSEphemeralStorageMaximum" || "InstanceFinding" || "InstanceFindingReasonCodes" || "StorageFinding" || "StorageFindingReasonCodes" || "InstanceRecommendationOptionsDBInstanceClass" || "InstanceRecommendationOptionsRank" || "InstanceRecommendationOptionsPerformanceRisk" || "InstanceRecommendationOptionsProjectedUtilizationMetricsCpuMaximum" || "StorageRecommendationOptionsStorageType" || "StorageRecommendationOptionsAllocatedStorage" || "StorageRecommendationOptionsMaxAllocatedStorage" || "StorageRecommendationOptionsIOPS" || "StorageRecommendationOptionsStorageThroughput" || "StorageRecommendationOptionsRank" || "InstanceRecommendationOptionsInstanceOnDemandHourlyPrice" || "InstanceRecommendationOptionsSavingsOpportunityPercentage" || "InstanceRecommendationOptionsEstimatedMonthlySavingsCurrency" || "InstanceRecommendationOptionsEstimatedMonthlySavingsValue" || "InstanceRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage" || "InstanceRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts" || "InstanceRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" || "StorageRecommendationOptionsOnDemandMonthlyPrice" || "StorageRecommendationOptionsSavingsOpportunityPercentage" || "StorageRecommendationOptionsEstimatedMonthlySavingsCurrency" || "StorageRecommendationOptionsEstimatedMonthlySavingsValue" || "StorageRecommendationOptionsSavingsOpportunityAfterDiscountsPercentage" || "StorageRecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts" || "StorageRecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts" || "EffectiveRecommendationPreferencesCpuVendorArchitectures" || "EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics" || "EffectiveRecommendationPreferencesLookBackPeriod" || "EffectiveRecommendationPreferencesSavingsEstimationMode" || "LastRefreshTimestamp" || "Tags" || "DBClusterIdentifier" || "PromotionTier", * ], * s3DestinationConfig: { // S3DestinationConfig * bucket: "STRING_VALUE", diff --git a/clients/client-compute-optimizer/src/commands/GetIdleRecommendationsCommand.ts b/clients/client-compute-optimizer/src/commands/GetIdleRecommendationsCommand.ts new file mode 100644 index 000000000000..634063f24587 --- /dev/null +++ b/clients/client-compute-optimizer/src/commands/GetIdleRecommendationsCommand.ts @@ -0,0 +1,187 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { ComputeOptimizerClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../ComputeOptimizerClient"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetIdleRecommendationsRequest, GetIdleRecommendationsResponse } from "../models/models_0"; +import { de_GetIdleRecommendationsCommand, se_GetIdleRecommendationsCommand } from "../protocols/Aws_json1_0"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetIdleRecommendationsCommand}. + */ +export interface GetIdleRecommendationsCommandInput extends GetIdleRecommendationsRequest {} +/** + * @public + * + * The output of {@link GetIdleRecommendationsCommand}. + */ +export interface GetIdleRecommendationsCommandOutput extends GetIdleRecommendationsResponse, __MetadataBearer {} + +/** + *

Returns idle resource recommendations. Compute Optimizer generates recommendations for + * idle resources that meet a specific set of requirements. For more information, see + * Resource requirements in the + * Compute Optimizer User Guide + *

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { ComputeOptimizerClient, GetIdleRecommendationsCommand } from "@aws-sdk/client-compute-optimizer"; // ES Modules import + * // const { ComputeOptimizerClient, GetIdleRecommendationsCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import + * const client = new ComputeOptimizerClient(config); + * const input = { // GetIdleRecommendationsRequest + * resourceArns: [ // ResourceArns + * "STRING_VALUE", + * ], + * nextToken: "STRING_VALUE", + * maxResults: Number("int"), + * filters: [ // IdleRecommendationFilters + * { // IdleRecommendationFilter + * name: "Finding" || "ResourceType", + * values: [ // FilterValues + * "STRING_VALUE", + * ], + * }, + * ], + * accountIds: [ // AccountIds + * "STRING_VALUE", + * ], + * orderBy: { // OrderBy + * dimension: "SavingsValue" || "SavingsValueAfterDiscount", + * order: "Asc" || "Desc", + * }, + * }; + * const command = new GetIdleRecommendationsCommand(input); + * const response = await client.send(command); + * // { // GetIdleRecommendationsResponse + * // nextToken: "STRING_VALUE", + * // idleRecommendations: [ // IdleRecommendations + * // { // IdleRecommendation + * // resourceArn: "STRING_VALUE", + * // resourceId: "STRING_VALUE", + * // resourceType: "EC2Instance" || "AutoScalingGroup" || "EBSVolume" || "ECSService" || "RDSDBInstance", + * // accountId: "STRING_VALUE", + * // finding: "Idle" || "Unattached", + * // findingDescription: "STRING_VALUE", + * // savingsOpportunity: { // IdleSavingsOpportunity + * // savingsOpportunityPercentage: Number("double"), + * // estimatedMonthlySavings: { // IdleEstimatedMonthlySavings + * // currency: "USD" || "CNY", + * // value: Number("double"), + * // }, + * // }, + * // savingsOpportunityAfterDiscounts: { // IdleSavingsOpportunityAfterDiscounts + * // savingsOpportunityPercentage: Number("double"), + * // estimatedMonthlySavings: { + * // currency: "USD" || "CNY", + * // value: Number("double"), + * // }, + * // }, + * // utilizationMetrics: [ // IdleUtilizationMetrics + * // { // IdleUtilizationMetric + * // name: "CPU" || "Memory" || "NetworkOutBytesPerSecond" || "NetworkInBytesPerSecond" || "DatabaseConnections" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "VolumeReadOpsPerSecond" || "VolumeWriteOpsPerSecond", + * // statistic: "Maximum" || "Average", + * // value: Number("double"), + * // }, + * // ], + * // lookBackPeriodInDays: Number("double"), + * // lastRefreshTimestamp: new Date("TIMESTAMP"), + * // tags: [ // Tags + * // { // Tag + * // key: "STRING_VALUE", + * // value: "STRING_VALUE", + * // }, + * // ], + * // }, + * // ], + * // errors: [ // IdleRecommendationErrors + * // { // IdleRecommendationError + * // identifier: "STRING_VALUE", + * // code: "STRING_VALUE", + * // message: "STRING_VALUE", + * // resourceType: "EC2Instance" || "AutoScalingGroup" || "EBSVolume" || "ECSService" || "RDSDBInstance", + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetIdleRecommendationsCommandInput - {@link GetIdleRecommendationsCommandInput} + * @returns {@link GetIdleRecommendationsCommandOutput} + * @see {@link GetIdleRecommendationsCommandInput} for command's `input` shape. + * @see {@link GetIdleRecommendationsCommandOutput} for command's `response` shape. + * @see {@link ComputeOptimizerClientResolvedConfig | config} for ComputeOptimizerClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You do not have sufficient access to perform this action.

+ * + * @throws {@link InternalServerException} (server fault) + *

An internal error has occurred. Try your call again.

+ * + * @throws {@link InvalidParameterValueException} (client fault) + *

The value supplied for the input parameter is out of range or not valid.

+ * + * @throws {@link MissingAuthenticationToken} (client fault) + *

The request must contain either a valid (registered) Amazon Web Services access key ID + * or X.509 certificate.

+ * + * @throws {@link OptInRequiredException} (client fault) + *

The account is not opted in to Compute Optimizer.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

A resource that is required for the action doesn't exist.

+ * + * @throws {@link ServiceUnavailableException} (server fault) + *

The request has failed due to a temporary failure of the server.

+ * + * @throws {@link ThrottlingException} (client fault) + *

The request was denied due to request throttling.

+ * + * @throws {@link ComputeOptimizerServiceException} + *

Base exception class for all service exceptions from ComputeOptimizer service.

+ * + * @public + */ +export class GetIdleRecommendationsCommand extends $Command + .classBuilder< + GetIdleRecommendationsCommandInput, + GetIdleRecommendationsCommandOutput, + ComputeOptimizerClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: ComputeOptimizerClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("ComputeOptimizerService", "GetIdleRecommendations", {}) + .n("ComputeOptimizerClient", "GetIdleRecommendationsCommand") + .f(void 0, void 0) + .ser(se_GetIdleRecommendationsCommand) + .de(de_GetIdleRecommendationsCommand) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: GetIdleRecommendationsRequest; + output: GetIdleRecommendationsResponse; + }; + sdk: { + input: GetIdleRecommendationsCommandInput; + output: GetIdleRecommendationsCommandOutput; + }; + }; +} diff --git a/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationProjectedMetricsCommand.ts b/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationProjectedMetricsCommand.ts index 1a8fceaa4108..0d1c65c1c11c 100644 --- a/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationProjectedMetricsCommand.ts +++ b/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationProjectedMetricsCommand.ts @@ -67,7 +67,7 @@ export interface GetRDSDatabaseRecommendationProjectedMetricsCommandOutput * // rank: Number("int"), * // projectedMetrics: [ // RDSDatabaseProjectedMetrics * // { // RDSDatabaseProjectedMetric - * // name: "CPU" || "Memory" || "EBSVolumeStorageSpaceUtilization" || "NetworkReceiveThroughput" || "NetworkTransmitThroughput" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "EBSVolumeReadThroughput" || "EBSVolumeWriteThroughput" || "DatabaseConnections", + * // name: "CPU" || "Memory" || "EBSVolumeStorageSpaceUtilization" || "NetworkReceiveThroughput" || "NetworkTransmitThroughput" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "EBSVolumeReadThroughput" || "EBSVolumeWriteThroughput" || "DatabaseConnections" || "StorageNetworkReceiveThroughput" || "StorageNetworkTransmitThroughput" || "AuroraMemoryHealthState" || "AuroraMemoryNumDeclinedSql" || "AuroraMemoryNumKillConnTotal" || "AuroraMemoryNumKillQueryTotal" || "ReadIOPSEphemeralStorage" || "WriteIOPSEphemeralStorage", * // timestamps: [ // Timestamps * // new Date("TIMESTAMP"), * // ], diff --git a/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationsCommand.ts b/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationsCommand.ts index 3b4cb2a33a87..176fe8043384 100644 --- a/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationsCommand.ts +++ b/clients/client-compute-optimizer/src/commands/GetRDSDatabaseRecommendationsCommand.ts @@ -80,6 +80,7 @@ export interface GetRDSDatabaseRecommendationsCommandOutput * // accountId: "STRING_VALUE", * // engine: "STRING_VALUE", * // engineVersion: "STRING_VALUE", + * // promotionTier: Number("int"), * // currentDBInstanceClass: "STRING_VALUE", * // currentStorageConfiguration: { // DBStorageConfiguration * // storageType: "STRING_VALUE", @@ -88,12 +89,14 @@ export interface GetRDSDatabaseRecommendationsCommandOutput * // maxAllocatedStorage: Number("int"), * // storageThroughput: Number("int"), * // }, + * // dbClusterIdentifier: "STRING_VALUE", * // idle: "True" || "False", * // instanceFinding: "Optimized" || "Underprovisioned" || "Overprovisioned", * // storageFinding: "Optimized" || "Underprovisioned" || "Overprovisioned", * // instanceFindingReasonCodes: [ // RDSInstanceFindingReasonCodes - * // "CPUOverprovisioned" || "NetworkBandwidthOverprovisioned" || "EBSIOPSOverprovisioned" || "EBSThroughputOverprovisioned" || "CPUUnderprovisioned" || "NetworkBandwidthUnderprovisioned" || "EBSThroughputUnderprovisioned" || "NewGenerationDBInstanceClassAvailable" || "NewEngineVersionAvailable", + * // "CPUOverprovisioned" || "NetworkBandwidthOverprovisioned" || "EBSIOPSOverprovisioned" || "EBSIOPSUnderprovisioned" || "EBSThroughputOverprovisioned" || "CPUUnderprovisioned" || "NetworkBandwidthUnderprovisioned" || "EBSThroughputUnderprovisioned" || "NewGenerationDBInstanceClassAvailable" || "NewEngineVersionAvailable" || "DBClusterWriterUnderprovisioned" || "MemoryUnderprovisioned" || "InstanceStorageReadIOPSUnderprovisioned" || "InstanceStorageWriteIOPSUnderprovisioned", * // ], + * // currentInstancePerformanceRisk: "VeryLow" || "Low" || "Medium" || "High", * // storageFindingReasonCodes: [ // RDSStorageFindingReasonCodes * // "EBSVolumeAllocatedStorageUnderprovisioned" || "EBSVolumeThroughputUnderprovisioned" || "EBSVolumeIOPSOverprovisioned" || "EBSVolumeThroughputOverprovisioned" || "NewGenerationStorageTypeAvailable", * // ], @@ -102,7 +105,7 @@ export interface GetRDSDatabaseRecommendationsCommandOutput * // dbInstanceClass: "STRING_VALUE", * // projectedUtilizationMetrics: [ // RDSDBProjectedUtilizationMetrics * // { // RDSDBUtilizationMetric - * // name: "CPU" || "Memory" || "EBSVolumeStorageSpaceUtilization" || "NetworkReceiveThroughput" || "NetworkTransmitThroughput" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "EBSVolumeReadThroughput" || "EBSVolumeWriteThroughput" || "DatabaseConnections", + * // name: "CPU" || "Memory" || "EBSVolumeStorageSpaceUtilization" || "NetworkReceiveThroughput" || "NetworkTransmitThroughput" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "EBSVolumeReadThroughput" || "EBSVolumeWriteThroughput" || "DatabaseConnections" || "StorageNetworkReceiveThroughput" || "StorageNetworkTransmitThroughput" || "AuroraMemoryHealthState" || "AuroraMemoryNumDeclinedSql" || "AuroraMemoryNumKillConnTotal" || "AuroraMemoryNumKillQueryTotal" || "ReadIOPSEphemeralStorage" || "WriteIOPSEphemeralStorage", * // statistic: "Maximum" || "Minimum" || "Average", * // value: Number("double"), * // }, @@ -153,7 +156,7 @@ export interface GetRDSDatabaseRecommendationsCommandOutput * // ], * // utilizationMetrics: [ // RDSDBUtilizationMetrics * // { - * // name: "CPU" || "Memory" || "EBSVolumeStorageSpaceUtilization" || "NetworkReceiveThroughput" || "NetworkTransmitThroughput" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "EBSVolumeReadThroughput" || "EBSVolumeWriteThroughput" || "DatabaseConnections", + * // name: "CPU" || "Memory" || "EBSVolumeStorageSpaceUtilization" || "NetworkReceiveThroughput" || "NetworkTransmitThroughput" || "EBSVolumeReadIOPS" || "EBSVolumeWriteIOPS" || "EBSVolumeReadThroughput" || "EBSVolumeWriteThroughput" || "DatabaseConnections" || "StorageNetworkReceiveThroughput" || "StorageNetworkTransmitThroughput" || "AuroraMemoryHealthState" || "AuroraMemoryNumDeclinedSql" || "AuroraMemoryNumKillConnTotal" || "AuroraMemoryNumKillQueryTotal" || "ReadIOPSEphemeralStorage" || "WriteIOPSEphemeralStorage", * // statistic: "Maximum" || "Minimum" || "Average", * // value: Number("double"), * // }, diff --git a/clients/client-compute-optimizer/src/commands/GetRecommendationPreferencesCommand.ts b/clients/client-compute-optimizer/src/commands/GetRecommendationPreferencesCommand.ts index 3c53683e7639..02e973aff30f 100644 --- a/clients/client-compute-optimizer/src/commands/GetRecommendationPreferencesCommand.ts +++ b/clients/client-compute-optimizer/src/commands/GetRecommendationPreferencesCommand.ts @@ -48,7 +48,7 @@ export interface GetRecommendationPreferencesCommandOutput * // const { ComputeOptimizerClient, GetRecommendationPreferencesCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import * const client = new ComputeOptimizerClient(config); * const input = { // GetRecommendationPreferencesRequest - * resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance", // required + * resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance" || "Idle", // required * scope: { // Scope * name: "Organization" || "AccountId" || "ResourceArn", * value: "STRING_VALUE", @@ -66,7 +66,7 @@ export interface GetRecommendationPreferencesCommandOutput * // name: "Organization" || "AccountId" || "ResourceArn", * // value: "STRING_VALUE", * // }, - * // resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance", + * // resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance" || "Idle", * // enhancedInfrastructureMetrics: "Active" || "Inactive", * // inferredWorkloadTypes: "Active" || "Inactive", * // externalMetricsPreference: { // ExternalMetricsPreference diff --git a/clients/client-compute-optimizer/src/commands/GetRecommendationSummariesCommand.ts b/clients/client-compute-optimizer/src/commands/GetRecommendationSummariesCommand.ts index 2a66eae2da40..0c0b6ff390da 100644 --- a/clients/client-compute-optimizer/src/commands/GetRecommendationSummariesCommand.ts +++ b/clients/client-compute-optimizer/src/commands/GetRecommendationSummariesCommand.ts @@ -84,6 +84,12 @@ export interface GetRecommendationSummariesCommandOutput extends GetRecommendati * // ], * // }, * // ], + * // idleSummaries: [ // IdleSummaries + * // { // IdleSummary + * // name: "Idle" || "Unattached", + * // value: Number("double"), + * // }, + * // ], * // recommendationResourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "EcsService" || "License" || "RdsDBInstance" || "RdsDBInstanceStorage", * // accountId: "STRING_VALUE", * // savingsOpportunity: { // SavingsOpportunity @@ -93,6 +99,20 @@ export interface GetRecommendationSummariesCommandOutput extends GetRecommendati * // value: Number("double"), * // }, * // }, + * // idleSavingsOpportunity: { + * // savingsOpportunityPercentage: Number("double"), + * // estimatedMonthlySavings: { + * // currency: "USD" || "CNY", + * // value: Number("double"), + * // }, + * // }, + * // aggregatedSavingsOpportunity: { + * // savingsOpportunityPercentage: Number("double"), + * // estimatedMonthlySavings: { + * // currency: "USD" || "CNY", + * // value: Number("double"), + * // }, + * // }, * // currentPerformanceRiskRatings: { // CurrentPerformanceRiskRatings * // high: Number("long"), * // medium: Number("long"), diff --git a/clients/client-compute-optimizer/src/commands/PutRecommendationPreferencesCommand.ts b/clients/client-compute-optimizer/src/commands/PutRecommendationPreferencesCommand.ts index 5948bbb07559..39538c7d768a 100644 --- a/clients/client-compute-optimizer/src/commands/PutRecommendationPreferencesCommand.ts +++ b/clients/client-compute-optimizer/src/commands/PutRecommendationPreferencesCommand.ts @@ -45,7 +45,7 @@ export interface PutRecommendationPreferencesCommandOutput * // const { ComputeOptimizerClient, PutRecommendationPreferencesCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import * const client = new ComputeOptimizerClient(config); * const input = { // PutRecommendationPreferencesRequest - * resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance", // required + * resourceType: "Ec2Instance" || "AutoScalingGroup" || "EbsVolume" || "LambdaFunction" || "NotApplicable" || "EcsService" || "License" || "RdsDBInstance" || "Idle", // required * scope: { // Scope * name: "Organization" || "AccountId" || "ResourceArn", * value: "STRING_VALUE", diff --git a/clients/client-compute-optimizer/src/commands/index.ts b/clients/client-compute-optimizer/src/commands/index.ts index 460a5f89865d..17a31b9cfbe7 100644 --- a/clients/client-compute-optimizer/src/commands/index.ts +++ b/clients/client-compute-optimizer/src/commands/index.ts @@ -5,6 +5,7 @@ export * from "./ExportAutoScalingGroupRecommendationsCommand"; export * from "./ExportEBSVolumeRecommendationsCommand"; export * from "./ExportEC2InstanceRecommendationsCommand"; export * from "./ExportECSServiceRecommendationsCommand"; +export * from "./ExportIdleRecommendationsCommand"; export * from "./ExportLambdaFunctionRecommendationsCommand"; export * from "./ExportLicenseRecommendationsCommand"; export * from "./ExportRDSDatabaseRecommendationsCommand"; @@ -17,6 +18,7 @@ export * from "./GetECSServiceRecommendationsCommand"; export * from "./GetEffectiveRecommendationPreferencesCommand"; export * from "./GetEnrollmentStatusCommand"; export * from "./GetEnrollmentStatusesForOrganizationCommand"; +export * from "./GetIdleRecommendationsCommand"; export * from "./GetLambdaFunctionRecommendationsCommand"; export * from "./GetLicenseRecommendationsCommand"; export * from "./GetRDSDatabaseRecommendationProjectedMetricsCommand"; diff --git a/clients/client-compute-optimizer/src/models/models_0.ts b/clients/client-compute-optimizer/src/models/models_0.ts index c921c8c52024..dc0425d4457b 100644 --- a/clients/client-compute-optimizer/src/models/models_0.ts +++ b/clients/client-compute-optimizer/src/models/models_0.ts @@ -1217,6 +1217,7 @@ export const ResourceType = { EBS_VOLUME: "EbsVolume", EC2_INSTANCE: "Ec2Instance", ECS_SERVICE: "EcsService", + IDLE: "Idle", LAMBDA_FUNCTION: "LambdaFunction", LICENSE: "License", NOT_APPLICABLE: "NotApplicable", @@ -2815,6 +2816,182 @@ export interface ExportECSServiceRecommendationsResponse { s3Destination?: S3Destination | undefined; } +/** + * @public + * @enum + */ +export const ExportableIdleField = { + ACCOUNT_ID: "AccountId", + FINDING: "Finding", + FINDING_DESCRIPTION: "FindingDescription", + LAST_REFRESH_TIMESTAMP: "LastRefreshTimestamp", + LOOKBACK_PERIOD_IN_DAYS: "LookbackPeriodInDays", + RESOURCE_ARN: "ResourceArn", + RESOURCE_ID: "ResourceId", + RESOURCE_TYPE: "ResourceType", + SAVINGS_OPPORTUNITY: "SavingsOpportunity", + SAVINGS_OPPORTUNITY_AFTER_DISCOUNT: "SavingsOpportunityAfterDiscount", + TAGS: "Tags", + UTILIZATION_METRICS_CPU_MAXIMUM: "UtilizationMetricsCpuMaximum", + UTILIZATION_METRICS_DATABASE_CONNECTIONS_MAXIMUM: "UtilizationMetricsDatabaseConnectionsMaximum", + UTILIZATION_METRICS_EBS_VOLUME_READ_IOPS_MAXIMUM: "UtilizationMetricsEBSVolumeReadIOPSMaximum", + UTILIZATION_METRICS_EBS_VOLUME_WRITE_IOPS_MAXIMUM: "UtilizationMetricsEBSVolumeWriteIOPSMaximum", + UTILIZATION_METRICS_MEMORY_MAXIMUM: "UtilizationMetricsMemoryMaximum", + UTILIZATION_METRICS_NETWORK_IN_BYTES_PER_SECOND_MAXIMUM: "UtilizationMetricsNetworkInBytesPerSecondMaximum", + UTILIZATION_METRICS_NETWORK_OUT_BYTES_PER_SECOND_MAXIMUM: "UtilizationMetricsNetworkOutBytesPerSecondMaximum", + UTILIZATION_METRICS_VOLUME_READ_OPS_PER_SECOND_MAXIMUM: "UtilizationMetricsVolumeReadOpsPerSecondMaximum", + UTILIZATION_METRICS_VOLUME_WRITE_OPS_PER_SECOND_MAXIMUM: "UtilizationMetricsVolumeWriteOpsPerSecondMaximum", +} as const; + +/** + * @public + */ +export type ExportableIdleField = (typeof ExportableIdleField)[keyof typeof ExportableIdleField]; + +/** + * @public + * @enum + */ +export const IdleRecommendationFilterName = { + FINDING: "Finding", + RESOURCE_TYPE: "ResourceType", +} as const; + +/** + * @public + */ +export type IdleRecommendationFilterName = + (typeof IdleRecommendationFilterName)[keyof typeof IdleRecommendationFilterName]; + +/** + *

Describes a filter that returns a more specific list of idle resource recommendations.

+ * @public + */ +export interface IdleRecommendationFilter { + /** + *

+ * The name of the filter. + *

+ *

+ * Specify Finding to return recommendations with a specific finding classification. + *

+ *

You can filter your idle resource recommendations by tag:key + * and tag-key tags.

+ *

A tag:key is a key and value combination of a tag assigned to your + * idle resource recommendations. Use the tag key in the filter name and the tag value + * as the filter value. For example, to find all idle resource service recommendations that have + * a tag with the key of Owner and the value of TeamA, + * specify tag:Owner for the filter name and TeamA for the filter value.

+ *

A tag-key is the key of a tag assigned to your idle resource recommendations. Use + * this filter to find all of your idle resource recommendations that have a tag with a + * specific key. This doesn’t consider the tag value. For example, you can find + * your idle resource service recommendations with a tag key value of Owner or without any tag + * keys assigned.

+ * @public + */ + name?: IdleRecommendationFilterName | undefined; + + /** + *

The value of the filter.

+ * @public + */ + values?: string[] | undefined; +} + +/** + * @public + */ +export interface ExportIdleRecommendationsRequest { + /** + *

+ * The Amazon Web Services account IDs for the export idle resource recommendations. + *

+ *

If your account is the management account or the delegated administrator + * of an organization, use this parameter to specify the member account you want to + * export recommendations to.

+ *

This parameter can't be specified together with the include member accounts + * parameter. The parameters are mutually exclusive.

+ *

If this parameter or the include member accounts parameter is omitted, + * the recommendations for member accounts aren't included in the export.

+ *

You can specify multiple account IDs per request.

+ * @public + */ + accountIds?: string[] | undefined; + + /** + *

An array of objects to specify a filter that exports a more specific set of idle resource recommendations.

+ * @public + */ + filters?: IdleRecommendationFilter[] | undefined; + + /** + *

The recommendations data to include in the export file. For more information about the + * fields that can be exported, see Exported files in the Compute Optimizer User + * Guide.

+ * @public + */ + fieldsToExport?: ExportableIdleField[] | undefined; + + /** + *

Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and + * key prefix for a recommendations export job.

+ *

You must create the destination Amazon S3 bucket for your recommendations + * export before you create the export job. Compute Optimizer does not create the S3 bucket + * for you. After you create the S3 bucket, ensure that it has the required permission + * policy to allow Compute Optimizer to write the export file to it. If you plan to specify + * an object prefix when you create the export job, you must include the object prefix in + * the policy that you add to the S3 bucket. For more information, see Amazon S3 Bucket Policy for Compute Optimizer in the + * Compute Optimizer User Guide.

+ * @public + */ + s3DestinationConfig: S3DestinationConfig | undefined; + + /** + *

The format of the export file. The CSV file is the only export file format currently supported.

+ * @public + */ + fileFormat?: FileFormat | undefined; + + /** + *

If your account is the management account or the delegated administrator of an organization, + * this parameter indicates whether to include recommendations for resources in all member accounts of + * the organization.

+ *

The member accounts must also be opted in to Compute Optimizer, and trusted access for + * Compute Optimizer must be enabled in the organization account. For more information, + * see Compute Optimizer and Amazon Web Services Organizations trusted access in the + * Compute Optimizer User Guide.

+ *

If this parameter is omitted, recommendations for member accounts of the + * organization aren't included in the export file.

+ *

If this parameter or the account ID parameter is omitted, recommendations for + * member accounts aren't included in the export.

+ * @public + */ + includeMemberAccounts?: boolean | undefined; +} + +/** + * @public + */ +export interface ExportIdleRecommendationsResponse { + /** + *

+ * The identification number of the export job. + *

+ *

To view the status of an export job, use the + * DescribeRecommendationExportJobs action and specify the job ID. + *

+ * @public + */ + jobId?: string | undefined; + + /** + *

Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and + * object keys of a recommendations export file, and its associated metadata file.

+ * @public + */ + s3Destination?: S3Destination | undefined; +} + /** * @public * @enum @@ -3227,12 +3404,14 @@ export const ExportableRDSDBField = { ACCOUNT_ID: "AccountId", CURRENT_DB_INSTANCE_CLASS: "CurrentDBInstanceClass", CURRENT_INSTANCE_ON_DEMAND_HOURLY_PRICE: "CurrentInstanceOnDemandHourlyPrice", + CURRENT_INSTANCE_PERFORMANCE_RISK: "CurrentInstancePerformanceRisk", CURRENT_STORAGE_CONFIGURATION_ALLOCATED_STORAGE: "CurrentStorageConfigurationAllocatedStorage", CURRENT_STORAGE_CONFIGURATION_IOPS: "CurrentStorageConfigurationIOPS", CURRENT_STORAGE_CONFIGURATION_MAX_ALLOCATED_STORAGE: "CurrentStorageConfigurationMaxAllocatedStorage", CURRENT_STORAGE_CONFIGURATION_STORAGE_THROUGHPUT: "CurrentStorageConfigurationStorageThroughput", CURRENT_STORAGE_CONFIGURATION_STORAGE_TYPE: "CurrentStorageConfigurationStorageType", CURRENT_STORAGE_ON_DEMAND_MONTHLY_PRICE: "CurrentStorageOnDemandMonthlyPrice", + DB_CLUSTER_IDENTIFIER: "DBClusterIdentifier", EFFECTIVE_RECOMMENDATION_PREFERENCES_CPU_VENDOR_ARCHITECTURES: "EffectiveRecommendationPreferencesCpuVendorArchitectures", EFFECTIVE_RECOMMENDATION_PREFERENCES_ENHANCED_INFRASTRUCTURE_METRICS: @@ -3267,6 +3446,7 @@ export const ExportableRDSDBField = { LAST_REFRESH_TIMESTAMP: "LastRefreshTimestamp", LOOKBACK_PERIOD_IN_DAYS: "LookbackPeriodInDays", MULTI_AZ_DB_INSTANCE: "MultiAZDBInstance", + PROMOTION_TIER: "PromotionTier", RESOURCE_ARN: "ResourceArn", STORAGE_FINDING: "StorageFinding", STORAGE_FINDING_REASON_CODES: "StorageFindingReasonCodes", @@ -3290,6 +3470,13 @@ export const ExportableRDSDBField = { STORAGE_RECOMMENDATION_OPTIONS_STORAGE_THROUGHPUT: "StorageRecommendationOptionsStorageThroughput", STORAGE_RECOMMENDATION_OPTIONS_STORAGE_TYPE: "StorageRecommendationOptionsStorageType", TAGS: "Tags", + UTILIZATION_METRICS_AURORA_MEMORY_HEALTH_STATE_MAXIMUM: "UtilizationMetricsAuroraMemoryHealthStateMaximum", + UTILIZATION_METRICS_AURORA_MEMORY_NUM_DECLINED_SQL_TOTAL_MAXIMUM: + "UtilizationMetricsAuroraMemoryNumDeclinedSqlTotalMaximum", + UTILIZATION_METRICS_AURORA_MEMORY_NUM_KILL_CONN_TOTAL_MAXIMUM: + "UtilizationMetricsAuroraMemoryNumKillConnTotalMaximum", + UTILIZATION_METRICS_AURORA_MEMORY_NUM_KILL_QUERY_TOTAL_MAXIMUM: + "UtilizationMetricsAuroraMemoryNumKillQueryTotalMaximum", UTILIZATION_METRICS_CPU_MAXIMUM: "UtilizationMetricsCpuMaximum", UTILIZATION_METRICS_DATABASE_CONNECTIONS_MAXIMUM: "UtilizationMetricsDatabaseConnectionsMaximum", UTILIZATION_METRICS_EBS_VOLUME_READ_IOPS_MAXIMUM: "UtilizationMetricsEBSVolumeReadIOPSMaximum", @@ -3301,6 +3488,12 @@ export const ExportableRDSDBField = { UTILIZATION_METRICS_MEMORY_MAXIMUM: "UtilizationMetricsMemoryMaximum", UTILIZATION_METRICS_NETWORK_RECEIVE_THROUGHPUT_MAXIMUM: "UtilizationMetricsNetworkReceiveThroughputMaximum", UTILIZATION_METRICS_NETWORK_TRANSMIT_THROUGHPUT_MAXIMUM: "UtilizationMetricsNetworkTransmitThroughputMaximum", + UTILIZATION_METRICS_READ_IOPS_EPHEMERAL_STORAGE_MAXIMUM: "UtilizationMetricsReadIOPSEphemeralStorageMaximum", + UTILIZATION_METRICS_STORAGE_NETWORK_RECEIVE_THROUGHPUT_MAXIMUM: + "UtilizationMetricsStorageNetworkReceiveThroughputMaximum", + UTILIZATION_METRICS_STORAGE_NETWORK_TRANSMIT_THROUGHPUT_MAXIMUM: + "UtilizationMetricsStorageNetworkTransmitThroughputMaximum", + UTILIZATION_METRICS_WRITE_IOPS_EPHEMERAL_STORAGE_MAXIMUM: "UtilizationMetricsWriteIOPSEphemeralStorageMaximum", } as const; /** @@ -3630,10 +3823,29 @@ export interface GetEBSVolumeRecommendationsRequest { export interface VolumeConfiguration { /** *

The volume type.

- *

This can be gp2 for General Purpose SSD, io1 or - * io2 for Provisioned IOPS SSD, st1 for Throughput Optimized - * HDD, sc1 for Cold HDD, or standard for Magnetic - * volumes.

+ *

The volume types can be the following:

+ *
    + *
  • + *

    General Purpose SSD gp2 and gp3 + *

    + *
  • + *
  • + *

    Provisioned IOPS SSD io1, io2, and io2 Block Express + *

    + *
  • + *
  • + *

    Throughput Optimized HDD st1 + *

    + *
  • + *
  • + *

    Cold HDD sc1 + *

    + *
  • + *
  • + *

    Magnetic volumes standard + *

    + *
  • + *
* @public */ volumeType?: string | undefined; @@ -6318,92 +6530,461 @@ export interface GetEnrollmentStatusesForOrganizationResponse { /** * @public + * @enum */ -export interface GetLambdaFunctionRecommendationsRequest { +export const Dimension = { + SAVINGS_VALUE: "SavingsValue", + SAVINGS_VALUE_AFTER_DISCOUNT: "SavingsValueAfterDiscount", +} as const; + +/** + * @public + */ +export type Dimension = (typeof Dimension)[keyof typeof Dimension]; + +/** + * @public + * @enum + */ +export const Order = { + ASC: "Asc", + DESC: "Desc", +} as const; + +/** + * @public + */ +export type Order = (typeof Order)[keyof typeof Order]; + +/** + *

Describes how the recommendations are ordered.

+ * @public + */ +export interface OrderBy { /** - *

The Amazon Resource Name (ARN) of the functions for which to return - * recommendations.

- *

You can specify a qualified or unqualified ARN. If you specify an unqualified ARN - * without a function version suffix, Compute Optimizer will return recommendations for the - * latest ($LATEST) version of the function. If you specify a qualified ARN - * with a version suffix, Compute Optimizer will return recommendations for the specified - * function version. For more information about using function versions, see Using - * versions in the Lambda Developer - * Guide.

+ *

The dimension values to sort the recommendations.

* @public */ - functionArns?: string[] | undefined; + dimension?: Dimension | undefined; /** - *

The ID of the Amazon Web Services account for which to return function - * recommendations.

- *

If your account is the management account of an organization, use this parameter to - * specify the member account for which you want to return function recommendations.

- *

Only one account ID can be specified per request.

+ *

The order to sort the recommendations.

* @public */ - accountIds?: string[] | undefined; + order?: Order | undefined; +} +/** + * @public + */ +export interface GetIdleRecommendationsRequest { /** - *

An array of objects to specify a filter that returns a more specific list of function - * recommendations.

+ *

The ARN that identifies the idle resource.

* @public */ - filters?: LambdaFunctionRecommendationFilter[] | undefined; + resourceArns?: string[] | undefined; /** - *

The token to advance to the next page of function recommendations.

+ *

The token to advance to the next page of idle resource recommendations.

* @public */ nextToken?: string | undefined; /** - *

The maximum number of function recommendations to return with a single request.

- *

To retrieve the remaining results, make another request with the returned - * nextToken value.

+ *

The maximum number of idle resource recommendations to return with a single request.

+ *

To retrieve the remaining results, + * make another request with the returned nextToken value.

* @public */ maxResults?: number | undefined; + + /** + *

An array of objects to specify a filter that returns a more specific list of idle resource recommendations.

+ * @public + */ + filters?: IdleRecommendationFilter[] | undefined; + + /** + *

Return the idle resource recommendations to the specified Amazon Web Services account IDs.

+ *

If your account is the management account + * or the delegated administrator of an organization, use this parameter to return the idle resource recommendations to + * specific member accounts.

+ *

You can only specify one account ID per request.

+ * @public + */ + accountIds?: string[] | undefined; + + /** + *

The order to sort the idle resource recommendations.

+ * @public + */ + orderBy?: OrderBy | undefined; } /** * @public * @enum */ -export const LambdaSavingsEstimationModeSource = { - COST_EXPLORER_RIGHTSIZING: "CostExplorerRightsizing", - COST_OPTIMIZATION_HUB: "CostOptimizationHub", - PUBLIC_PRICING: "PublicPricing", +export const IdleRecommendationResourceType = { + AUTO_SCALING_GROUP: "AutoScalingGroup", + EBS_VOLUME: "EBSVolume", + EC2_INSTANCE: "EC2Instance", + ECS_SERVICE: "ECSService", + RDS_DB_INSTANCE: "RDSDBInstance", } as const; /** * @public */ -export type LambdaSavingsEstimationModeSource = - (typeof LambdaSavingsEstimationModeSource)[keyof typeof LambdaSavingsEstimationModeSource]; +export type IdleRecommendationResourceType = + (typeof IdleRecommendationResourceType)[keyof typeof IdleRecommendationResourceType]; /** - *

- * Describes the savings estimation used for calculating savings opportunity for Lambda functions. - *

+ *

Returns of list of resources that doesn't have idle recommendations.

* @public */ -export interface LambdaSavingsEstimationMode { +export interface IdleRecommendationError { /** - *

- * Describes the source for calculation of savings opportunity for Lambda functions. - *

+ *

The ID of the error.

* @public */ - source?: LambdaSavingsEstimationModeSource | undefined; -} + identifier?: string | undefined; -/** - *

- * Describes the effective recommendation preferences for Lambda functions. - *

- * @public - */ + /** + *

The error code.

+ * @public + */ + code?: string | undefined; + + /** + *

The error message.

+ * @public + */ + message?: string | undefined; + + /** + *

The type of resource associated with the error.

+ * @public + */ + resourceType?: IdleRecommendationResourceType | undefined; +} + +/** + * @public + * @enum + */ +export const IdleFinding = { + IDLE: "Idle", + UNATTACHED: "Unattached", +} as const; + +/** + * @public + */ +export type IdleFinding = (typeof IdleFinding)[keyof typeof IdleFinding]; + +/** + *

Describes the estimated monthly savings possible for idle resources by adopting Compute Optimizer recommendations.

+ * @public + */ +export interface IdleEstimatedMonthlySavings { + /** + *

The currency of the estimated monthly savings.

+ * @public + */ + currency?: Currency | undefined; + + /** + *

The value of the estimated monthly savings for Idle resources.

+ * @public + */ + value?: number | undefined; +} + +/** + *

Describes the savings opportunity for idle resource recommendations.

+ * @public + */ +export interface IdleSavingsOpportunity { + /** + *

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer's idle resource recommendations.

+ * @public + */ + savingsOpportunityPercentage?: number | undefined; + + /** + *

The estimated monthly savings possible by adopting Compute Optimizer's idle resource recommendations.

+ * @public + */ + estimatedMonthlySavings?: IdleEstimatedMonthlySavings | undefined; +} + +/** + *

Describes the savings opportunity for idle resource recommendations after applying discounts.

+ *

Savings opportunity represents the estimated monthly savings after applying discounts. You can achieve this by implementing a given Compute Optimizer recommendation.

+ * @public + */ +export interface IdleSavingsOpportunityAfterDiscounts { + /** + *

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer's idle resource recommendations. This includes any applicable discounts.

+ * @public + */ + savingsOpportunityPercentage?: number | undefined; + + /** + *

The estimated monthly savings possible by adopting Compute Optimizer's idle resource recommendations. This includes any applicable discounts.

+ * @public + */ + estimatedMonthlySavings?: IdleEstimatedMonthlySavings | undefined; +} + +/** + * @public + * @enum + */ +export const IdleMetricName = { + CPU: "CPU", + DATABASE_CONNECTIONS: "DatabaseConnections", + EBS_VOLUME_READ_IOPS: "EBSVolumeReadIOPS", + EBS_VOLUME_WRITE_IOPS: "EBSVolumeWriteIOPS", + MEMORY: "Memory", + NETWORK_IN_BYTES_PER_SECOND: "NetworkInBytesPerSecond", + NETWORK_OUT_BYTES_PER_SECOND: "NetworkOutBytesPerSecond", + VOLUME_READ_OPS_PER_SECOND: "VolumeReadOpsPerSecond", + VOLUME_WRITE_OPS_PER_SECOND: "VolumeWriteOpsPerSecond", +} as const; + +/** + * @public + */ +export type IdleMetricName = (typeof IdleMetricName)[keyof typeof IdleMetricName]; + +/** + *

Describes the utilization metric of an idle resource.

+ * @public + */ +export interface IdleUtilizationMetric { + /** + *

The name of the utilization metric.

+ * @public + */ + name?: IdleMetricName | undefined; + + /** + *

+ * The statistic of the utilization metric. + *

+ *

The Compute Optimizer API, Command Line Interface (CLI), and SDKs + * return utilization metrics using only the Maximum statistic, which is the + * highest value observed during the specified period.

+ *

The Compute Optimizer console displays graphs for some utilization metrics using the + * Average statistic, which is the value of Sum / + * SampleCount during the specified period. For more information, see + * Viewing resource + * recommendations in the Compute Optimizer User + * Guide. You can also get averaged utilization metric data for your resources + * using Amazon CloudWatch. For more information, see the Amazon CloudWatch + * User Guide.

+ * @public + */ + statistic?: MetricStatistic | undefined; + + /** + *

The value of the utilization metric.

+ * @public + */ + value?: number | undefined; +} + +/** + *

Describes an Idle resource recommendation.

+ * @public + */ +export interface IdleRecommendation { + /** + *

The ARN of the current idle resource.

+ * @public + */ + resourceArn?: string | undefined; + + /** + *

The unique identifier for the resource.

+ * @public + */ + resourceId?: string | undefined; + + /** + *

The type of resource that is idle.

+ * @public + */ + resourceType?: IdleRecommendationResourceType | undefined; + + /** + *

The Amazon Web Services account ID of the idle resource.

+ * @public + */ + accountId?: string | undefined; + + /** + *

The finding classification of an idle resource.

+ * @public + */ + finding?: IdleFinding | undefined; + + /** + *

A summary of the findings for the resource.

+ * @public + */ + findingDescription?: string | undefined; + + /** + *

The savings opportunity for the idle resource.

+ * @public + */ + savingsOpportunity?: IdleSavingsOpportunity | undefined; + + /** + *

The savings opportunity for the idle resource after any applying discounts.

+ * @public + */ + savingsOpportunityAfterDiscounts?: IdleSavingsOpportunityAfterDiscounts | undefined; + + /** + *

An array of objects that describe the utilization metrics of the idle resource.

+ * @public + */ + utilizationMetrics?: IdleUtilizationMetric[] | undefined; + + /** + *

The number of days the idle resource utilization metrics were analyzed.

+ * @public + */ + lookBackPeriodInDays?: number | undefined; + + /** + *

The timestamp of when the idle resource recommendation was last generated.

+ * @public + */ + lastRefreshTimestamp?: Date | undefined; + + /** + *

A list of tags assigned to your idle resource recommendations.

+ * @public + */ + tags?: Tag[] | undefined; +} + +/** + * @public + */ +export interface GetIdleRecommendationsResponse { + /** + *

The token to advance to the next page of idle resource recommendations.

+ * @public + */ + nextToken?: string | undefined; + + /** + *

An array of objects that describe the idle resource recommendations.

+ * @public + */ + idleRecommendations?: IdleRecommendation[] | undefined; + + /** + *

An array of objects that describe errors of the request.

+ * @public + */ + errors?: IdleRecommendationError[] | undefined; +} + +/** + * @public + */ +export interface GetLambdaFunctionRecommendationsRequest { + /** + *

The Amazon Resource Name (ARN) of the functions for which to return + * recommendations.

+ *

You can specify a qualified or unqualified ARN. If you specify an unqualified ARN + * without a function version suffix, Compute Optimizer will return recommendations for the + * latest ($LATEST) version of the function. If you specify a qualified ARN + * with a version suffix, Compute Optimizer will return recommendations for the specified + * function version. For more information about using function versions, see Using + * versions in the Lambda Developer + * Guide.

+ * @public + */ + functionArns?: string[] | undefined; + + /** + *

The ID of the Amazon Web Services account for which to return function + * recommendations.

+ *

If your account is the management account of an organization, use this parameter to + * specify the member account for which you want to return function recommendations.

+ *

Only one account ID can be specified per request.

+ * @public + */ + accountIds?: string[] | undefined; + + /** + *

An array of objects to specify a filter that returns a more specific list of function + * recommendations.

+ * @public + */ + filters?: LambdaFunctionRecommendationFilter[] | undefined; + + /** + *

The token to advance to the next page of function recommendations.

+ * @public + */ + nextToken?: string | undefined; + + /** + *

The maximum number of function recommendations to return with a single request.

+ *

To retrieve the remaining results, make another request with the returned + * nextToken value.

+ * @public + */ + maxResults?: number | undefined; +} + +/** + * @public + * @enum + */ +export const LambdaSavingsEstimationModeSource = { + COST_EXPLORER_RIGHTSIZING: "CostExplorerRightsizing", + COST_OPTIMIZATION_HUB: "CostOptimizationHub", + PUBLIC_PRICING: "PublicPricing", +} as const; + +/** + * @public + */ +export type LambdaSavingsEstimationModeSource = + (typeof LambdaSavingsEstimationModeSource)[keyof typeof LambdaSavingsEstimationModeSource]; + +/** + *

+ * Describes the savings estimation used for calculating savings opportunity for Lambda functions. + *

+ * @public + */ +export interface LambdaSavingsEstimationMode { + /** + *

+ * Describes the source for calculation of savings opportunity for Lambda functions. + *

+ * @public + */ + source?: LambdaSavingsEstimationModeSource | undefined; +} + +/** + *

+ * Describes the effective recommendation preferences for Lambda functions. + *

+ * @public + */ export interface LambdaEffectiveRecommendationPreferences { /** *

@@ -7397,6 +7978,10 @@ export interface GetRDSDatabaseRecommendationProjectedMetricsRequest { * @enum */ export const RDSDBMetricName = { + AURORA_MEMORY_HEALTH_STATE: "AuroraMemoryHealthState", + AURORA_MEMORY_NUM_DECLINED_SQL: "AuroraMemoryNumDeclinedSql", + AURORA_MEMORY_NUM_KILL_CONN_TOTAL: "AuroraMemoryNumKillConnTotal", + AURORA_MEMORY_NUM_KILL_QUERY_TOTAL: "AuroraMemoryNumKillQueryTotal", CPU: "CPU", DATABASE_CONNECTIONS: "DatabaseConnections", EBS_VOLUME_READ_IOPS: "EBSVolumeReadIOPS", @@ -7407,6 +7992,10 @@ export const RDSDBMetricName = { MEMORY: "Memory", NETWORK_RECEIVE_THROUGHPUT: "NetworkReceiveThroughput", NETWORK_TRANSMIT_THROUGHPUT: "NetworkTransmitThroughput", + READ_IOPS_EPHEMERAL_STORAGE: "ReadIOPSEphemeralStorage", + STORAGE_NETWORK_RECEIVE_THROUGHPUT: "StorageNetworkReceiveThroughput", + STORAGE_NETWORK_TRANSMIT_THROUGHPUT: "StorageNetworkTransmitThroughput", + WRITE_IOPS_EPHEMERAL_STORAGE: "WriteIOPSEphemeralStorage", } as const; /** @@ -7566,6 +8155,23 @@ export interface GetRDSDatabaseRecommendationsRequest { recommendationPreferences?: RecommendationPreferences | undefined; } +/** + * @public + * @enum + */ +export const RDSCurrentInstancePerformanceRisk = { + HIGH: "High", + LOW: "Low", + MEDIUM: "Medium", + VERY_LOW: "VeryLow", +} as const; + +/** + * @public + */ +export type RDSCurrentInstancePerformanceRisk = + (typeof RDSCurrentInstancePerformanceRisk)[keyof typeof RDSCurrentInstancePerformanceRisk]; + /** *

* The configuration of the recommended RDS storage. @@ -7730,9 +8336,14 @@ export type RDSInstanceFinding = (typeof RDSInstanceFinding)[keyof typeof RDSIns export const RDSInstanceFindingReasonCode = { CPU_OVER_PROVISIONED: "CPUOverprovisioned", CPU_UNDER_PROVISIONED: "CPUUnderprovisioned", + DB_CLUSTER_WRITER_UNDER_PROVISIONED: "DBClusterWriterUnderprovisioned", EBS_IOPS_OVER_PROVISIONED: "EBSIOPSOverprovisioned", + EBS_IOPS_UNDER_PROVISIONED: "EBSIOPSUnderprovisioned", EBS_THROUGHPUT_OVER_PROVISIONED: "EBSThroughputOverprovisioned", EBS_THROUGHPUT_UNDER_PROVISIONED: "EBSThroughputUnderprovisioned", + INSTANCE_STORAGE_READ_IOPS_UNDER_PROVISIONED: "InstanceStorageReadIOPSUnderprovisioned", + INSTANCE_STORAGE_WRITE_IOPS_UNDER_PROVISIONED: "InstanceStorageWriteIOPSUnderprovisioned", + MEMORY_UNDER_PROVISIONED: "MemoryUnderprovisioned", NETWORK_BANDWIDTH_OVER_PROVISIONED: "NetworkBandwidthOverprovisioned", NETWORK_BANDWIDTH_UNDER_PROVISIONED: "NetworkBandwidthUnderprovisioned", NEW_ENGINE_VERSION_AVAILABLE: "NewEngineVersionAvailable", @@ -8123,6 +8734,12 @@ export interface RDSDBRecommendation { */ engineVersion?: string | undefined; + /** + *

The promotion tier for the Aurora instance.

+ * @public + */ + promotionTier?: number | undefined; + /** *

* The DB instance class of the current RDS instance. @@ -8139,6 +8756,12 @@ export interface RDSDBRecommendation { */ currentStorageConfiguration?: DBStorageConfiguration | undefined; + /** + *

The identifier for DB cluster.

+ * @public + */ + dbClusterIdentifier?: string | undefined; + /** *

* This indicates if the RDS instance is idle or not. @@ -8225,6 +8848,12 @@ export interface RDSDBRecommendation { */ instanceFindingReasonCodes?: RDSInstanceFindingReasonCode[] | undefined; + /** + *

The performance risk for the current DB instance.

+ * @public + */ + currentInstancePerformanceRisk?: RDSCurrentInstancePerformanceRisk | undefined; + /** *

* The reason for the finding classification of Amazon RDS storage. @@ -8554,6 +9183,24 @@ export interface CurrentPerformanceRiskRatings { veryLow?: number | undefined; } +/** + *

Describes the findings summary of the idle resources.

+ * @public + */ +export interface IdleSummary { + /** + *

The name of the finding group for the idle resources.

+ * @public + */ + name?: IdleFinding | undefined; + + /** + *

The count of idle resources in the finding group.

+ * @public + */ + value?: number | undefined; +} + /** *

* The estimated monthly savings after you adjust the configurations of your instances running on the @@ -8694,6 +9341,14 @@ export interface RecommendationSummary { */ summaries?: Summary[] | undefined; + /** + *

+ * Describes the findings summary of the idle resources. + *

+ * @public + */ + idleSummaries?: IdleSummary[] | undefined; + /** *

The resource type that the recommendation summary applies to.

* @public @@ -8713,6 +9368,48 @@ export interface RecommendationSummary { */ savingsOpportunity?: SavingsOpportunity | undefined; + /** + *

Describes the savings opportunity for recommendations of a given resource type or for + * the recommendation option of an individual resource.

+ *

Savings opportunity represents the estimated monthly savings you can achieve by + * implementing a given Compute Optimizer recommendation.

+ * + *

Savings opportunity data requires that you opt in to Cost Explorer, as well as + * activate Receive Amazon EC2 resource + * recommendations in the Cost Explorer preferences page. That + * creates a connection between Cost Explorer and Compute Optimizer. With this + * connection, Cost Explorer generates savings estimates considering the price of + * existing resources, the price of recommended resources, and historical usage data. + * Estimated monthly savings reflects the projected dollar savings associated with each + * of the recommendations generated. For more information, see Enabling Cost Explorer and Optimizing your cost + * with Rightsizing Recommendations in the Cost Management User + * Guide.

+ *
+ * @public + */ + idleSavingsOpportunity?: SavingsOpportunity | undefined; + + /** + *

Describes the savings opportunity for recommendations of a given resource type or for + * the recommendation option of an individual resource.

+ *

Savings opportunity represents the estimated monthly savings you can achieve by + * implementing a given Compute Optimizer recommendation.

+ * + *

Savings opportunity data requires that you opt in to Cost Explorer, as well as + * activate Receive Amazon EC2 resource + * recommendations in the Cost Explorer preferences page. That + * creates a connection between Cost Explorer and Compute Optimizer. With this + * connection, Cost Explorer generates savings estimates considering the price of + * existing resources, the price of recommended resources, and historical usage data. + * Estimated monthly savings reflects the projected dollar savings associated with each + * of the recommendations generated. For more information, see Enabling Cost Explorer and Optimizing your cost + * with Rightsizing Recommendations in the Cost Management User + * Guide.

+ *
+ * @public + */ + aggregatedSavingsOpportunity?: SavingsOpportunity | undefined; + /** *

An object that describes the performance risk ratings for a given resource * type.

diff --git a/clients/client-compute-optimizer/src/protocols/Aws_json1_0.ts b/clients/client-compute-optimizer/src/protocols/Aws_json1_0.ts index f5b5ff69269a..55ae2a1570e4 100644 --- a/clients/client-compute-optimizer/src/protocols/Aws_json1_0.ts +++ b/clients/client-compute-optimizer/src/protocols/Aws_json1_0.ts @@ -47,6 +47,10 @@ import { ExportECSServiceRecommendationsCommandInput, ExportECSServiceRecommendationsCommandOutput, } from "../commands/ExportECSServiceRecommendationsCommand"; +import { + ExportIdleRecommendationsCommandInput, + ExportIdleRecommendationsCommandOutput, +} from "../commands/ExportIdleRecommendationsCommand"; import { ExportLambdaFunctionRecommendationsCommandInput, ExportLambdaFunctionRecommendationsCommandOutput, @@ -95,6 +99,10 @@ import { GetEnrollmentStatusesForOrganizationCommandInput, GetEnrollmentStatusesForOrganizationCommandOutput, } from "../commands/GetEnrollmentStatusesForOrganizationCommand"; +import { + GetIdleRecommendationsCommandInput, + GetIdleRecommendationsCommandOutput, +} from "../commands/GetIdleRecommendationsCommand"; import { GetLambdaFunctionRecommendationsCommandInput, GetLambdaFunctionRecommendationsCommandOutput, @@ -157,6 +165,7 @@ import { EstimatedMonthlySavings, ExportableAutoScalingGroupField, ExportableECSServiceField, + ExportableIdleField, ExportableInstanceField, ExportableLambdaFunctionField, ExportableLicenseField, @@ -166,6 +175,7 @@ import { ExportEBSVolumeRecommendationsRequest, ExportEC2InstanceRecommendationsRequest, ExportECSServiceRecommendationsRequest, + ExportIdleRecommendationsRequest, ExportLambdaFunctionRecommendationsRequest, ExportLicenseRecommendationsRequest, ExportRDSDatabaseRecommendationsRequest, @@ -188,6 +198,8 @@ import { GetEnrollmentStatusesForOrganizationResponse, GetEnrollmentStatusRequest, GetEnrollmentStatusResponse, + GetIdleRecommendationsRequest, + GetIdleRecommendationsResponse, GetLambdaFunctionRecommendationsRequest, GetLambdaFunctionRecommendationsResponse, GetLicenseRecommendationsRequest, @@ -199,6 +211,13 @@ import { GetRecommendationPreferencesRequest, GetRecommendationSummariesRequest, GetRecommendationSummariesResponse, + IdleEstimatedMonthlySavings, + IdleRecommendation, + IdleRecommendationFilter, + IdleSavingsOpportunity, + IdleSavingsOpportunityAfterDiscounts, + IdleSummary, + IdleUtilizationMetric, InferredWorkloadSaving, InstanceEstimatedMonthlySavings, InstanceRecommendation, @@ -220,6 +239,7 @@ import { LimitExceededException, MissingAuthenticationToken, OptInRequiredException, + OrderBy, PreferredResource, ProjectedMetric, PutRecommendationPreferencesRequest, @@ -332,6 +352,19 @@ export const se_ExportECSServiceRecommendationsCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +/** + * serializeAws_json1_0ExportIdleRecommendationsCommand + */ +export const se_ExportIdleRecommendationsCommand = async ( + input: ExportIdleRecommendationsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("ExportIdleRecommendations"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + /** * serializeAws_json1_0ExportLambdaFunctionRecommendationsCommand */ @@ -488,6 +521,19 @@ export const se_GetEnrollmentStatusesForOrganizationCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +/** + * serializeAws_json1_0GetIdleRecommendationsCommand + */ +export const se_GetIdleRecommendationsCommand = async ( + input: GetIdleRecommendationsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("GetIdleRecommendations"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + /** * serializeAws_json1_0GetLambdaFunctionRecommendationsCommand */ @@ -712,6 +758,26 @@ export const de_ExportECSServiceRecommendationsCommand = async ( return response; }; +/** + * deserializeAws_json1_0ExportIdleRecommendationsCommand + */ +export const de_ExportIdleRecommendationsCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return de_CommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = _json(data); + const response: ExportIdleRecommendationsCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return response; +}; + /** * deserializeAws_json1_0ExportLambdaFunctionRecommendationsCommand */ @@ -952,6 +1018,26 @@ export const de_GetEnrollmentStatusesForOrganizationCommand = async ( return response; }; +/** + * deserializeAws_json1_0GetIdleRecommendationsCommand + */ +export const de_GetIdleRecommendationsCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return de_CommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = de_GetIdleRecommendationsResponse(data, context); + const response: GetIdleRecommendationsCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return response; +}; + /** * deserializeAws_json1_0GetLambdaFunctionRecommendationsCommand */ @@ -1328,6 +1414,8 @@ const de_ThrottlingExceptionRes = async (parsedOutput: any, context: __SerdeCont // se_ExportableECSServiceFields omitted. +// se_ExportableIdleFields omitted. + // se_ExportableInstanceFields omitted. // se_ExportableLambdaFunctionFields omitted. @@ -1346,6 +1434,8 @@ const de_ThrottlingExceptionRes = async (parsedOutput: any, context: __SerdeCont // se_ExportECSServiceRecommendationsRequest omitted. +// se_ExportIdleRecommendationsRequest omitted. + // se_ExportLambdaFunctionRecommendationsRequest omitted. // se_ExportLicenseRecommendationsRequest omitted. @@ -1409,6 +1499,8 @@ const se_GetECSServiceRecommendationProjectedMetricsRequest = ( // se_GetEnrollmentStatusRequest omitted. +// se_GetIdleRecommendationsRequest omitted. + // se_GetLambdaFunctionRecommendationsRequest omitted. // se_GetLicenseRecommendationsRequest omitted. @@ -1436,6 +1528,10 @@ const se_GetRDSDatabaseRecommendationProjectedMetricsRequest = ( // se_GetRecommendationSummariesRequest omitted. +// se_IdleRecommendationFilter omitted. + +// se_IdleRecommendationFilters omitted. + // se_InstanceArns omitted. // se_JobFilter omitted. @@ -1452,6 +1548,8 @@ const se_GetRDSDatabaseRecommendationProjectedMetricsRequest = ( // se_LicenseRecommendationFilters omitted. +// se_OrderBy omitted. + // se_PreferredResource omitted. // se_PreferredResources omitted. @@ -1906,6 +2004,8 @@ const de_EstimatedMonthlySavings = (output: any, context: __SerdeContext): Estim // de_ExportECSServiceRecommendationsResponse omitted. +// de_ExportIdleRecommendationsResponse omitted. + // de_ExportLambdaFunctionRecommendationsResponse omitted. // de_ExportLicenseRecommendationsResponse omitted. @@ -2024,6 +2124,17 @@ const de_GetEnrollmentStatusResponse = (output: any, context: __SerdeContext): G }) as any; }; +/** + * deserializeAws_json1_0GetIdleRecommendationsResponse + */ +const de_GetIdleRecommendationsResponse = (output: any, context: __SerdeContext): GetIdleRecommendationsResponse => { + return take(output, { + errors: _json, + idleRecommendations: (_: any) => de_IdleRecommendations(_, context), + nextToken: __expectString, + }) as any; +}; + /** * deserializeAws_json1_0GetLambdaFunctionRecommendationsResponse */ @@ -2102,6 +2213,120 @@ const de_GetRecommendationSummariesResponse = ( // de_Gpus omitted. +/** + * deserializeAws_json1_0IdleEstimatedMonthlySavings + */ +const de_IdleEstimatedMonthlySavings = (output: any, context: __SerdeContext): IdleEstimatedMonthlySavings => { + return take(output, { + currency: __expectString, + value: __limitedParseDouble, + }) as any; +}; + +/** + * deserializeAws_json1_0IdleRecommendation + */ +const de_IdleRecommendation = (output: any, context: __SerdeContext): IdleRecommendation => { + return take(output, { + accountId: __expectString, + finding: __expectString, + findingDescription: __expectString, + lastRefreshTimestamp: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + lookBackPeriodInDays: __limitedParseDouble, + resourceArn: __expectString, + resourceId: __expectString, + resourceType: __expectString, + savingsOpportunity: (_: any) => de_IdleSavingsOpportunity(_, context), + savingsOpportunityAfterDiscounts: (_: any) => de_IdleSavingsOpportunityAfterDiscounts(_, context), + tags: _json, + utilizationMetrics: (_: any) => de_IdleUtilizationMetrics(_, context), + }) as any; +}; + +// de_IdleRecommendationError omitted. + +// de_IdleRecommendationErrors omitted. + +/** + * deserializeAws_json1_0IdleRecommendations + */ +const de_IdleRecommendations = (output: any, context: __SerdeContext): IdleRecommendation[] => { + const retVal = (output || []) + .filter((e: any) => e != null) + .map((entry: any) => { + return de_IdleRecommendation(entry, context); + }); + return retVal; +}; + +/** + * deserializeAws_json1_0IdleSavingsOpportunity + */ +const de_IdleSavingsOpportunity = (output: any, context: __SerdeContext): IdleSavingsOpportunity => { + return take(output, { + estimatedMonthlySavings: (_: any) => de_IdleEstimatedMonthlySavings(_, context), + savingsOpportunityPercentage: __limitedParseDouble, + }) as any; +}; + +/** + * deserializeAws_json1_0IdleSavingsOpportunityAfterDiscounts + */ +const de_IdleSavingsOpportunityAfterDiscounts = ( + output: any, + context: __SerdeContext +): IdleSavingsOpportunityAfterDiscounts => { + return take(output, { + estimatedMonthlySavings: (_: any) => de_IdleEstimatedMonthlySavings(_, context), + savingsOpportunityPercentage: __limitedParseDouble, + }) as any; +}; + +/** + * deserializeAws_json1_0IdleSummaries + */ +const de_IdleSummaries = (output: any, context: __SerdeContext): IdleSummary[] => { + const retVal = (output || []) + .filter((e: any) => e != null) + .map((entry: any) => { + return de_IdleSummary(entry, context); + }); + return retVal; +}; + +/** + * deserializeAws_json1_0IdleSummary + */ +const de_IdleSummary = (output: any, context: __SerdeContext): IdleSummary => { + return take(output, { + name: __expectString, + value: __limitedParseDouble, + }) as any; +}; + +/** + * deserializeAws_json1_0IdleUtilizationMetric + */ +const de_IdleUtilizationMetric = (output: any, context: __SerdeContext): IdleUtilizationMetric => { + return take(output, { + name: __expectString, + statistic: __expectString, + value: __limitedParseDouble, + }) as any; +}; + +/** + * deserializeAws_json1_0IdleUtilizationMetrics + */ +const de_IdleUtilizationMetrics = (output: any, context: __SerdeContext): IdleUtilizationMetric[] => { + const retVal = (output || []) + .filter((e: any) => e != null) + .map((entry: any) => { + return de_IdleUtilizationMetric(entry, context); + }); + return retVal; +}; + /** * deserializeAws_json1_0InferredWorkloadSaving */ @@ -2588,7 +2813,9 @@ const de_RDSDBRecommendation = (output: any, context: __SerdeContext): RDSDBReco return take(output, { accountId: __expectString, currentDBInstanceClass: __expectString, + currentInstancePerformanceRisk: __expectString, currentStorageConfiguration: _json, + dbClusterIdentifier: __expectString, effectiveRecommendationPreferences: _json, engine: __expectString, engineVersion: __expectString, @@ -2598,6 +2825,7 @@ const de_RDSDBRecommendation = (output: any, context: __SerdeContext): RDSDBReco instanceRecommendationOptions: (_: any) => de_RDSDBInstanceRecommendationOptions(_, context), lastRefreshTimestamp: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), lookbackPeriodInDays: __limitedParseDouble, + promotionTier: __expectInt32, resourceArn: __expectString, storageFinding: __expectString, storageFindingReasonCodes: _json, @@ -2819,7 +3047,10 @@ const de_RecommendationSummaries = (output: any, context: __SerdeContext): Recom const de_RecommendationSummary = (output: any, context: __SerdeContext): RecommendationSummary => { return take(output, { accountId: __expectString, + aggregatedSavingsOpportunity: (_: any) => de_SavingsOpportunity(_, context), currentPerformanceRiskRatings: _json, + idleSavingsOpportunity: (_: any) => de_SavingsOpportunity(_, context), + idleSummaries: (_: any) => de_IdleSummaries(_, context), inferredWorkloadSavings: (_: any) => de_InferredWorkloadSavings(_, context), recommendationResourceType: __expectString, savingsOpportunity: (_: any) => de_SavingsOpportunity(_, context), diff --git a/codegen/sdk-codegen/aws-models/compute-optimizer.json b/codegen/sdk-codegen/aws-models/compute-optimizer.json index 3e06190d1284..c9403cec9092 100644 --- a/codegen/sdk-codegen/aws-models/compute-optimizer.json +++ b/codegen/sdk-codegen/aws-models/compute-optimizer.json @@ -383,6 +383,9 @@ { "target": "com.amazonaws.computeoptimizer#ExportECSServiceRecommendations" }, + { + "target": "com.amazonaws.computeoptimizer#ExportIdleRecommendations" + }, { "target": "com.amazonaws.computeoptimizer#ExportLambdaFunctionRecommendations" }, @@ -419,6 +422,9 @@ { "target": "com.amazonaws.computeoptimizer#GetEnrollmentStatusesForOrganization" }, + { + "target": "com.amazonaws.computeoptimizer#GetIdleRecommendations" + }, { "target": "com.amazonaws.computeoptimizer#GetLambdaFunctionRecommendations" }, @@ -1572,6 +1578,9 @@ } } }, + "com.amazonaws.computeoptimizer#DBClusterIdentifier": { + "type": "string" + }, "com.amazonaws.computeoptimizer#DBInstanceClass": { "type": "string" }, @@ -1798,6 +1807,23 @@ "com.amazonaws.computeoptimizer#DestinationKeyPrefix": { "type": "string" }, + "com.amazonaws.computeoptimizer#Dimension": { + "type": "enum", + "members": { + "SAVINGS_VALUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SavingsValue" + } + }, + "SAVINGS_VALUE_AFTER_DISCOUNT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SavingsValueAfterDiscount" + } + } + } + }, "com.amazonaws.computeoptimizer#EBSEffectiveRecommendationPreferences": { "type": "structure", "members": { @@ -3149,6 +3175,106 @@ "smithy.api#output": {} } }, + "com.amazonaws.computeoptimizer#ExportIdleRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.computeoptimizer#ExportIdleRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.computeoptimizer#ExportIdleRecommendationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.computeoptimizer#AccessDeniedException" + }, + { + "target": "com.amazonaws.computeoptimizer#InternalServerException" + }, + { + "target": "com.amazonaws.computeoptimizer#InvalidParameterValueException" + }, + { + "target": "com.amazonaws.computeoptimizer#LimitExceededException" + }, + { + "target": "com.amazonaws.computeoptimizer#MissingAuthenticationToken" + }, + { + "target": "com.amazonaws.computeoptimizer#OptInRequiredException" + }, + { + "target": "com.amazonaws.computeoptimizer#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.computeoptimizer#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

\n Export optimization recommendations for your idle resources.\n

\n

Recommendations are exported in a comma-separated values (CSV) file, and its metadata\n in a JavaScript Object Notation (JSON) file, to an existing Amazon Simple Storage Service (Amazon S3) bucket that you specify. For more information, see Exporting\n Recommendations in the Compute Optimizer User\n Guide.

\n

You can have only one idle resource export job in progress per Amazon Web Services Region.

" + } + }, + "com.amazonaws.computeoptimizer#ExportIdleRecommendationsRequest": { + "type": "structure", + "members": { + "accountIds": { + "target": "com.amazonaws.computeoptimizer#AccountIds", + "traits": { + "smithy.api#documentation": "

\n The Amazon Web Services account IDs for the export idle resource recommendations.\n

\n

If your account is the management account or the delegated administrator \n of an organization, use this parameter to specify the member account you want to \n export recommendations to.

\n

This parameter can't be specified together with the include member accounts \n parameter. The parameters are mutually exclusive.

\n

If this parameter or the include member accounts parameter is omitted,\n the recommendations for member accounts aren't included in the export.

\n

You can specify multiple account IDs per request.

" + } + }, + "filters": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationFilters", + "traits": { + "smithy.api#documentation": "

An array of objects to specify a filter that exports a more specific set of idle resource recommendations.

" + } + }, + "fieldsToExport": { + "target": "com.amazonaws.computeoptimizer#ExportableIdleFields", + "traits": { + "smithy.api#documentation": "

The recommendations data to include in the export file. For more information about the\n fields that can be exported, see Exported files in the Compute Optimizer User\n Guide.

" + } + }, + "s3DestinationConfig": { + "target": "com.amazonaws.computeoptimizer#S3DestinationConfig", + "traits": { + "smithy.api#required": {} + } + }, + "fileFormat": { + "target": "com.amazonaws.computeoptimizer#FileFormat", + "traits": { + "smithy.api#documentation": "

The format of the export file. The CSV file is the only export file format currently supported.

" + } + }, + "includeMemberAccounts": { + "target": "com.amazonaws.computeoptimizer#IncludeMemberAccounts", + "traits": { + "smithy.api#default": false, + "smithy.api#documentation": "

If your account is the management account or the delegated administrator of an organization,\n this parameter indicates whether to include recommendations for resources in all member accounts of\n the organization.

\n

The member accounts must also be opted in to Compute Optimizer, and trusted access for\n Compute Optimizer must be enabled in the organization account. For more information,\n see Compute Optimizer and Amazon Web Services Organizations trusted access in the\n Compute Optimizer User Guide.

\n

If this parameter is omitted, recommendations for member accounts of the \n organization aren't included in the export file.

\n

If this parameter or the account ID parameter is omitted, recommendations for \n member accounts aren't included in the export.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.computeoptimizer#ExportIdleRecommendationsResponse": { + "type": "structure", + "members": { + "jobId": { + "target": "com.amazonaws.computeoptimizer#JobId", + "traits": { + "smithy.api#documentation": "

\n The identification number of the export job.\n

\n

To view the status of an export job, use the \n DescribeRecommendationExportJobs action and specify the job ID.\n

" + } + }, + "s3Destination": { + "target": "com.amazonaws.computeoptimizer#S3Destination" + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.computeoptimizer#ExportLambdaFunctionRecommendations": { "type": "operation", "input": { @@ -4038,6 +4164,137 @@ "target": "com.amazonaws.computeoptimizer#ExportableECSServiceField" } }, + "com.amazonaws.computeoptimizer#ExportableIdleField": { + "type": "enum", + "members": { + "ACCOUNT_ID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AccountId" + } + }, + "RESOURCE_ARN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ResourceArn" + } + }, + "RESOURCE_ID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ResourceId" + } + }, + "RESOURCE_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ResourceType" + } + }, + "LAST_REFRESH_TIMESTAMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LastRefreshTimestamp" + } + }, + "LOOKBACK_PERIOD_IN_DAYS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LookbackPeriodInDays" + } + }, + "SAVINGS_OPPORTUNITY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SavingsOpportunity" + } + }, + "SAVINGS_OPPORTUNITY_AFTER_DISCOUNT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SavingsOpportunityAfterDiscount" + } + }, + "UTILIZATION_METRICS_CPU_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsCpuMaximum" + } + }, + "UTILIZATION_METRICS_MEMORY_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsMemoryMaximum" + } + }, + "UTILIZATION_METRICS_NETWORK_OUT_BYTES_PER_SECOND_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsNetworkOutBytesPerSecondMaximum" + } + }, + "UTILIZATION_METRICS_NETWORK_IN_BYTES_PER_SECOND_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsNetworkInBytesPerSecondMaximum" + } + }, + "UTILIZATION_METRICS_DATABASE_CONNECTIONS_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsDatabaseConnectionsMaximum" + } + }, + "UTILIZATION_METRICS_EBS_VOLUME_READ_IOPS_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsEBSVolumeReadIOPSMaximum" + } + }, + "UTILIZATION_METRICS_EBS_VOLUME_WRITE_IOPS_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsEBSVolumeWriteIOPSMaximum" + } + }, + "UTILIZATION_METRICS_VOLUME_READ_OPS_PER_SECOND_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsVolumeReadOpsPerSecondMaximum" + } + }, + "UTILIZATION_METRICS_VOLUME_WRITE_OPS_PER_SECOND_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "UtilizationMetricsVolumeWriteOpsPerSecondMaximum" + } + }, + "FINDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Finding" + } + }, + "FINDING_DESCRIPTION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FindingDescription" + } + }, + "TAGS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Tags" + } + } + } + }, + "com.amazonaws.computeoptimizer#ExportableIdleFields": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#ExportableIdleField" + } + }, "com.amazonaws.computeoptimizer#ExportableInstanceField": { "type": "enum", "members": { @@ -4902,6 +5159,12 @@ "smithy.api#enumValue": "LookbackPeriodInDays" } }, + "CURRENT_INSTANCE_PERFORMANCE_RISK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentInstancePerformanceRisk" + } + }, "UTILIZATION_METRICS_CPU_MAXIMUM": { "target": "smithy.api#Unit", "traits": { @@ -4962,67 +5225,115 @@ "smithy.api#enumValue": "UtilizationMetricsDatabaseConnectionsMaximum" } }, - "INSTANCE_FINDING": { + "UTILIZATION_METRICS_STORAGE_NETWORK_RECEIVE_THROUGHPUT_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "InstanceFinding" + "smithy.api#enumValue": "UtilizationMetricsStorageNetworkReceiveThroughputMaximum" } }, - "INSTANCE_FINDING_REASON_CODES": { + "UTILIZATION_METRICS_STORAGE_NETWORK_TRANSMIT_THROUGHPUT_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "InstanceFindingReasonCodes" + "smithy.api#enumValue": "UtilizationMetricsStorageNetworkTransmitThroughputMaximum" } }, - "STORAGE_FINDING": { + "UTILIZATION_METRICS_AURORA_MEMORY_HEALTH_STATE_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "StorageFinding" + "smithy.api#enumValue": "UtilizationMetricsAuroraMemoryHealthStateMaximum" } }, - "STORAGE_FINDING_REASON_CODES": { + "UTILIZATION_METRICS_AURORA_MEMORY_NUM_DECLINED_SQL_TOTAL_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "StorageFindingReasonCodes" + "smithy.api#enumValue": "UtilizationMetricsAuroraMemoryNumDeclinedSqlTotalMaximum" } }, - "INSTANCE_RECOMMENDATION_OPTIONS_DB_INSTANCE_CLASS": { + "UTILIZATION_METRICS_AURORA_MEMORY_NUM_KILL_CONN_TOTAL_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "InstanceRecommendationOptionsDBInstanceClass" + "smithy.api#enumValue": "UtilizationMetricsAuroraMemoryNumKillConnTotalMaximum" } }, - "INSTANCE_RECOMMENDATION_OPTIONS_RANK": { + "UTILIZATION_METRICS_AURORA_MEMORY_NUM_KILL_QUERY_TOTAL_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "InstanceRecommendationOptionsRank" + "smithy.api#enumValue": "UtilizationMetricsAuroraMemoryNumKillQueryTotalMaximum" } }, - "INSTANCE_RECOMMENDATION_OPTIONS_PERFORMANCE_RISK": { + "UTILIZATION_METRICS_READ_IOPS_EPHEMERAL_STORAGE_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "InstanceRecommendationOptionsPerformanceRisk" + "smithy.api#enumValue": "UtilizationMetricsReadIOPSEphemeralStorageMaximum" } }, - "INSTANCE_RECOMMENDATION_OPTIONS_PROJECTED_UTILIZATION_METRICS_CPU_MAXIMUM": { + "UTILIZATION_METRICS_WRITE_IOPS_EPHEMERAL_STORAGE_MAXIMUM": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "InstanceRecommendationOptionsProjectedUtilizationMetricsCpuMaximum" + "smithy.api#enumValue": "UtilizationMetricsWriteIOPSEphemeralStorageMaximum" } }, - "STORAGE_RECOMMENDATION_OPTIONS_STORAGE_TYPE": { + "INSTANCE_FINDING": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "StorageRecommendationOptionsStorageType" + "smithy.api#enumValue": "InstanceFinding" } }, - "STORAGE_RECOMMENDATION_OPTIONS_ALLOCATED_STORAGE": { + "INSTANCE_FINDING_REASON_CODES": { "target": "smithy.api#Unit", "traits": { - "smithy.api#enumValue": "StorageRecommendationOptionsAllocatedStorage" + "smithy.api#enumValue": "InstanceFindingReasonCodes" } }, - "STORAGE_RECOMMENDATION_OPTIONS_MAX_ALLOCATED_STORAGE": { + "STORAGE_FINDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageFinding" + } + }, + "STORAGE_FINDING_REASON_CODES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageFindingReasonCodes" + } + }, + "INSTANCE_RECOMMENDATION_OPTIONS_DB_INSTANCE_CLASS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InstanceRecommendationOptionsDBInstanceClass" + } + }, + "INSTANCE_RECOMMENDATION_OPTIONS_RANK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InstanceRecommendationOptionsRank" + } + }, + "INSTANCE_RECOMMENDATION_OPTIONS_PERFORMANCE_RISK": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InstanceRecommendationOptionsPerformanceRisk" + } + }, + "INSTANCE_RECOMMENDATION_OPTIONS_PROJECTED_UTILIZATION_METRICS_CPU_MAXIMUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InstanceRecommendationOptionsProjectedUtilizationMetricsCpuMaximum" + } + }, + "STORAGE_RECOMMENDATION_OPTIONS_STORAGE_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageRecommendationOptionsStorageType" + } + }, + "STORAGE_RECOMMENDATION_OPTIONS_ALLOCATED_STORAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageRecommendationOptionsAllocatedStorage" + } + }, + "STORAGE_RECOMMENDATION_OPTIONS_MAX_ALLOCATED_STORAGE": { "target": "smithy.api#Unit", "traits": { "smithy.api#enumValue": "StorageRecommendationOptionsMaxAllocatedStorage" @@ -5165,6 +5476,18 @@ "traits": { "smithy.api#enumValue": "Tags" } + }, + "DB_CLUSTER_IDENTIFIER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DBClusterIdentifier" + } + }, + "PROMOTION_TIER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "PromotionTier" + } } } }, @@ -6533,6 +6856,114 @@ "smithy.api#output": {} } }, + "com.amazonaws.computeoptimizer#GetIdleRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.computeoptimizer#GetIdleRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.computeoptimizer#GetIdleRecommendationsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.computeoptimizer#AccessDeniedException" + }, + { + "target": "com.amazonaws.computeoptimizer#InternalServerException" + }, + { + "target": "com.amazonaws.computeoptimizer#InvalidParameterValueException" + }, + { + "target": "com.amazonaws.computeoptimizer#MissingAuthenticationToken" + }, + { + "target": "com.amazonaws.computeoptimizer#OptInRequiredException" + }, + { + "target": "com.amazonaws.computeoptimizer#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.computeoptimizer#ServiceUnavailableException" + }, + { + "target": "com.amazonaws.computeoptimizer#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

Returns idle resource recommendations. Compute Optimizer generates recommendations for \n idle resources that meet a specific set of requirements. For more information, see\n Resource requirements in the\n Compute Optimizer User Guide\n

" + } + }, + "com.amazonaws.computeoptimizer#GetIdleRecommendationsRequest": { + "type": "structure", + "members": { + "resourceArns": { + "target": "com.amazonaws.computeoptimizer#ResourceArns", + "traits": { + "smithy.api#documentation": "

The ARN that identifies the idle resource.

" + } + }, + "nextToken": { + "target": "com.amazonaws.computeoptimizer#NextToken", + "traits": { + "smithy.api#documentation": "

The token to advance to the next page of idle resource recommendations.

" + } + }, + "maxResults": { + "target": "com.amazonaws.computeoptimizer#IdleMaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of idle resource recommendations to return with a single request.

\n

To retrieve the remaining results, \n make another request with the returned nextToken value.

" + } + }, + "filters": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationFilters", + "traits": { + "smithy.api#documentation": "

An array of objects to specify a filter that returns a more specific list of idle resource recommendations.

" + } + }, + "accountIds": { + "target": "com.amazonaws.computeoptimizer#AccountIds", + "traits": { + "smithy.api#documentation": "

Return the idle resource recommendations to the specified Amazon Web Services account IDs.

\n

If your account is the management account \n or the delegated administrator of an organization, use this parameter to return the idle resource recommendations to \n specific member accounts.

\n

You can only specify one account ID per request.

" + } + }, + "orderBy": { + "target": "com.amazonaws.computeoptimizer#OrderBy", + "traits": { + "smithy.api#documentation": "

The order to sort the idle resource recommendations.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.computeoptimizer#GetIdleRecommendationsResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.computeoptimizer#NextToken", + "traits": { + "smithy.api#documentation": "

The token to advance to the next page of idle resource recommendations.

" + } + }, + "idleRecommendations": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendations", + "traits": { + "smithy.api#documentation": "

An array of objects that describe the idle resource recommendations.

" + } + }, + "errors": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationErrors", + "traits": { + "smithy.api#documentation": "

An array of objects that describe errors of the request.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.computeoptimizer#GetLambdaFunctionRecommendations": { "type": "operation", "input": { @@ -7114,127 +7545,541 @@ "com.amazonaws.computeoptimizer#GetRecommendationSummariesRequest": { "type": "structure", "members": { - "accountIds": { - "target": "com.amazonaws.computeoptimizer#AccountIds", + "accountIds": { + "target": "com.amazonaws.computeoptimizer#AccountIds", + "traits": { + "smithy.api#documentation": "

The ID of the Amazon Web Services account for which to return recommendation\n summaries.

\n

If your account is the management account of an organization, use this parameter to\n specify the member account for which you want to return recommendation summaries.

\n

Only one account ID can be specified per request.

" + } + }, + "nextToken": { + "target": "com.amazonaws.computeoptimizer#NextToken", + "traits": { + "smithy.api#documentation": "

The token to advance to the next page of recommendation summaries.

" + } + }, + "maxResults": { + "target": "com.amazonaws.computeoptimizer#MaxResults", + "traits": { + "smithy.api#documentation": "

The maximum number of recommendation summaries to return with a single request.

\n

To retrieve the remaining results, make another request with the returned\n nextToken value.

" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.computeoptimizer#GetRecommendationSummariesResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.computeoptimizer#NextToken", + "traits": { + "smithy.api#documentation": "

The token to use to advance to the next page of recommendation summaries.

\n

This value is null when there are no more pages of recommendation summaries to\n return.

" + } + }, + "recommendationSummaries": { + "target": "com.amazonaws.computeoptimizer#RecommendationSummaries", + "traits": { + "smithy.api#documentation": "

An array of objects that summarize a recommendation.

" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.computeoptimizer#Gpu": { + "type": "structure", + "members": { + "gpuCount": { + "target": "com.amazonaws.computeoptimizer#GpuCount", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "

\n The number of GPUs for the instance type.\n

" + } + }, + "gpuMemorySizeInMiB": { + "target": "com.amazonaws.computeoptimizer#GpuMemorySizeInMiB", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "

\n The total size of the memory for the GPU accelerators for the instance type, in MiB.\n

" + } + } + }, + "traits": { + "smithy.api#documentation": "

\n Describes the GPU accelerators for the instance type.\n

" + } + }, + "com.amazonaws.computeoptimizer#GpuCount": { + "type": "integer", + "traits": { + "smithy.api#default": 0 + } + }, + "com.amazonaws.computeoptimizer#GpuInfo": { + "type": "structure", + "members": { + "gpus": { + "target": "com.amazonaws.computeoptimizer#Gpus", + "traits": { + "smithy.api#documentation": "

\n Describes the GPU accelerators for the instance type.\n

" + } + } + }, + "traits": { + "smithy.api#documentation": "

\n Describes the GPU accelerator settings for the instance type.\n

" + } + }, + "com.amazonaws.computeoptimizer#GpuMemorySizeInMiB": { + "type": "integer", + "traits": { + "smithy.api#default": 0 + } + }, + "com.amazonaws.computeoptimizer#Gpus": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#Gpu" + } + }, + "com.amazonaws.computeoptimizer#High": { + "type": "long", + "traits": { + "smithy.api#default": 0 + } + }, + "com.amazonaws.computeoptimizer#Identifier": { + "type": "string" + }, + "com.amazonaws.computeoptimizer#Idle": { + "type": "enum", + "members": { + "TRUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "True" + } + }, + "FALSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "False" + } + } + } + }, + "com.amazonaws.computeoptimizer#IdleEstimatedMonthlySavings": { + "type": "structure", + "members": { + "currency": { + "target": "com.amazonaws.computeoptimizer#Currency", + "traits": { + "smithy.api#documentation": "

The currency of the estimated monthly savings.

" + } + }, + "value": { + "target": "com.amazonaws.computeoptimizer#Value", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "

The value of the estimated monthly savings for Idle resources.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes the estimated monthly savings possible for idle resources by adopting Compute Optimizer recommendations.

" + } + }, + "com.amazonaws.computeoptimizer#IdleFinding": { + "type": "enum", + "members": { + "IDLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Idle" + } + }, + "UNATTACHED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Unattached" + } + } + } + }, + "com.amazonaws.computeoptimizer#IdleFindingDescription": { + "type": "string" + }, + "com.amazonaws.computeoptimizer#IdleMaxResults": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 0, + "max": 100 + } + } + }, + "com.amazonaws.computeoptimizer#IdleMetricName": { + "type": "enum", + "members": { + "CPU": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CPU" + } + }, + "MEMORY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Memory" + } + }, + "NETWORK_OUT_BYTES_PER_SECOND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NetworkOutBytesPerSecond" + } + }, + "NETWORK_IN_BYTES_PER_SECOND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NetworkInBytesPerSecond" + } + }, + "DATABASE_CONNECTIONS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DatabaseConnections" + } + }, + "EBS_VOLUME_READ_IOPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EBSVolumeReadIOPS" + } + }, + "EBS_VOLUME_WRITE_IOPS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EBSVolumeWriteIOPS" + } + }, + "VOLUME_READ_OPS_PER_SECOND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VolumeReadOpsPerSecond" + } + }, + "VOLUME_WRITE_OPS_PER_SECOND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VolumeWriteOpsPerSecond" + } + } + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendation": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.computeoptimizer#ResourceArn", + "traits": { + "smithy.api#documentation": "

The ARN of the current idle resource.

" + } + }, + "resourceId": { + "target": "com.amazonaws.computeoptimizer#ResourceId", + "traits": { + "smithy.api#documentation": "

The unique identifier for the resource.

" + } + }, + "resourceType": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationResourceType", + "traits": { + "smithy.api#documentation": "

The type of resource that is idle.

" + } + }, + "accountId": { + "target": "com.amazonaws.computeoptimizer#AccountId", + "traits": { + "smithy.api#documentation": "

The Amazon Web Services account ID of the idle resource.

" + } + }, + "finding": { + "target": "com.amazonaws.computeoptimizer#IdleFinding", + "traits": { + "smithy.api#documentation": "

The finding classification of an idle resource.

" + } + }, + "findingDescription": { + "target": "com.amazonaws.computeoptimizer#IdleFindingDescription", + "traits": { + "smithy.api#documentation": "

A summary of the findings for the resource.

" + } + }, + "savingsOpportunity": { + "target": "com.amazonaws.computeoptimizer#IdleSavingsOpportunity", + "traits": { + "smithy.api#documentation": "

The savings opportunity for the idle resource.

" + } + }, + "savingsOpportunityAfterDiscounts": { + "target": "com.amazonaws.computeoptimizer#IdleSavingsOpportunityAfterDiscounts", + "traits": { + "smithy.api#documentation": "

The savings opportunity for the idle resource after any applying discounts.

" + } + }, + "utilizationMetrics": { + "target": "com.amazonaws.computeoptimizer#IdleUtilizationMetrics", + "traits": { + "smithy.api#documentation": "

An array of objects that describe the utilization metrics of the idle resource.

" + } + }, + "lookBackPeriodInDays": { + "target": "com.amazonaws.computeoptimizer#LookBackPeriodInDays", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "

The number of days the idle resource utilization metrics were analyzed.

" + } + }, + "lastRefreshTimestamp": { + "target": "com.amazonaws.computeoptimizer#LastRefreshTimestamp", + "traits": { + "smithy.api#documentation": "

The timestamp of when the idle resource recommendation was last generated.

" + } + }, + "tags": { + "target": "com.amazonaws.computeoptimizer#Tags", + "traits": { + "smithy.api#documentation": "

A list of tags assigned to your idle resource recommendations.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes an Idle resource recommendation.

" + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendationError": { + "type": "structure", + "members": { + "identifier": { + "target": "com.amazonaws.computeoptimizer#Identifier", + "traits": { + "smithy.api#documentation": "

The ID of the error.

" + } + }, + "code": { + "target": "com.amazonaws.computeoptimizer#Code", + "traits": { + "smithy.api#documentation": "

The error code.

" + } + }, + "message": { + "target": "com.amazonaws.computeoptimizer#Message", + "traits": { + "smithy.api#documentation": "

The error message.

" + } + }, + "resourceType": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationResourceType", + "traits": { + "smithy.api#documentation": "

The type of resource associated with the error.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Returns of list of resources that doesn't have idle recommendations.

" + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendationErrors": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationError" + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendationFilter": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationFilterName", + "traits": { + "smithy.api#documentation": "

\n The name of the filter.\n

\n

\n Specify Finding to return recommendations with a specific finding classification.\n

\n

You can filter your idle resource recommendations by tag:key \n and tag-key tags.

\n

A tag:key is a key and value combination of a tag assigned to your \n idle resource recommendations. Use the tag key in the filter name and the tag value \n as the filter value. For example, to find all idle resource service recommendations that have \n a tag with the key of Owner and the value of TeamA, \n specify tag:Owner for the filter name and TeamA for the filter value.

\n

A tag-key is the key of a tag assigned to your idle resource recommendations. Use \n this filter to find all of your idle resource recommendations that have a tag with a \n specific key. This doesn’t consider the tag value. For example, you can find \n your idle resource service recommendations with a tag key value of Owner or without any tag \n keys assigned.

" + } + }, + "values": { + "target": "com.amazonaws.computeoptimizer#FilterValues", + "traits": { + "smithy.api#documentation": "

The value of the filter.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes a filter that returns a more specific list of idle resource recommendations.

" + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendationFilterName": { + "type": "enum", + "members": { + "FINDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Finding" + } + }, + "RESOURCE_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ResourceType" + } + } + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendationFilters": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendationFilter" + } + }, + "com.amazonaws.computeoptimizer#IdleRecommendationResourceType": { + "type": "enum", + "members": { + "EC2_INSTANCE": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "

The ID of the Amazon Web Services account for which to return recommendation\n summaries.

\n

If your account is the management account of an organization, use this parameter to\n specify the member account for which you want to return recommendation summaries.

\n

Only one account ID can be specified per request.

" + "smithy.api#enumValue": "EC2Instance" } }, - "nextToken": { - "target": "com.amazonaws.computeoptimizer#NextToken", + "AUTO_SCALING_GROUP": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "

The token to advance to the next page of recommendation summaries.

" + "smithy.api#enumValue": "AutoScalingGroup" } }, - "maxResults": { - "target": "com.amazonaws.computeoptimizer#MaxResults", + "EBS_VOLUME": { + "target": "smithy.api#Unit", "traits": { - "smithy.api#documentation": "

The maximum number of recommendation summaries to return with a single request.

\n

To retrieve the remaining results, make another request with the returned\n nextToken value.

" + "smithy.api#enumValue": "EBSVolume" + } + }, + "ECS_SERVICE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ECSService" + } + }, + "RDS_DB_INSTANCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RDSDBInstance" } } - }, - "traits": { - "smithy.api#input": {} } }, - "com.amazonaws.computeoptimizer#GetRecommendationSummariesResponse": { + "com.amazonaws.computeoptimizer#IdleRecommendations": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#IdleRecommendation" + } + }, + "com.amazonaws.computeoptimizer#IdleSavingsOpportunity": { "type": "structure", "members": { - "nextToken": { - "target": "com.amazonaws.computeoptimizer#NextToken", + "savingsOpportunityPercentage": { + "target": "com.amazonaws.computeoptimizer#SavingsOpportunityPercentage", "traits": { - "smithy.api#documentation": "

The token to use to advance to the next page of recommendation summaries.

\n

This value is null when there are no more pages of recommendation summaries to\n return.

" + "smithy.api#default": 0, + "smithy.api#documentation": "

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer's idle resource recommendations.

" } }, - "recommendationSummaries": { - "target": "com.amazonaws.computeoptimizer#RecommendationSummaries", + "estimatedMonthlySavings": { + "target": "com.amazonaws.computeoptimizer#IdleEstimatedMonthlySavings", "traits": { - "smithy.api#documentation": "

An array of objects that summarize a recommendation.

" + "smithy.api#documentation": "

The estimated monthly savings possible by adopting Compute Optimizer's idle resource recommendations.

" } } }, "traits": { - "smithy.api#output": {} + "smithy.api#documentation": "

Describes the savings opportunity for idle resource recommendations.

" } }, - "com.amazonaws.computeoptimizer#Gpu": { + "com.amazonaws.computeoptimizer#IdleSavingsOpportunityAfterDiscounts": { "type": "structure", "members": { - "gpuCount": { - "target": "com.amazonaws.computeoptimizer#GpuCount", + "savingsOpportunityPercentage": { + "target": "com.amazonaws.computeoptimizer#SavingsOpportunityPercentage", "traits": { "smithy.api#default": 0, - "smithy.api#documentation": "

\n The number of GPUs for the instance type.\n

" + "smithy.api#documentation": "

The estimated monthly savings possible as a percentage of monthly cost by adopting Compute Optimizer's idle resource recommendations. This includes any applicable discounts.

" } }, - "gpuMemorySizeInMiB": { - "target": "com.amazonaws.computeoptimizer#GpuMemorySizeInMiB", + "estimatedMonthlySavings": { + "target": "com.amazonaws.computeoptimizer#IdleEstimatedMonthlySavings", "traits": { - "smithy.api#default": 0, - "smithy.api#documentation": "

\n The total size of the memory for the GPU accelerators for the instance type, in MiB.\n

" + "smithy.api#documentation": "

The estimated monthly savings possible by adopting Compute Optimizer's idle resource recommendations. This includes any applicable discounts.

" } } }, "traits": { - "smithy.api#documentation": "

\n Describes the GPU accelerators for the instance type.\n

" + "smithy.api#documentation": "

Describes the savings opportunity for idle resource recommendations after applying discounts.

\n

Savings opportunity represents the estimated monthly savings after applying discounts. You can achieve this by implementing a given Compute Optimizer recommendation.

" } }, - "com.amazonaws.computeoptimizer#GpuCount": { - "type": "integer", - "traits": { - "smithy.api#default": 0 + "com.amazonaws.computeoptimizer#IdleSummaries": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#IdleSummary" } }, - "com.amazonaws.computeoptimizer#GpuInfo": { + "com.amazonaws.computeoptimizer#IdleSummary": { "type": "structure", "members": { - "gpus": { - "target": "com.amazonaws.computeoptimizer#Gpus", + "name": { + "target": "com.amazonaws.computeoptimizer#IdleFinding", "traits": { - "smithy.api#documentation": "

\n Describes the GPU accelerators for the instance type.\n

" + "smithy.api#documentation": "

The name of the finding group for the idle resources.

" + } + }, + "value": { + "target": "com.amazonaws.computeoptimizer#SummaryValue", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "

The count of idle resources in the finding group.

" } } }, "traits": { - "smithy.api#documentation": "

\n Describes the GPU accelerator settings for the instance type.\n

" - } - }, - "com.amazonaws.computeoptimizer#GpuMemorySizeInMiB": { - "type": "integer", - "traits": { - "smithy.api#default": 0 - } - }, - "com.amazonaws.computeoptimizer#Gpus": { - "type": "list", - "member": { - "target": "com.amazonaws.computeoptimizer#Gpu" - } - }, - "com.amazonaws.computeoptimizer#High": { - "type": "long", - "traits": { - "smithy.api#default": 0 + "smithy.api#documentation": "

Describes the findings summary of the idle resources.

" } }, - "com.amazonaws.computeoptimizer#Identifier": { - "type": "string" - }, - "com.amazonaws.computeoptimizer#Idle": { - "type": "enum", + "com.amazonaws.computeoptimizer#IdleUtilizationMetric": { + "type": "structure", "members": { - "TRUE": { - "target": "smithy.api#Unit", + "name": { + "target": "com.amazonaws.computeoptimizer#IdleMetricName", "traits": { - "smithy.api#enumValue": "True" + "smithy.api#documentation": "

The name of the utilization metric.

" } }, - "FALSE": { - "target": "smithy.api#Unit", + "statistic": { + "target": "com.amazonaws.computeoptimizer#MetricStatistic", "traits": { - "smithy.api#enumValue": "False" + "smithy.api#documentation": "

\n The statistic of the utilization metric.\n

\n

The Compute Optimizer API, Command Line Interface (CLI), and SDKs\n return utilization metrics using only the Maximum statistic, which is the\n highest value observed during the specified period.

\n

The Compute Optimizer console displays graphs for some utilization metrics using the\n Average statistic, which is the value of Sum /\n SampleCount during the specified period. For more information, see\n Viewing resource\n recommendations in the Compute Optimizer User\n Guide. You can also get averaged utilization metric data for your resources\n using Amazon CloudWatch. For more information, see the Amazon CloudWatch\n User Guide.

" + } + }, + "value": { + "target": "com.amazonaws.computeoptimizer#MetricValue", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "

The value of the utilization metric.

" } } + }, + "traits": { + "smithy.api#documentation": "

Describes the utilization metric of an idle resource.

" + } + }, + "com.amazonaws.computeoptimizer#IdleUtilizationMetrics": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#IdleUtilizationMetric" } }, "com.amazonaws.computeoptimizer#IncludeMemberAccounts": { @@ -9133,6 +9978,43 @@ "smithy.api#httpError": 403 } }, + "com.amazonaws.computeoptimizer#Order": { + "type": "enum", + "members": { + "ASC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Asc" + } + }, + "DESC": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Desc" + } + } + } + }, + "com.amazonaws.computeoptimizer#OrderBy": { + "type": "structure", + "members": { + "dimension": { + "target": "com.amazonaws.computeoptimizer#Dimension", + "traits": { + "smithy.api#documentation": "

The dimension values to sort the recommendations.

" + } + }, + "order": { + "target": "com.amazonaws.computeoptimizer#Order", + "traits": { + "smithy.api#documentation": "

The order to sort the recommendations.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes how the recommendations are ordered.

" + } + }, "com.amazonaws.computeoptimizer#PerformanceRisk": { "type": "double", "traits": { @@ -9286,6 +10168,9 @@ "target": "com.amazonaws.computeoptimizer#UtilizationMetric" } }, + "com.amazonaws.computeoptimizer#PromotionTier": { + "type": "integer" + }, "com.amazonaws.computeoptimizer#PutRecommendationPreferences": { "type": "operation", "input": { @@ -9394,6 +10279,35 @@ "smithy.api#output": {} } }, + "com.amazonaws.computeoptimizer#RDSCurrentInstancePerformanceRisk": { + "type": "enum", + "members": { + "VERY_LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "VeryLow" + } + }, + "LOW": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Low" + } + }, + "MEDIUM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Medium" + } + }, + "HIGH": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "High" + } + } + } + }, "com.amazonaws.computeoptimizer#RDSDBInstanceRecommendationOption": { "type": "structure", "members": { @@ -9505,6 +10419,54 @@ "traits": { "smithy.api#enumValue": "DatabaseConnections" } + }, + "STORAGE_NETWORK_RECEIVE_THROUGHPUT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageNetworkReceiveThroughput" + } + }, + "STORAGE_NETWORK_TRANSMIT_THROUGHPUT": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StorageNetworkTransmitThroughput" + } + }, + "AURORA_MEMORY_HEALTH_STATE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AuroraMemoryHealthState" + } + }, + "AURORA_MEMORY_NUM_DECLINED_SQL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AuroraMemoryNumDeclinedSql" + } + }, + "AURORA_MEMORY_NUM_KILL_CONN_TOTAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AuroraMemoryNumKillConnTotal" + } + }, + "AURORA_MEMORY_NUM_KILL_QUERY_TOTAL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AuroraMemoryNumKillQueryTotal" + } + }, + "READ_IOPS_EPHEMERAL_STORAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "ReadIOPSEphemeralStorage" + } + }, + "WRITE_IOPS_EPHEMERAL_STORAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WriteIOPSEphemeralStorage" + } } } }, @@ -9564,6 +10526,12 @@ "smithy.api#documentation": "

\n The database engine version.\n

" } }, + "promotionTier": { + "target": "com.amazonaws.computeoptimizer#PromotionTier", + "traits": { + "smithy.api#documentation": "

The promotion tier for the Aurora instance.

" + } + }, "currentDBInstanceClass": { "target": "com.amazonaws.computeoptimizer#CurrentDBInstanceClass", "traits": { @@ -9576,6 +10544,12 @@ "smithy.api#documentation": "

\n The configuration of the current RDS storage.\n

" } }, + "dbClusterIdentifier": { + "target": "com.amazonaws.computeoptimizer#DBClusterIdentifier", + "traits": { + "smithy.api#documentation": "

The identifier for DB cluster.

" + } + }, "idle": { "target": "com.amazonaws.computeoptimizer#Idle", "traits": { @@ -9600,6 +10574,12 @@ "smithy.api#documentation": "

\n The reason for the finding classification of an Amazon RDS instance.\n

" } }, + "currentInstancePerformanceRisk": { + "target": "com.amazonaws.computeoptimizer#RDSCurrentInstancePerformanceRisk", + "traits": { + "smithy.api#documentation": "

The performance risk for the current DB instance.

" + } + }, "storageFindingReasonCodes": { "target": "com.amazonaws.computeoptimizer#RDSStorageFindingReasonCodes", "traits": { @@ -9952,6 +10932,12 @@ "smithy.api#enumValue": "EBSIOPSOverprovisioned" } }, + "EBS_IOPS_UNDER_PROVISIONED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "EBSIOPSUnderprovisioned" + } + }, "EBS_THROUGHPUT_OVER_PROVISIONED": { "target": "smithy.api#Unit", "traits": { @@ -9987,6 +10973,30 @@ "traits": { "smithy.api#enumValue": "NewEngineVersionAvailable" } + }, + "DB_CLUSTER_WRITER_UNDER_PROVISIONED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "DBClusterWriterUnderprovisioned" + } + }, + "MEMORY_UNDER_PROVISIONED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "MemoryUnderprovisioned" + } + }, + "INSTANCE_STORAGE_READ_IOPS_UNDER_PROVISIONED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InstanceStorageReadIOPSUnderprovisioned" + } + }, + "INSTANCE_STORAGE_WRITE_IOPS_UNDER_PROVISIONED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InstanceStorageWriteIOPSUnderprovisioned" + } } } }, @@ -10481,6 +11491,12 @@ "smithy.api#documentation": "

An array of objects that describe a recommendation summary.

" } }, + "idleSummaries": { + "target": "com.amazonaws.computeoptimizer#IdleSummaries", + "traits": { + "smithy.api#documentation": "

\n Describes the findings summary of the idle resources.\n

" + } + }, "recommendationResourceType": { "target": "com.amazonaws.computeoptimizer#RecommendationSourceType", "traits": { @@ -10499,6 +11515,12 @@ "smithy.api#documentation": "

An object that describes the savings opportunity for a given resource type. Savings\n opportunity includes the estimated monthly savings amount and percentage.

" } }, + "idleSavingsOpportunity": { + "target": "com.amazonaws.computeoptimizer#SavingsOpportunity" + }, + "aggregatedSavingsOpportunity": { + "target": "com.amazonaws.computeoptimizer#SavingsOpportunity" + }, "currentPerformanceRiskRatings": { "target": "com.amazonaws.computeoptimizer#CurrentPerformanceRiskRatings", "traits": { @@ -10564,6 +11586,9 @@ "target": "com.amazonaws.computeoptimizer#ResourceArn" } }, + "com.amazonaws.computeoptimizer#ResourceId": { + "type": "string" + }, "com.amazonaws.computeoptimizer#ResourceNotFoundException": { "type": "structure", "members": { @@ -10627,6 +11652,12 @@ "traits": { "smithy.api#enumValue": "RdsDBInstance" } + }, + "IDLE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Idle" + } } } }, @@ -11153,7 +12184,7 @@ "volumeType": { "target": "com.amazonaws.computeoptimizer#VolumeType", "traits": { - "smithy.api#documentation": "

The volume type.

\n

This can be gp2 for General Purpose SSD, io1 or\n io2 for Provisioned IOPS SSD, st1 for Throughput Optimized\n HDD, sc1 for Cold HDD, or standard for Magnetic\n volumes.

" + "smithy.api#documentation": "

The volume type.

\n

The volume types can be the following:

\n
    \n
  • \n

    General Purpose SSD gp2 and gp3\n

    \n
  • \n
  • \n

    Provisioned IOPS SSD io1, io2, and io2 Block Express\n

    \n
  • \n
  • \n

    Throughput Optimized HDD st1\n

    \n
  • \n
  • \n

    Cold HDD sc1\n

    \n
  • \n
  • \n

    Magnetic volumes standard\n

    \n
  • \n
" } }, "volumeSize": {