+ * 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.
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
+ *
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.
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.
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.
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.
+ * 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.
+ *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.
+ *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\n Export optimization recommendations for your idle resources.\n
\nRecommendations 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.
\nYou 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
\nIf 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.
\nThis parameter can't be specified together with the include member accounts \n parameter. The parameters are mutually exclusive.
\nIf this parameter or the include member accounts parameter is omitted,\n the recommendations for member accounts aren't included in the export.
\nYou 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.
\nThe 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.
\nIf this parameter is omitted, recommendations for member accounts of the \n organization aren't included in the export file.
\nIf 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
\nTo 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.
\nTo retrieve the remaining results, \n make another request with the returned nextToken
value.
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.
\nIf 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.
\nYou 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.
\nIf 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.
\nOnly 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.
\nTo retrieve the remaining results, make another request with the returned\n nextToken
value.
The token to use to advance to the next page of recommendation summaries.
\nThis 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
You can filter your idle resource recommendations by tag:key
\n and tag-key
tags.
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.
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.
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.
\nIf 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.
\nOnly 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.
\nTo retrieve the remaining results, make another request with the returned\n nextToken
value.
The token to use to advance to the next page of recommendation summaries.
\nThis 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.
\nSavings 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
\nThe 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.
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.
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.
\nThis 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.
The volume type.
\nThe volume types can be the following:
\nGeneral Purpose SSD gp2
and gp3
\n
Provisioned IOPS SSD io1
, io2
, and io2 Block Express
\n
Throughput Optimized HDD st1
\n
Cold HDD sc1
\n
Magnetic volumes standard
\n