+ * Export optimization recommendations for your licenses. + *
+ *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 license 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, ExportLicenseRecommendationsCommand } from "@aws-sdk/client-compute-optimizer"; // ES Modules import + * // const { ComputeOptimizerClient, ExportLicenseRecommendationsCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import + * const client = new ComputeOptimizerClient(config); + * const input = { // ExportLicenseRecommendationsRequest + * accountIds: [ // AccountIds + * "STRING_VALUE", + * ], + * filters: [ // LicenseRecommendationFilters + * { // LicenseRecommendationFilter + * name: "Finding" || "FindingReasonCode" || "LicenseName", + * values: [ // FilterValues + * "STRING_VALUE", + * ], + * }, + * ], + * fieldsToExport: [ // ExportableLicenseFields + * "AccountId" || "ResourceArn" || "LookbackPeriodInDays" || "LastRefreshTimestamp" || "Finding" || "FindingReasonCodes" || "CurrentLicenseConfigurationNumberOfCores" || "CurrentLicenseConfigurationInstanceType" || "CurrentLicenseConfigurationOperatingSystem" || "CurrentLicenseConfigurationLicenseName" || "CurrentLicenseConfigurationLicenseEdition" || "CurrentLicenseConfigurationLicenseModel" || "CurrentLicenseConfigurationLicenseVersion" || "CurrentLicenseConfigurationMetricsSource" || "RecommendationOptionsOperatingSystem" || "RecommendationOptionsLicenseEdition" || "RecommendationOptionsLicenseModel" || "RecommendationOptionsSavingsOpportunityPercentage" || "RecommendationOptionsEstimatedMonthlySavingsCurrency" || "RecommendationOptionsEstimatedMonthlySavingsValue" || "Tags", + * ], + * s3DestinationConfig: { // S3DestinationConfig + * bucket: "STRING_VALUE", + * keyPrefix: "STRING_VALUE", + * }, + * fileFormat: "Csv", + * includeMemberAccounts: true || false, + * }; + * const command = new ExportLicenseRecommendationsCommand(input); + * const response = await client.send(command); + * // { // ExportLicenseRecommendationsResponse + * // jobId: "STRING_VALUE", + * // s3Destination: { // S3Destination + * // bucket: "STRING_VALUE", + * // key: "STRING_VALUE", + * // metadataKey: "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param ExportLicenseRecommendationsCommandInput - {@link ExportLicenseRecommendationsCommandInput} + * @returns {@link ExportLicenseRecommendationsCommandOutput} + * @see {@link ExportLicenseRecommendationsCommandInput} for command's `input` shape. + * @see {@link ExportLicenseRecommendationsCommandOutput} 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.
+ * + */ +export class ExportLicenseRecommendationsCommand extends $Command< + ExportLicenseRecommendationsCommandInput, + ExportLicenseRecommendationsCommandOutput, + ComputeOptimizerClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + /** + * @public + */ + constructor(readonly input: ExportLicenseRecommendationsCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStackReturns license recommendations for Amazon EC2 instances that run on a specific license.
+ *Compute Optimizer generates recommendations for licenses that meet a specific set of requirements. For more + * information, see the Supported resources and + * 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, GetLicenseRecommendationsCommand } from "@aws-sdk/client-compute-optimizer"; // ES Modules import + * // const { ComputeOptimizerClient, GetLicenseRecommendationsCommand } = require("@aws-sdk/client-compute-optimizer"); // CommonJS import + * const client = new ComputeOptimizerClient(config); + * const input = { // GetLicenseRecommendationsRequest + * resourceArns: [ // ResourceArns + * "STRING_VALUE", + * ], + * nextToken: "STRING_VALUE", + * maxResults: Number("int"), + * filters: [ // LicenseRecommendationFilters + * { // LicenseRecommendationFilter + * name: "Finding" || "FindingReasonCode" || "LicenseName", + * values: [ // FilterValues + * "STRING_VALUE", + * ], + * }, + * ], + * accountIds: [ // AccountIds + * "STRING_VALUE", + * ], + * }; + * const command = new GetLicenseRecommendationsCommand(input); + * const response = await client.send(command); + * // { // GetLicenseRecommendationsResponse + * // nextToken: "STRING_VALUE", + * // licenseRecommendations: [ // LicenseRecommendations + * // { // LicenseRecommendation + * // resourceArn: "STRING_VALUE", + * // accountId: "STRING_VALUE", + * // currentLicenseConfiguration: { // LicenseConfiguration + * // numberOfCores: Number("int"), + * // instanceType: "STRING_VALUE", + * // operatingSystem: "STRING_VALUE", + * // licenseEdition: "Enterprise" || "Standard" || "Free" || "NoLicenseEditionFound", + * // licenseName: "SQLServer", + * // licenseModel: "LicenseIncluded" || "BringYourOwnLicense", + * // licenseVersion: "STRING_VALUE", + * // metricsSource: [ // MetricsSource + * // { // MetricSource + * // provider: "CloudWatchApplicationInsights", + * // providerArn: "STRING_VALUE", + * // }, + * // ], + * // }, + * // lookbackPeriodInDays: Number("double"), + * // lastRefreshTimestamp: new Date("TIMESTAMP"), + * // finding: "InsufficientMetrics" || "Optimized" || "NotOptimized", + * // findingReasonCodes: [ // LicenseFindingReasonCodes + * // "InvalidCloudWatchApplicationInsightsSetup" || "CloudWatchApplicationInsightsError" || "LicenseOverprovisioned" || "Optimized", + * // ], + * // licenseRecommendationOptions: [ // LicenseRecommendationOptions + * // { // LicenseRecommendationOption + * // rank: Number("int"), + * // operatingSystem: "STRING_VALUE", + * // licenseEdition: "Enterprise" || "Standard" || "Free" || "NoLicenseEditionFound", + * // licenseModel: "LicenseIncluded" || "BringYourOwnLicense", + * // savingsOpportunity: { // SavingsOpportunity + * // savingsOpportunityPercentage: Number("double"), + * // estimatedMonthlySavings: { // EstimatedMonthlySavings + * // currency: "USD" || "CNY", + * // value: Number("double"), + * // }, + * // }, + * // }, + * // ], + * // tags: [ // Tags + * // { // Tag + * // key: "STRING_VALUE", + * // value: "STRING_VALUE", + * // }, + * // ], + * // }, + * // ], + * // errors: [ // GetRecommendationErrors + * // { // GetRecommendationError + * // identifier: "STRING_VALUE", + * // code: "STRING_VALUE", + * // message: "STRING_VALUE", + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetLicenseRecommendationsCommandInput - {@link GetLicenseRecommendationsCommandInput} + * @returns {@link GetLicenseRecommendationsCommandOutput} + * @see {@link GetLicenseRecommendationsCommandInput} for command's `input` shape. + * @see {@link GetLicenseRecommendationsCommandOutput} 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.
+ * + */ +export class GetLicenseRecommendationsCommand extends $Command< + GetLicenseRecommendationsCommandInput, + GetLicenseRecommendationsCommandOutput, + ComputeOptimizerClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + /** + * @public + */ + constructor(readonly input: GetLicenseRecommendationsCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack
+ * Describes a filter that returns a more specific list of license recommendations. Use this filter
+ * with the GetLicenseRecommendation
action.
+ *
The name of the filter.
+ *Specify Finding
to return recommendations with a specific finding
+ * classification.
Specify FindingReasonCode
to return recommendations with a specific
+ * finding reason code.
You can filter your license recommendations by tag:key
+ * and tag-key
tags.
A tag:key
is a key and value combination of a tag assigned to your
+ * license recommendations. Use the tag key in the filter name and the tag value
+ * as the filter value. For example, to find all license 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 license recommendations. Use
+ * this filter to find all of your license recommendations that have a tag with a
+ * specific key. This doesn’t consider the tag value. For example, you can find
+ * your license recommendations with a tag key value of Owner
or without any tag
+ * keys assigned.
The value of the filter.
+ *The valid values for this parameter are as follows, depending on what you specify for
+ * the name
parameter:
If you specify the name
parameter as
+ * Finding
, then specify Optimized
, NotOptimized
, or
+ * InsufficentMetrics
.
If you specify the name
parameter as
+ * FindingReasonCode
, then specify Optimized
,
+ * LicenseOverprovisioned
, InvalidCloudwatchApplicationInsights
, or
+ * CloudwatchApplicationInsightsError
.
The IDs of the Amazon Web Services accounts for which to export license + * recommendations.
+ *If your account is the management account of an organization, use this parameter to + * specify the member account for which you want to export recommendations.
+ *This parameter can't be specified together with the include member accounts + * parameter. The parameters are mutually exclusive.
+ *If this parameter is omitted, recommendations + * for member accounts aren't included in the export.
+ *You can specify multiple account IDs per request.
+ */ + accountIds?: string[]; + + /** + * @public + *+ * An array of objects to specify a filter that exports a more specific set of license recommendations. + *
+ */ + filters?: LicenseRecommendationFilter[]; + + /** + * @public + *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.
+ */ + fieldsToExport?: (ExportableLicenseField | string)[]; + + /** + * @public + *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.
+ */ + s3DestinationConfig: S3DestinationConfig | undefined; + + /** + * @public + *The format of the export file.
+ *A CSV file is the only export format currently supported.
+ */ + fileFormat?: FileFormat | string; + + /** + * @public + *Indicates whether to include recommendations for resources in all member accounts of + * the organization if your account is the management account of an 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 .
+ *This parameter cannot be specified together with the account IDs parameter. The + * parameters are mutually exclusive.
+ */ + includeMemberAccounts?: boolean; +} + +/** + * @public + */ +export interface ExportLicenseRecommendationsResponse { + /** + * @public + *+ * The identification number of the export job. + *
+ *To view the status of an export job, use the DescribeRecommendationExportJobs + * action and specify the job ID.
+ */ + jobId?: string; + + /** + * @public + *Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name and + * object keys of a recommendations export file, and its associated metadata file.
+ */ + s3Destination?: S3Destination; +} + /** * @public */ @@ -3406,6 +3601,7 @@ export const RecommendationSourceType = { EC2_INSTANCE: "Ec2Instance", ECS_SERVICE: "EcsService", LAMBDA_FUNCTION: "LambdaFunction", + LICENSE: "License", } as const; /** @@ -5466,6 +5662,460 @@ export interface GetLambdaFunctionRecommendationsResponse { lambdaFunctionRecommendations?: LambdaFunctionRecommendation[]; } +/** + * @public + */ +export interface GetLicenseRecommendationsRequest { + /** + * @public + *+ * The ARN that identifies the Amazon EC2 instance. + *
+ *+ * The following is the format of the ARN: + *
+ *
+ * arn:aws:ec2:region:aws_account_id:instance/instance-id
+ *
+ * The token to advance to the next page of license recommendations. + *
+ */ + nextToken?: string; + + /** + * @public + *+ * The maximum number of license 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 license recommendations. + *
+ */ + filters?: LicenseRecommendationFilter[]; + + /** + * @public + *The ID of the Amazon Web Services account for which to return license 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 license recommendations.
+ *Only one account ID can be specified per request.
+ */ + accountIds?: string[]; +} + +/** + * @public + * @enum + */ +export const LicenseEdition = { + ENTERPRISE: "Enterprise", + FREE: "Free", + NO_LICENSE_EDITION_FOUND: "NoLicenseEditionFound", + STANDARD: "Standard", +} as const; + +/** + * @public + */ +export type LicenseEdition = (typeof LicenseEdition)[keyof typeof LicenseEdition]; + +/** + * @public + * @enum + */ +export const LicenseModel = { + BRING_YOUR_OWN_LICENSE: "BringYourOwnLicense", + LICENSE_INCLUDED: "LicenseIncluded", +} as const; + +/** + * @public + */ +export type LicenseModel = (typeof LicenseModel)[keyof typeof LicenseModel]; + +/** + * @public + * @enum + */ +export const LicenseName = { + SQLSERVER: "SQLServer", +} as const; + +/** + * @public + */ +export type LicenseName = (typeof LicenseName)[keyof typeof LicenseName]; + +/** + * @public + * @enum + */ +export const MetricSourceProvider = { + CloudWatchAppInsights: "CloudWatchApplicationInsights", +} as const; + +/** + * @public + */ +export type MetricSourceProvider = (typeof MetricSourceProvider)[keyof typeof MetricSourceProvider]; + +/** + * @public + *+ * The list of metric sources required to generate recommendations for commercial software licenses. + *
+ */ +export interface MetricSource { + /** + * @public + *+ * The name of the metric source provider. + *
+ */ + provider?: MetricSourceProvider | string; + + /** + * @public + *+ * The ARN of the metric source provider. + *
+ */ + providerArn?: string; +} + +/** + * @public + *+ * Describes the configuration of a license for an Amazon EC2 instance. + *
+ */ +export interface LicenseConfiguration { + /** + * @public + *+ * The current number of cores associated with the instance. + *
+ */ + numberOfCores?: number; + + /** + * @public + *+ * The instance type used in the license. + *
+ */ + instanceType?: string; + + /** + * @public + *+ * The operating system of the instance. + *
+ */ + operatingSystem?: string; + + /** + * @public + *+ * The edition of the license for the application that runs on the instance. + *
+ */ + licenseEdition?: LicenseEdition | string; + + /** + * @public + *+ * The name of the license for the application that runs on the instance. + *
+ */ + licenseName?: LicenseName | string; + + /** + * @public + *+ * The license type associated with the instance. + *
+ */ + licenseModel?: LicenseModel | string; + + /** + * @public + *+ * The version of the license for the application that runs on the instance. + *
+ */ + licenseVersion?: string; + + /** + * @public + *+ * The list of metric sources required to generate recommendations for commercial software licenses. + *
+ */ + metricsSource?: MetricSource[]; +} + +/** + * @public + * @enum + */ +export const LicenseFinding = { + INSUFFICIENT_METRICS: "InsufficientMetrics", + NOT_OPTIMIZED: "NotOptimized", + OPTIMIZED: "Optimized", +} as const; + +/** + * @public + */ +export type LicenseFinding = (typeof LicenseFinding)[keyof typeof LicenseFinding]; + +/** + * @public + * @enum + */ +export const LicenseFindingReasonCode = { + CW_APP_INSIGHTS_DISABLED: "InvalidCloudWatchApplicationInsightsSetup", + CW_APP_INSIGHTS_ERROR: "CloudWatchApplicationInsightsError", + LICENSE_OVER_PROVISIONED: "LicenseOverprovisioned", + OPTIMIZED: "Optimized", +} as const; + +/** + * @public + */ +export type LicenseFindingReasonCode = (typeof LicenseFindingReasonCode)[keyof typeof LicenseFindingReasonCode]; + +/** + * @public + *+ * Describes the recommendation options for licenses. + *
+ */ +export interface LicenseRecommendationOption { + /** + * @public + *+ * The rank of the license recommendation option. + *
+ *
+ * The top recommendation option is ranked as 1
.
+ *
+ * The operating system of a license recommendation option. + *
+ */ + operatingSystem?: string; + + /** + * @public + *+ * The recommended edition of the license for the application that runs on the instance. + *
+ */ + licenseEdition?: LicenseEdition | string; + + /** + * @public + *+ * The recommended license type associated with the instance. + *
+ */ + licenseModel?: LicenseModel | string; + + /** + * @public + *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 a license recommendation for an EC2 instance. + *
+ */ +export interface LicenseRecommendation { + /** + * @public + *+ * The ARN that identifies the Amazon EC2 instance. + *
+ */ + resourceArn?: string; + + /** + * @public + *+ * The Amazon Web Services account ID of the license. + *
+ */ + accountId?: string; + + /** + * @public + *+ * An object that describes the current configuration of an instance that runs on a license. + *
+ */ + currentLicenseConfiguration?: LicenseConfiguration; + + /** + * @public + *+ * The number of days for which utilization metrics were analyzed for an instance that runs on a license. + *
+ */ + lookbackPeriodInDays?: number; + + /** + * @public + *+ * The timestamp of when the license recommendation was last generated. + *
+ */ + lastRefreshTimestamp?: Date; + + /** + * @public + *+ * The finding classification for an instance that runs on a license. + *
+ *Findings include:
+ *
+ * InsufficentMetrics
— When Compute Optimizer detects that your CloudWatch
+ * Application Insights isn't enabled or is enabled with insufficient permissions.
+ * NotOptimized
— When Compute Optimizer detects that your EC2 infrastructure
+ * isn't using any of the SQL server license features you're paying for, a license is considered
+ * not optimized.
+ * Optimized
— When Compute Optimizer detects that all specifications of your
+ * license meet the performance requirements of your workload.
+ * The reason for the finding classification for an instance that runs on a license. + *
+ *Finding reason codes include:
+ *
+ * Optimized
— All specifications of your
+ * license meet the performance requirements of your workload.
+ * LicenseOverprovisioned
— A license is considered over-provisioned when your license can be
+ * downgraded while still meeting the performance requirements of your workload.
+ * InvalidCloudwatchApplicationInsights
— CloudWatch
+ * Application Insights isn't configured properly.
+ * CloudwatchApplicationInsightsError
— There is a CloudWatch
+ * Application Insights error.
+ * An array of objects that describe the license recommendation options. + *
+ */ + licenseRecommendationOptions?: LicenseRecommendationOption[]; + + /** + * @public + *+ * A list of tags assigned to an EC2 instance. + *
+ */ + tags?: Tag[]; +} + +/** + * @public + */ +export interface GetLicenseRecommendationsResponse { + /** + * @public + *+ * The token to use to advance to the next page of license recommendations. + *
+ */ + nextToken?: string; + + /** + * @public + *+ * An array of objects that describe license recommendations. + *
+ */ + licenseRecommendations?: LicenseRecommendation[]; + + /** + * @public + *+ * An array of objects that describe errors of the request. + *
+ */ + errors?: GetRecommendationError[]; +} + /** * @public */ 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 65ebeaf7b474..4736d6454bdb 100644 --- a/clients/client-compute-optimizer/src/protocols/Aws_json1_0.ts +++ b/clients/client-compute-optimizer/src/protocols/Aws_json1_0.ts @@ -50,6 +50,10 @@ import { ExportLambdaFunctionRecommendationsCommandInput, ExportLambdaFunctionRecommendationsCommandOutput, } from "../commands/ExportLambdaFunctionRecommendationsCommand"; +import { + ExportLicenseRecommendationsCommandInput, + ExportLicenseRecommendationsCommandOutput, +} from "../commands/ExportLicenseRecommendationsCommand"; import { GetAutoScalingGroupRecommendationsCommandInput, GetAutoScalingGroupRecommendationsCommandOutput, @@ -90,6 +94,10 @@ import { GetLambdaFunctionRecommendationsCommandInput, GetLambdaFunctionRecommendationsCommandOutput, } from "../commands/GetLambdaFunctionRecommendationsCommand"; +import { + GetLicenseRecommendationsCommandInput, + GetLicenseRecommendationsCommandOutput, +} from "../commands/GetLicenseRecommendationsCommand"; import { GetRecommendationPreferencesCommandInput, GetRecommendationPreferencesCommandOutput, @@ -131,12 +139,14 @@ import { ExportableECSServiceField, ExportableInstanceField, ExportableLambdaFunctionField, + ExportableLicenseField, ExportableVolumeField, ExportAutoScalingGroupRecommendationsRequest, ExportEBSVolumeRecommendationsRequest, ExportEC2InstanceRecommendationsRequest, ExportECSServiceRecommendationsRequest, ExportLambdaFunctionRecommendationsRequest, + ExportLicenseRecommendationsRequest, ExternalMetricsPreference, Filter, GetAutoScalingGroupRecommendationsRequest, @@ -158,6 +168,8 @@ import { GetEnrollmentStatusResponse, GetLambdaFunctionRecommendationsRequest, GetLambdaFunctionRecommendationsResponse, + GetLicenseRecommendationsRequest, + GetLicenseRecommendationsResponse, GetRecommendationPreferencesRequest, GetRecommendationSummariesRequest, GetRecommendationSummariesResponse, @@ -172,6 +184,9 @@ import { LambdaFunctionRecommendation, LambdaFunctionRecommendationFilter, LambdaFunctionUtilizationMetric, + LicenseRecommendation, + LicenseRecommendationFilter, + LicenseRecommendationOption, LimitExceededException, MissingAuthenticationToken, OptInRequiredException, @@ -287,6 +302,19 @@ export const se_ExportLambdaFunctionRecommendationsCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +/** + * serializeAws_json1_0ExportLicenseRecommendationsCommand + */ +export const se_ExportLicenseRecommendationsCommand = async ( + input: ExportLicenseRecommendationsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("ExportLicenseRecommendations"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + /** * serializeAws_json1_0GetAutoScalingGroupRecommendationsCommand */ @@ -417,6 +445,19 @@ export const se_GetLambdaFunctionRecommendationsCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +/** + * serializeAws_json1_0GetLicenseRecommendationsCommand + */ +export const se_GetLicenseRecommendationsCommand = async ( + input: GetLicenseRecommendationsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("GetLicenseRecommendations"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + /** * serializeAws_json1_0GetRecommendationPreferencesCommand */ @@ -938,6 +979,73 @@ const de_ExportLambdaFunctionRecommendationsCommandError = async ( } }; +/** + * deserializeAws_json1_0ExportLicenseRecommendationsCommand + */ +export const de_ExportLicenseRecommendationsCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise\n Export optimization recommendations for your licenses.\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 license export job in progress per Amazon Web Services Region.
" + } + }, + "com.amazonaws.computeoptimizer#ExportLicenseRecommendationsRequest": { + "type": "structure", "members": { - "ACCOUNT_ID": { - "target": "smithy.api#Unit", + "accountIds": { + "target": "com.amazonaws.computeoptimizer#AccountIds", "traits": { - "smithy.api#enumValue": "AccountId" + "smithy.api#documentation": "The IDs of the Amazon Web Services accounts for which to export license\n recommendations.
\nIf your account is the management account of an organization, use this parameter to\n specify the member account for which you want to export recommendations.
\nThis parameter can't be specified together with the include member accounts\n parameter. The parameters are mutually exclusive.
\nIf this parameter is omitted, recommendations \n for member accounts aren't included in the export.
\nYou can specify multiple account IDs per request.
" } }, - "AUTO_SCALING_GROUP_ARN": { - "target": "smithy.api#Unit", + "filters": { + "target": "com.amazonaws.computeoptimizer#LicenseRecommendationFilters", "traits": { - "smithy.api#enumValue": "AutoScalingGroupArn" + "smithy.api#documentation": "\n An array of objects to specify a filter that exports a more specific set of license recommendations.\n
" } }, - "AUTO_SCALING_GROUP_NAME": { - "target": "smithy.api#Unit", + "fieldsToExport": { + "target": "com.amazonaws.computeoptimizer#ExportableLicenseFields", "traits": { - "smithy.api#enumValue": "AutoScalingGroupName" + "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.
" } }, - "FINDING": { - "target": "smithy.api#Unit", + "s3DestinationConfig": { + "target": "com.amazonaws.computeoptimizer#S3DestinationConfig", "traits": { - "smithy.api#enumValue": "Finding" + "smithy.api#required": {} } }, - "UTILIZATION_METRICS_CPU_MAXIMUM": { - "target": "smithy.api#Unit", + "fileFormat": { + "target": "com.amazonaws.computeoptimizer#FileFormat", "traits": { - "smithy.api#enumValue": "UtilizationMetricsCpuMaximum" + "smithy.api#documentation": "The format of the export file.
\nA CSV file is the only export format currently supported.
" } }, - "UTILIZATION_METRICS_MEMORY_MAXIMUM": { - "target": "smithy.api#Unit", + "includeMemberAccounts": { + "target": "com.amazonaws.computeoptimizer#IncludeMemberAccounts", "traits": { - "smithy.api#enumValue": "UtilizationMetricsMemoryMaximum" + "smithy.api#default": false, + "smithy.api#documentation": "Indicates whether to include recommendations for resources in all member accounts of\n the organization if your account is the management account of an 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 organization \n aren't included in the export file .
\nThis parameter cannot be specified together with the account IDs parameter. The\n parameters are mutually exclusive.
" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.computeoptimizer#ExportLicenseRecommendationsResponse": { + "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 DescribeRecommendationExportJobs \n action and specify the job ID.
" + } + }, + "s3Destination": { + "target": "com.amazonaws.computeoptimizer#S3Destination" + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.computeoptimizer#ExportableAutoScalingGroupField": { + "type": "enum", + "members": { + "ACCOUNT_ID": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AccountId" + } + }, + "AUTO_SCALING_GROUP_ARN": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AutoScalingGroupArn" + } + }, + "AUTO_SCALING_GROUP_NAME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AutoScalingGroupName" + } + }, + "FINDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Finding" + } + }, + "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_EBS_READ_OPS_PER_SECOND_MAXIMUM": { @@ -3820,6 +3890,143 @@ "target": "com.amazonaws.computeoptimizer#ExportableLambdaFunctionField" } }, + "com.amazonaws.computeoptimizer#ExportableLicenseField": { + "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" + } + }, + "LOOKBACK_PERIOD_IN_DAYS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LookbackPeriodInDays" + } + }, + "LAST_REFRESH_TIMESTAMP": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LastRefreshTimestamp" + } + }, + "LICENSE_FINDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Finding" + } + }, + "LICENSE_FINDING_REASON_CODES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "FindingReasonCodes" + } + }, + "CURRENT_LICENSE_CONFIGURATION_NUMBER_OF_CORES": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationNumberOfCores" + } + }, + "CURRENT_LICENSE_CONFIGURATION_INSTANCE_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationInstanceType" + } + }, + "CURRENT_LICENSE_CONFIGURATION_OPERATING_SYSTEM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationOperatingSystem" + } + }, + "CURRENT_LICENSE_CONFIGURATION_LICENSE_NAME": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationLicenseName" + } + }, + "CURRENT_LICENSE_CONFIGURATION_LICENSE_EDITION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationLicenseEdition" + } + }, + "CURRENT_LICENSE_CONFIGURATION_LICENSE_MODEL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationLicenseModel" + } + }, + "CURRENT_LICENSE_CONFIGURATION_LICENSE_VERSION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationLicenseVersion" + } + }, + "CURRENT_LICENSE_CONFIGURATION_METRICS_SOURCE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CurrentLicenseConfigurationMetricsSource" + } + }, + "RECOMMENDATION_OPTIONS_OPERATING_SYSTEM": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RecommendationOptionsOperatingSystem" + } + }, + "RECOMMENDATION_OPTIONS_LICENSE_EDITION": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RecommendationOptionsLicenseEdition" + } + }, + "RECOMMENDATION_OPTIONS_LICENSE_MODEL": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RecommendationOptionsLicenseModel" + } + }, + "RECOMMENDATION_OPTIONS_SAVINGS_OPPORTUNITY_PERCENTAGE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RecommendationOptionsSavingsOpportunityPercentage" + } + }, + "RECOMMENDATION_OPTIONS_ESTIMATED_MONTHLY_SAVINGS_CURRENCY": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RecommendationOptionsEstimatedMonthlySavingsCurrency" + } + }, + "RECOMMENDATION_OPTIONS_ESTIMATED_MONTHLY_SAVINGS_VALUE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "RecommendationOptionsEstimatedMonthlySavingsValue" + } + }, + "TAGS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Tags" + } + } + } + }, + "com.amazonaws.computeoptimizer#ExportableLicenseFields": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#ExportableLicenseField" + } + }, "com.amazonaws.computeoptimizer#ExportableVolumeField": { "type": "enum", "members": { @@ -5233,6 +5440,108 @@ "smithy.api#output": {} } }, + "com.amazonaws.computeoptimizer#GetLicenseRecommendations": { + "type": "operation", + "input": { + "target": "com.amazonaws.computeoptimizer#GetLicenseRecommendationsRequest" + }, + "output": { + "target": "com.amazonaws.computeoptimizer#GetLicenseRecommendationsResponse" + }, + "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 license recommendations for Amazon EC2 instances that run on a specific license.
\nCompute Optimizer generates recommendations for licenses that meet a specific set of requirements. For more\n information, see the Supported resources and\n requirements in the Compute Optimizer User\n Guide.
" + } + }, + "com.amazonaws.computeoptimizer#GetLicenseRecommendationsRequest": { + "type": "structure", + "members": { + "resourceArns": { + "target": "com.amazonaws.computeoptimizer#ResourceArns", + "traits": { + "smithy.api#documentation": "\n The ARN that identifies the Amazon EC2 instance.\n
\n\n The following is the format of the ARN:\n
\n\n arn:aws:ec2:region:aws_account_id:instance/instance-id
\n
\n The token to advance to the next page of license recommendations.\n
" + } + }, + "maxResults": { + "target": "com.amazonaws.computeoptimizer#MaxResults", + "traits": { + "smithy.api#documentation": "\n The maximum number of license recommendations to return with a single request.\n
\n\n To retrieve the remaining results, make another request with the returned\n nextToken
value.\n
\n An array of objects to specify a filter that returns a more specific list of license recommendations.\n
" + } + }, + "accountIds": { + "target": "com.amazonaws.computeoptimizer#AccountIds", + "traits": { + "smithy.api#documentation": "The ID of the Amazon Web Services account for which to return license recommendations.
\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 license recommendations.
\nOnly one account ID can be specified per request.
" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.computeoptimizer#GetLicenseRecommendationsResponse": { + "type": "structure", + "members": { + "nextToken": { + "target": "com.amazonaws.computeoptimizer#NextToken", + "traits": { + "smithy.api#documentation": "\n The token to use to advance to the next page of license recommendations.\n
" + } + }, + "licenseRecommendations": { + "target": "com.amazonaws.computeoptimizer#LicenseRecommendations", + "traits": { + "smithy.api#documentation": "\n An array of objects that describe license recommendations.\n
" + } + }, + "errors": { + "target": "com.amazonaws.computeoptimizer#GetRecommendationErrors", + "traits": { + "smithy.api#documentation": "\n An array of objects that describe errors of the request.\n
" + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.computeoptimizer#GetRecommendationError": { "type": "structure", "members": { @@ -6387,10 +6696,345 @@ "com.amazonaws.computeoptimizer#LastUpdatedTimestamp": { "type": "timestamp" }, - "com.amazonaws.computeoptimizer#LimitExceededException": { + "com.amazonaws.computeoptimizer#LicenseConfiguration": { "type": "structure", "members": { - "message": { + "numberOfCores": { + "target": "com.amazonaws.computeoptimizer#NumberOfCores", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "\n The current number of cores associated with the instance.\n
" + } + }, + "instanceType": { + "target": "com.amazonaws.computeoptimizer#InstanceType", + "traits": { + "smithy.api#documentation": "\n The instance type used in the license.\n
" + } + }, + "operatingSystem": { + "target": "com.amazonaws.computeoptimizer#OperatingSystem", + "traits": { + "smithy.api#documentation": "\n The operating system of the instance. \n
" + } + }, + "licenseEdition": { + "target": "com.amazonaws.computeoptimizer#LicenseEdition", + "traits": { + "smithy.api#documentation": "\n The edition of the license for the application that runs on the instance.\n
" + } + }, + "licenseName": { + "target": "com.amazonaws.computeoptimizer#LicenseName", + "traits": { + "smithy.api#documentation": "\n The name of the license for the application that runs on the instance.\n
" + } + }, + "licenseModel": { + "target": "com.amazonaws.computeoptimizer#LicenseModel", + "traits": { + "smithy.api#documentation": "\n The license type associated with the instance.\n
" + } + }, + "licenseVersion": { + "target": "com.amazonaws.computeoptimizer#LicenseVersion", + "traits": { + "smithy.api#documentation": "\n The version of the license for the application that runs on the instance.\n
" + } + }, + "metricsSource": { + "target": "com.amazonaws.computeoptimizer#MetricsSource", + "traits": { + "smithy.api#documentation": "\n The list of metric sources required to generate recommendations for commercial software licenses.\n
" + } + } + }, + "traits": { + "smithy.api#documentation": "\n Describes the configuration of a license for an Amazon EC2 instance.\n
" + } + }, + "com.amazonaws.computeoptimizer#LicenseEdition": { + "type": "enum", + "members": { + "ENTERPRISE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Enterprise" + } + }, + "STANDARD": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Standard" + } + }, + "FREE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Free" + } + }, + "NO_LICENSE_EDITION_FOUND": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NoLicenseEditionFound" + } + } + } + }, + "com.amazonaws.computeoptimizer#LicenseFinding": { + "type": "enum", + "members": { + "INSUFFICIENT_METRICS": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InsufficientMetrics" + } + }, + "OPTIMIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Optimized" + } + }, + "NOT_OPTIMIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "NotOptimized" + } + } + } + }, + "com.amazonaws.computeoptimizer#LicenseFindingReasonCode": { + "type": "enum", + "members": { + "CW_APP_INSIGHTS_DISABLED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "InvalidCloudWatchApplicationInsightsSetup" + } + }, + "CW_APP_INSIGHTS_ERROR": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CloudWatchApplicationInsightsError" + } + }, + "LICENSE_OVER_PROVISIONED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LicenseOverprovisioned" + } + }, + "OPTIMIZED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Optimized" + } + } + } + }, + "com.amazonaws.computeoptimizer#LicenseFindingReasonCodes": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#LicenseFindingReasonCode" + } + }, + "com.amazonaws.computeoptimizer#LicenseModel": { + "type": "enum", + "members": { + "LICENSE_INCLUDED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "LicenseIncluded" + } + }, + "BRING_YOUR_OWN_LICENSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "BringYourOwnLicense" + } + } + } + }, + "com.amazonaws.computeoptimizer#LicenseName": { + "type": "enum", + "members": { + "SQLSERVER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "SQLServer" + } + } + } + }, + "com.amazonaws.computeoptimizer#LicenseRecommendation": { + "type": "structure", + "members": { + "resourceArn": { + "target": "com.amazonaws.computeoptimizer#ResourceArn", + "traits": { + "smithy.api#documentation": "\n The ARN that identifies the Amazon EC2 instance.\n
" + } + }, + "accountId": { + "target": "com.amazonaws.computeoptimizer#AccountId", + "traits": { + "smithy.api#documentation": "\n The Amazon Web Services account ID of the license. \n
" + } + }, + "currentLicenseConfiguration": { + "target": "com.amazonaws.computeoptimizer#LicenseConfiguration", + "traits": { + "smithy.api#documentation": "\n An object that describes the current configuration of an instance that runs on a license.\n
" + } + }, + "lookbackPeriodInDays": { + "target": "com.amazonaws.computeoptimizer#LookBackPeriodInDays", + "traits": { + "smithy.api#default": 0, + "smithy.api#documentation": "\n The number of days for which utilization metrics were analyzed for an instance that runs on a license.\n
" + } + }, + "lastRefreshTimestamp": { + "target": "com.amazonaws.computeoptimizer#LastRefreshTimestamp", + "traits": { + "smithy.api#documentation": "\n The timestamp of when the license recommendation was last generated.\n
" + } + }, + "finding": { + "target": "com.amazonaws.computeoptimizer#LicenseFinding", + "traits": { + "smithy.api#documentation": "\n The finding classification for an instance that runs on a license.\n
\nFindings include:
\n\n InsufficentMetrics
— When Compute Optimizer detects that your CloudWatch\n Application Insights isn't enabled or is enabled with insufficient permissions.
\n NotOptimized
— When Compute Optimizer detects that your EC2 infrastructure \n isn't using any of the SQL server license features you're paying for, a license is considered \n not optimized.
\n Optimized
— When Compute Optimizer detects that all specifications of your \n license meet the performance requirements of your workload.
\n The reason for the finding classification for an instance that runs on a license.\n
\nFinding reason codes include:
\n\n Optimized
— All specifications of your \n license meet the performance requirements of your workload.
\n LicenseOverprovisioned
— A license is considered over-provisioned when your license can be \n downgraded while still meeting the performance requirements of your workload.
\n InvalidCloudwatchApplicationInsights
— CloudWatch\n Application Insights isn't configured properly.
\n CloudwatchApplicationInsightsError
— There is a CloudWatch\n Application Insights error.
\n An array of objects that describe the license recommendation options.\n
" + } + }, + "tags": { + "target": "com.amazonaws.computeoptimizer#Tags", + "traits": { + "smithy.api#documentation": "\n A list of tags assigned to an EC2 instance.\n
" + } + } + }, + "traits": { + "smithy.api#documentation": "\n Describes a license recommendation for an EC2 instance.\n
" + } + }, + "com.amazonaws.computeoptimizer#LicenseRecommendationFilter": { + "type": "structure", + "members": { + "name": { + "target": "com.amazonaws.computeoptimizer#LicenseRecommendationFilterName", + "traits": { + "smithy.api#documentation": "The name of the filter.
\nSpecify Finding
to return recommendations with a specific finding\n classification.
Specify FindingReasonCode
to return recommendations with a specific\n finding reason code.
You can filter your license 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 license recommendations. Use the tag key in the filter name and the tag value \n as the filter value. For example, to find all license 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 license recommendations. Use \n this filter to find all of your license recommendations that have a tag with a \n specific key. This doesn’t consider the tag value. For example, you can find \n your license recommendations with a tag key value of Owner
or without any tag \n keys assigned.
The value of the filter.
\nThe valid values for this parameter are as follows, depending on what you specify for\n the name
parameter:
If you specify the name
parameter as\n Finding
, then specify Optimized
, NotOptimized
, or\n InsufficentMetrics
.
If you specify the name
parameter as\n FindingReasonCode
, then specify Optimized
,\n LicenseOverprovisioned
, InvalidCloudwatchApplicationInsights
, or\n CloudwatchApplicationInsightsError
.
\n Describes a filter that returns a more specific list of license recommendations. Use this filter \n with the GetLicenseRecommendation
action.\n
\n The rank of the license recommendation option.\n
\n\n The top recommendation option is ranked as 1
.\n
\n The operating system of a license recommendation option.\n
" + } + }, + "licenseEdition": { + "target": "com.amazonaws.computeoptimizer#LicenseEdition", + "traits": { + "smithy.api#documentation": "\n The recommended edition of the license for the application that runs on the instance.\n
" + } + }, + "licenseModel": { + "target": "com.amazonaws.computeoptimizer#LicenseModel", + "traits": { + "smithy.api#documentation": "\n The recommended license type associated with the instance.\n
" + } + }, + "savingsOpportunity": { + "target": "com.amazonaws.computeoptimizer#SavingsOpportunity" + } + }, + "traits": { + "smithy.api#documentation": "\n Describes the recommendation options for licenses.\n
" + } + }, + "com.amazonaws.computeoptimizer#LicenseRecommendationOptions": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#LicenseRecommendationOption" + } + }, + "com.amazonaws.computeoptimizer#LicenseRecommendations": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#LicenseRecommendation" + } + }, + "com.amazonaws.computeoptimizer#LicenseVersion": { + "type": "string" + }, + "com.amazonaws.computeoptimizer#LimitExceededException": { + "type": "structure", + "members": { + "message": { "target": "com.amazonaws.computeoptimizer#ErrorMessage" } }, @@ -6566,6 +7210,40 @@ } } }, + "com.amazonaws.computeoptimizer#MetricProviderArn": { + "type": "string" + }, + "com.amazonaws.computeoptimizer#MetricSource": { + "type": "structure", + "members": { + "provider": { + "target": "com.amazonaws.computeoptimizer#MetricSourceProvider", + "traits": { + "smithy.api#documentation": "\n The name of the metric source provider.\n
" + } + }, + "providerArn": { + "target": "com.amazonaws.computeoptimizer#MetricProviderArn", + "traits": { + "smithy.api#documentation": "\n The ARN of the metric source provider.\n
" + } + } + }, + "traits": { + "smithy.api#documentation": "\n The list of metric sources required to generate recommendations for commercial software licenses.\n
" + } + }, + "com.amazonaws.computeoptimizer#MetricSourceProvider": { + "type": "enum", + "members": { + "CloudWatchAppInsights": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "CloudWatchApplicationInsights" + } + } + } + }, "com.amazonaws.computeoptimizer#MetricStatistic": { "type": "enum", "members": { @@ -6595,6 +7273,12 @@ "target": "com.amazonaws.computeoptimizer#MetricValue" } }, + "com.amazonaws.computeoptimizer#MetricsSource": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#MetricSource" + } + }, "com.amazonaws.computeoptimizer#MigrationEffort": { "type": "enum", "members": { @@ -6655,6 +7339,12 @@ "com.amazonaws.computeoptimizer#NullableMemoryReservation": { "type": "integer" }, + "com.amazonaws.computeoptimizer#NumberOfCores": { + "type": "integer", + "traits": { + "smithy.api#default": 0 + } + }, "com.amazonaws.computeoptimizer#NumberOfInvocations": { "type": "long", "traits": { @@ -6664,6 +7354,9 @@ "com.amazonaws.computeoptimizer#NumberOfMemberAccountsOptedIn": { "type": "integer" }, + "com.amazonaws.computeoptimizer#OperatingSystem": { + "type": "string" + }, "com.amazonaws.computeoptimizer#OptInRequiredException": { "type": "structure", "members": { @@ -7099,6 +7792,12 @@ "traits": { "smithy.api#enumValue": "EcsService" } + }, + "LICENSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "License" + } } } }, @@ -7197,6 +7896,12 @@ "com.amazonaws.computeoptimizer#ResourceArn": { "type": "string" }, + "com.amazonaws.computeoptimizer#ResourceArns": { + "type": "list", + "member": { + "target": "com.amazonaws.computeoptimizer#ResourceArn" + } + }, "com.amazonaws.computeoptimizer#ResourceNotFoundException": { "type": "structure", "members": { @@ -7248,6 +7953,12 @@ "traits": { "smithy.api#enumValue": "EcsService" } + }, + "LICENSE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "License" + } } } },