1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package types
4
5import (
6	smithydocument "github.com/aws/smithy-go/document"
7	"time"
8)
9
10// Describes the enrollment status of an organization's member accounts in Compute
11// Optimizer.
12type AccountEnrollmentStatus struct {
13
14	// The Amazon Web Services account ID.
15	AccountId *string
16
17	// The Unix epoch timestamp, in seconds, of when the account enrollment status was
18	// last updated.
19	LastUpdatedTimestamp *time.Time
20
21	// The account enrollment status.
22	Status Status
23
24	// The reason for the account enrollment status. For example, an account might show
25	// a status of Pending because member accounts of an organization require more time
26	// to be enrolled in the service.
27	StatusReason *string
28
29	noSmithyDocumentSerde
30}
31
32// Describes the configuration of an Auto Scaling group.
33type AutoScalingGroupConfiguration struct {
34
35	// The desired capacity, or number of instances, for the Auto Scaling group.
36	DesiredCapacity int32
37
38	// The instance type for the Auto Scaling group.
39	InstanceType *string
40
41	// The maximum size, or maximum number of instances, for the Auto Scaling group.
42	MaxSize int32
43
44	// The minimum size, or minimum number of instances, for the Auto Scaling group.
45	MinSize int32
46
47	noSmithyDocumentSerde
48}
49
50// Describes an Auto Scaling group recommendation.
51type AutoScalingGroupRecommendation struct {
52
53	// The Amazon Web Services account ID of the Auto Scaling group.
54	AccountId *string
55
56	// The Amazon Resource Name (ARN) of the Auto Scaling group.
57	AutoScalingGroupArn *string
58
59	// The name of the Auto Scaling group.
60	AutoScalingGroupName *string
61
62	// An array of objects that describe the current configuration of the Auto Scaling
63	// group.
64	CurrentConfiguration *AutoScalingGroupConfiguration
65
66	// The finding classification of the Auto Scaling group. Findings for Auto Scaling
67	// groups include:
68	//
69	// * NotOptimized —An Auto Scaling group is considered not
70	// optimized when Compute Optimizer identifies a recommendation that can provide
71	// better performance for your workload.
72	//
73	// * Optimized —An Auto Scaling group is
74	// considered optimized when Compute Optimizer determines that the group is
75	// correctly provisioned to run your workload based on the chosen instance type.
76	// For optimized resources, Compute Optimizer might recommend a new generation
77	// instance type.
78	Finding Finding
79
80	// The timestamp of when the Auto Scaling group recommendation was last refreshed.
81	LastRefreshTimestamp *time.Time
82
83	// The number of days for which utilization metrics were analyzed for the Auto
84	// Scaling group.
85	LookBackPeriodInDays float64
86
87	// An array of objects that describe the recommendation options for the Auto
88	// Scaling group.
89	RecommendationOptions []AutoScalingGroupRecommendationOption
90
91	// An array of objects that describe the utilization metrics of the Auto Scaling
92	// group.
93	UtilizationMetrics []UtilizationMetric
94
95	noSmithyDocumentSerde
96}
97
98// Describes a recommendation option for an Auto Scaling group.
99type AutoScalingGroupRecommendationOption struct {
100
101	// An array of objects that describe an Auto Scaling group configuration.
102	Configuration *AutoScalingGroupConfiguration
103
104	// The performance risk of the Auto Scaling group configuration recommendation.
105	// Performance risk indicates the likelihood of the recommended instance type not
106	// meeting the resource needs of your workload. Compute Optimizer calculates an
107	// individual performance risk score for each specification of the recommended
108	// instance, including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk
109	// IOPS, network throughput, and network PPS. The performance risk of the
110	// recommended instance is calculated as the maximum performance risk score across
111	// the analyzed resource specifications. The value ranges from 0 - 4, with 0
112	// meaning that the recommended resource is predicted to always provide enough
113	// hardware capability. The higher the performance risk is, the more likely you
114	// should validate whether the recommendation will meet the performance
115	// requirements of your workload before migrating your resource.
116	PerformanceRisk float64
117
118	// An array of objects that describe the projected utilization metrics of the Auto
119	// Scaling group recommendation option. The Cpu and Memory metrics are the only
120	// projected utilization metrics returned. Additionally, the Memory metric is
121	// returned only for resources that have the unified CloudWatch agent installed on
122	// them. For more information, see Enabling Memory Utilization with the CloudWatch
123	// Agent
124	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
125	ProjectedUtilizationMetrics []UtilizationMetric
126
127	// The rank of the Auto Scaling group recommendation option. The top recommendation
128	// option is ranked as 1.
129	Rank int32
130
131	noSmithyDocumentSerde
132}
133
134// Describes a filter that returns a more specific list of Amazon Elastic Block
135// Store (Amazon EBS) volume recommendations. Use this filter with the
136// GetEBSVolumeRecommendations action. You can use
137// LambdaFunctionRecommendationFilter with the GetLambdaFunctionRecommendations
138// action, JobFilter with the DescribeRecommendationExportJobs action, and Filter
139// with the GetAutoScalingGroupRecommendations and GetEC2InstanceRecommendations
140// actions.
141type EBSFilter struct {
142
143	// The name of the filter. Specify Finding to return recommendations with a
144	// specific finding classification (for example, NotOptimized).
145	Name EBSFilterName
146
147	// The value of the filter. The valid values are Optimized, or NotOptimized.
148	Values []string
149
150	noSmithyDocumentSerde
151}
152
153// Describes a utilization metric of an Amazon Elastic Block Store (Amazon EBS)
154// volume. Compare the utilization metric data of your resource against its
155// projected utilization metric data to determine the performance difference
156// between your current resource and the recommended option.
157type EBSUtilizationMetric struct {
158
159	// The name of the utilization metric. The following utilization metrics are
160	// available:
161	//
162	// * VolumeReadOpsPerSecond - The completed read operations per second
163	// from the volume in a specified period of time. Unit: Count
164	//
165	// *
166	// VolumeWriteOpsPerSecond - The completed write operations per second to the
167	// volume in a specified period of time. Unit: Count
168	//
169	// * VolumeReadBytesPerSecond -
170	// The bytes read per second from the volume in a specified period of time. Unit:
171	// Bytes
172	//
173	// * VolumeWriteBytesPerSecond - The bytes written to the volume in a
174	// specified period of time. Unit: Bytes
175	Name EBSMetricName
176
177	// The statistic of the utilization metric. The Compute Optimizer API, Command Line
178	// Interface (CLI), and SDKs return utilization metrics using only the Maximum
179	// statistic, which is the highest value observed during the specified period. The
180	// Compute Optimizer console displays graphs for some utilization metrics using the
181	// Average statistic, which is the value of Sum / SampleCount during the specified
182	// period. For more information, see Viewing resource recommendations
183	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
184	// in the Compute Optimizer User Guide. You can also get averaged utilization
185	// metric data for your resources using Amazon CloudWatch. For more information,
186	// see the Amazon CloudWatch User Guide
187	// (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
188	Statistic MetricStatistic
189
190	// The value of the utilization metric.
191	Value float64
192
193	noSmithyDocumentSerde
194}
195
196// Describes a filter that returns a more specific list of account enrollment
197// statuses. Use this filter with the GetEnrollmentStatusesForOrganization action.
198type EnrollmentFilter struct {
199
200	// The name of the filter. Specify Status to return accounts with a specific
201	// enrollment status (for example, Active).
202	Name EnrollmentFilterName
203
204	// The value of the filter. The valid values are Active, Inactive, Pending, and
205	// Failed.
206	Values []string
207
208	noSmithyDocumentSerde
209}
210
211// Describes the destination of the recommendations export and metadata files.
212type ExportDestination struct {
213
214	// An object that describes the destination Amazon Simple Storage Service (Amazon
215	// S3) bucket name and object keys of a recommendations export file, and its
216	// associated metadata file.
217	S3 *S3Destination
218
219	noSmithyDocumentSerde
220}
221
222// Describes a filter that returns a more specific list of recommendations. Use
223// this filter with the GetAutoScalingGroupRecommendations and
224// GetEC2InstanceRecommendations actions. You can use EBSFilter with the
225// GetEBSVolumeRecommendations action, LambdaFunctionRecommendationFilter with the
226// GetLambdaFunctionRecommendations action, and JobFilter with the
227// DescribeRecommendationExportJobs action.
228type Filter struct {
229
230	// The name of the filter. Specify Finding to return recommendations with a
231	// specific finding classification (for example, Underprovisioned). Specify
232	// RecommendationSourceType to return recommendations of a specific resource type
233	// (for example, Ec2Instance). Specify FindingReasonCodes to return recommendations
234	// with a specific finding reason code (for example, CPUUnderprovisioned).
235	Name FilterName
236
237	// The value of the filter. The valid values for this parameter are as follows,
238	// depending on what you specify for the name parameter and the resource type that
239	// you wish to filter results for:
240	//
241	// * Specify Optimized or NotOptimized if you
242	// specify the name parameter as Finding and you want to filter results for Auto
243	// Scaling groups.
244	//
245	// * Specify Underprovisioned, Overprovisioned, or Optimized if
246	// you specify the name parameter as Finding and you want to filter results for EC2
247	// instances.
248	//
249	// * Specify Ec2Instance or AutoScalingGroup if you specify the name
250	// parameter as RecommendationSourceType.
251	//
252	// * Specify one of the following options
253	// if you specify the name parameter as FindingReasonCodes:
254	//
255	// * CPUOverprovisioned —
256	// The instance’s CPU configuration can be sized down while still meeting the
257	// performance requirements of your workload.
258	//
259	// * CPUUnderprovisioned — The
260	// instance’s CPU configuration doesn't meet the performance requirements of your
261	// workload and there is an alternative instance type that provides better CPU
262	// performance.
263	//
264	// * MemoryOverprovisioned — The instance’s memory configuration can
265	// be sized down while still meeting the performance requirements of your
266	// workload.
267	//
268	// * MemoryUnderprovisioned — The instance’s memory configuration
269	// doesn't meet the performance requirements of your workload and there is an
270	// alternative instance type that provides better memory performance.
271	//
272	// *
273	// EBSThroughputOverprovisioned — The instance’s EBS throughput configuration can
274	// be sized down while still meeting the performance requirements of your
275	// workload.
276	//
277	// * EBSThroughputUnderprovisioned — The instance’s EBS throughput
278	// configuration doesn't meet the performance requirements of your workload and
279	// there is an alternative instance type that provides better EBS throughput
280	// performance.
281	//
282	// * EBSIOPSOverprovisioned — The instance’s EBS IOPS configuration
283	// can be sized down while still meeting the performance requirements of your
284	// workload.
285	//
286	// * EBSIOPSUnderprovisioned — The instance’s EBS IOPS configuration
287	// doesn't meet the performance requirements of your workload and there is an
288	// alternative instance type that provides better EBS IOPS performance.
289	//
290	// *
291	// NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration
292	// can be sized down while still meeting the performance requirements of your
293	// workload.
294	//
295	// * NetworkBandwidthUnderprovisioned — The instance’s network bandwidth
296	// configuration doesn't meet the performance requirements of your workload and
297	// there is an alternative instance type that provides better network bandwidth
298	// performance. This finding reason happens when the NetworkIn or NetworkOut
299	// performance of an instance is impacted.
300	//
301	// * NetworkPPSOverprovisioned — The
302	// instance’s network PPS (packets per second) configuration can be sized down
303	// while still meeting the performance requirements of your workload.
304	//
305	// *
306	// NetworkPPSUnderprovisioned — The instance’s network PPS (packets per second)
307	// configuration doesn't meet the performance requirements of your workload and
308	// there is an alternative instance type that provides better network PPS
309	// performance.
310	//
311	// * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration
312	// can be sized down while still meeting the performance requirements of your
313	// workload.
314	//
315	// * DiskIOPSUnderprovisioned — The instance’s disk IOPS configuration
316	// doesn't meet the performance requirements of your workload and there is an
317	// alternative instance type that provides better disk IOPS performance.
318	//
319	// *
320	// DiskThroughputOverprovisioned — The instance’s disk throughput configuration can
321	// be sized down while still meeting the performance requirements of your
322	// workload.
323	//
324	// * DiskThroughputUnderprovisioned — The instance’s disk throughput
325	// configuration doesn't meet the performance requirements of your workload and
326	// there is an alternative instance type that provides better disk throughput
327	// performance.
328	Values []string
329
330	noSmithyDocumentSerde
331}
332
333// Describes an error experienced when getting recommendations. For example, an
334// error is returned if you request recommendations for an unsupported Auto Scaling
335// group, or if you request recommendations for an instance of an unsupported
336// instance family.
337type GetRecommendationError struct {
338
339	// The error code.
340	Code *string
341
342	// The ID of the error.
343	Identifier *string
344
345	// The message, or reason, for the error.
346	Message *string
347
348	noSmithyDocumentSerde
349}
350
351// Describes an Amazon EC2 instance recommendation.
352type InstanceRecommendation struct {
353
354	// The Amazon Web Services account ID of the instance.
355	AccountId *string
356
357	// The instance type of the current instance.
358	CurrentInstanceType *string
359
360	// The finding classification of the instance. Findings for instances include:
361	//
362	// *
363	// Underprovisioned —An instance is considered under-provisioned when at least one
364	// specification of your instance, such as CPU, memory, or network, does not meet
365	// the performance requirements of your workload. Under-provisioned instances may
366	// lead to poor application performance.
367	//
368	// * Overprovisioned —An instance is
369	// considered over-provisioned when at least one specification of your instance,
370	// such as CPU, memory, or network, can be sized down while still meeting the
371	// performance requirements of your workload, and no specification is
372	// under-provisioned. Over-provisioned instances may lead to unnecessary
373	// infrastructure cost.
374	//
375	// * Optimized —An instance is considered optimized when all
376	// specifications of your instance, such as CPU, memory, and network, meet the
377	// performance requirements of your workload and is not over provisioned. For
378	// optimized resources, Compute Optimizer might recommend a new generation instance
379	// type.
380	Finding Finding
381
382	// The reason for the finding classification of the instance. Finding reason codes
383	// for instances include:
384	//
385	// * CPUOverprovisioned — The instance’s CPU configuration
386	// can be sized down while still meeting the performance requirements of your
387	// workload. This is identified by analyzing the CPUUtilization metric of the
388	// current instance during the look-back period.
389	//
390	// * CPUUnderprovisioned — The
391	// instance’s CPU configuration doesn't meet the performance requirements of your
392	// workload and there is an alternative instance type that provides better CPU
393	// performance. This is identified by analyzing the CPUUtilization metric of the
394	// current instance during the look-back period.
395	//
396	// * MemoryOverprovisioned — The
397	// instance’s memory configuration can be sized down while still meeting the
398	// performance requirements of your workload. This is identified by analyzing the
399	// memory utilization metric of the current instance during the look-back
400	// period.
401	//
402	// * MemoryUnderprovisioned — The instance’s memory configuration doesn't
403	// meet the performance requirements of your workload and there is an alternative
404	// instance type that provides better memory performance. This is identified by
405	// analyzing the memory utilization metric of the current instance during the
406	// look-back period. Memory utilization is analyzed only for resources that have
407	// the unified CloudWatch agent installed on them. For more information, see
408	// Enabling memory utilization with the Amazon CloudWatch Agent
409	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent)
410	// in the Compute Optimizer User Guide. On Linux instances, Compute Optimizer
411	// analyses the mem_used_percent metric in the CWAgent namespace, or the legacy
412	// MemoryUtilization metric in the System/Linux namespace. On Windows instances,
413	// Compute Optimizer analyses the Memory % Committed Bytes In Use metric in the
414	// CWAgent namespace.
415	//
416	// * EBSThroughputOverprovisioned — The instance’s EBS
417	// throughput configuration can be sized down while still meeting the performance
418	// requirements of your workload. This is identified by analyzing the VolumeReadOps
419	// and VolumeWriteOps metrics of EBS volumes attached to the current instance
420	// during the look-back period.
421	//
422	// * EBSThroughputUnderprovisioned — The instance’s
423	// EBS throughput configuration doesn't meet the performance requirements of your
424	// workload and there is an alternative instance type that provides better EBS
425	// throughput performance. This is identified by analyzing the VolumeReadOps and
426	// VolumeWriteOps metrics of EBS volumes attached to the current instance during
427	// the look-back period.
428	//
429	// * EBSIOPSOverprovisioned — The instance’s EBS IOPS
430	// configuration can be sized down while still meeting the performance requirements
431	// of your workload. This is identified by analyzing the VolumeReadBytes and
432	// VolumeWriteBytes metric of EBS volumes attached to the current instance during
433	// the look-back period.
434	//
435	// * EBSIOPSUnderprovisioned — The instance’s EBS IOPS
436	// configuration doesn't meet the performance requirements of your workload and
437	// there is an alternative instance type that provides better EBS IOPS performance.
438	// This is identified by analyzing the VolumeReadBytes and VolumeWriteBytes metric
439	// of EBS volumes attached to the current instance during the look-back period.
440	//
441	// *
442	// NetworkBandwidthOverprovisioned — The instance’s network bandwidth configuration
443	// can be sized down while still meeting the performance requirements of your
444	// workload. This is identified by analyzing the NetworkIn and NetworkOut metrics
445	// of the current instance during the look-back period.
446	//
447	// *
448	// NetworkBandwidthUnderprovisioned — The instance’s network bandwidth
449	// configuration doesn't meet the performance requirements of your workload and
450	// there is an alternative instance type that provides better network bandwidth
451	// performance. This is identified by analyzing the NetworkIn and NetworkOut
452	// metrics of the current instance during the look-back period. This finding reason
453	// happens when the NetworkIn or NetworkOut performance of an instance is
454	// impacted.
455	//
456	// * NetworkPPSOverprovisioned — The instance’s network PPS (packets per
457	// second) configuration can be sized down while still meeting the performance
458	// requirements of your workload. This is identified by analyzing the
459	// NetworkPacketsIn and NetworkPacketsIn metrics of the current instance during the
460	// look-back period.
461	//
462	// * NetworkPPSUnderprovisioned — The instance’s network PPS
463	// (packets per second) configuration doesn't meet the performance requirements of
464	// your workload and there is an alternative instance type that provides better
465	// network PPS performance. This is identified by analyzing the NetworkPacketsIn
466	// and NetworkPacketsIn metrics of the current instance during the look-back
467	// period.
468	//
469	// * DiskIOPSOverprovisioned — The instance’s disk IOPS configuration can
470	// be sized down while still meeting the performance requirements of your workload.
471	// This is identified by analyzing the DiskReadOps and DiskWriteOps metrics of the
472	// current instance during the look-back period.
473	//
474	// * DiskIOPSUnderprovisioned — The
475	// instance’s disk IOPS configuration doesn't meet the performance requirements of
476	// your workload and there is an alternative instance type that provides better
477	// disk IOPS performance. This is identified by analyzing the DiskReadOps and
478	// DiskWriteOps metrics of the current instance during the look-back period.
479	//
480	// *
481	// DiskThroughputOverprovisioned — The instance’s disk throughput configuration can
482	// be sized down while still meeting the performance requirements of your workload.
483	// This is identified by analyzing the DiskReadBytes and DiskWriteBytes metrics of
484	// the current instance during the look-back period.
485	//
486	// *
487	// DiskThroughputUnderprovisioned — The instance’s disk throughput configuration
488	// doesn't meet the performance requirements of your workload and there is an
489	// alternative instance type that provides better disk throughput performance. This
490	// is identified by analyzing the DiskReadBytes and DiskWriteBytes metrics of the
491	// current instance during the look-back period.
492	//
493	// For more information about
494	// instance metrics, see List the available CloudWatch metrics for your instances
495	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html)
496	// in the Amazon Elastic Compute Cloud User Guide. For more information about EBS
497	// volume metrics, see Amazon CloudWatch metrics for Amazon EBS
498	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cloudwatch_ebs.html)
499	// in the Amazon Elastic Compute Cloud User Guide.
500	FindingReasonCodes []InstanceRecommendationFindingReasonCode
501
502	// The Amazon Resource Name (ARN) of the current instance.
503	InstanceArn *string
504
505	// The name of the current instance.
506	InstanceName *string
507
508	// The timestamp of when the instance recommendation was last refreshed.
509	LastRefreshTimestamp *time.Time
510
511	// The number of days for which utilization metrics were analyzed for the instance.
512	LookBackPeriodInDays float64
513
514	// An array of objects that describe the recommendation options for the instance.
515	RecommendationOptions []InstanceRecommendationOption
516
517	// An array of objects that describe the source resource of the recommendation.
518	RecommendationSources []RecommendationSource
519
520	// An array of objects that describe the utilization metrics of the instance.
521	UtilizationMetrics []UtilizationMetric
522
523	noSmithyDocumentSerde
524}
525
526// Describes a recommendation option for an Amazon EC2 instance.
527type InstanceRecommendationOption struct {
528
529	// The instance type of the instance recommendation.
530	InstanceType *string
531
532	// The performance risk of the instance recommendation option. Performance risk
533	// indicates the likelihood of the recommended instance type not meeting the
534	// resource needs of your workload. Compute Optimizer calculates an individual
535	// performance risk score for each specification of the recommended instance,
536	// including CPU, memory, EBS throughput, EBS IOPS, disk throughput, disk IOPS,
537	// network throughput, and network PPS. The performance risk of the recommended
538	// instance is calculated as the maximum performance risk score across the analyzed
539	// resource specifications. The value ranges from 0 - 4, with 0 meaning that the
540	// recommended resource is predicted to always provide enough hardware capability.
541	// The higher the performance risk is, the more likely you should validate whether
542	// the recommendation will meet the performance requirements of your workload
543	// before migrating your resource.
544	PerformanceRisk float64
545
546	// Describes the configuration differences between the current instance and the
547	// recommended instance type. You should consider the configuration differences
548	// before migrating your workloads from the current instance to the recommended
549	// instance type. The Change the instance type guide for Linux
550	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html)
551	// and Change the instance type guide for Windows
552	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-instance-resize.html)
553	// provide general guidance for getting started with an instance migration.
554	// Platform differences include:
555	//
556	// * Hypervisor — The hypervisor of the recommended
557	// instance type is different than that of the current instance. For example, the
558	// recommended instance type uses a Nitro hypervisor and the current instance uses
559	// a Xen hypervisor. The differences that you should consider between these
560	// hypervisors are covered in the Nitro Hypervisor
561	// (http://aws.amazon.com/ec2/faqs/#Nitro_Hypervisor) section of the Amazon EC2
562	// frequently asked questions. For more information, see Instances built on the
563	// Nitro System
564	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances)
565	// in the Amazon EC2 User Guide for Linux, or Instances built on the Nitro System
566	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#ec2-nitro-instances)
567	// in the Amazon EC2 User Guide for Windows.
568	//
569	// * NetworkInterface — The network
570	// interface of the recommended instance type is different than that of the current
571	// instance. For example, the recommended instance type supports enhanced
572	// networking and the current instance might not. To enable enhanced networking for
573	// the recommended instance type, you must install the Elastic Network Adapter
574	// (ENA) driver or the Intel 82599 Virtual Function driver. For more information,
575	// see Networking and storage features
576	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-networking-storage)
577	// and Enhanced networking on Linux
578	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enhanced-networking.html)
579	// in the Amazon EC2 User Guide for Linux, or Networking and storage features
580	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#instance-networking-storage)
581	// and Enhanced networking on Windows
582	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/enhanced-networking.html)
583	// in the Amazon EC2 User Guide for Windows.
584	//
585	// * StorageInterface — The storage
586	// interface of the recommended instance type is different than that of the current
587	// instance. For example, the recommended instance type uses an NVMe storage
588	// interface and the current instance does not. To access NVMe volumes for the
589	// recommended instance type, you will need to install or upgrade the NVMe driver.
590	// For more information, see Networking and storage features
591	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-networking-storage)
592	// and Amazon EBS and NVMe on Linux instances
593	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html) in
594	// the Amazon EC2 User Guide for Linux, or Networking and storage features
595	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#instance-networking-storage)
596	// and Amazon EBS and NVMe on Windows instances
597	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/nvme-ebs-volumes.html)
598	// in the Amazon EC2 User Guide for Windows.
599	//
600	// * InstanceStoreAvailability — The
601	// recommended instance type does not support instance store volumes and the
602	// current instance does. Before migrating, you might need to back up the data on
603	// your instance store volumes if you want to preserve them. For more information,
604	// see How do I back up an instance store volume on my Amazon EC2 instance to
605	// Amazon EBS?
606	// (https://aws.amazon.com/premiumsupport/knowledge-center/back-up-instance-store-ebs/)
607	// in the Amazon Web Services Premium Support Knowledge Base. For more information,
608	// see Networking and storage features
609	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-networking-storage)
610	// and Amazon EC2 instance store
611	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html) in
612	// the Amazon EC2 User Guide for Linux, or see Networking and storage features
613	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/instance-types.html#instance-networking-storage)
614	// and Amazon EC2 instance store
615	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/InstanceStorage.html) in
616	// the Amazon EC2 User Guide for Windows.
617	//
618	// * VirtualizationType — The recommended
619	// instance type uses the hardware virtual machine (HVM) virtualization type and
620	// the current instance uses the paravirtual (PV) virtualization type. For more
621	// information about the differences between these virtualization types, see Linux
622	// AMI virtualization types
623	// (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html)
624	// in the Amazon EC2 User Guide for Linux, or Windows AMI virtualization types
625	// (https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-ami-version-history.html#virtualization-types)
626	// in the Amazon EC2 User Guide for Windows.
627	//
628	// * Architecture — The CPU architecture
629	// between the recommended instance type and the current instance is different. For
630	// example, the recommended instance type might use an Arm CPU architecture and the
631	// current instance type might use a different one, such as x86. Before migrating,
632	// you should consider recompiling the software on your instance for the new
633	// architecture. Alternatively, you might switch to an Amazon Machine Image (AMI)
634	// that supports the new architecture. For more information about the CPU
635	// architecture for each instance type, see Amazon EC2 Instance Types
636	// (http://aws.amazon.com/ec2/instance-types/).
637	PlatformDifferences []PlatformDifference
638
639	// An array of objects that describe the projected utilization metrics of the
640	// instance recommendation option. The Cpu and Memory metrics are the only
641	// projected utilization metrics returned. Additionally, the Memory metric is
642	// returned only for resources that have the unified CloudWatch agent installed on
643	// them. For more information, see Enabling Memory Utilization with the CloudWatch
644	// Agent
645	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
646	ProjectedUtilizationMetrics []UtilizationMetric
647
648	// The rank of the instance recommendation option. The top recommendation option is
649	// ranked as 1.
650	Rank int32
651
652	noSmithyDocumentSerde
653}
654
655// Describes a filter that returns a more specific list of recommendation export
656// jobs. Use this filter with the DescribeRecommendationExportJobs action. You can
657// use EBSFilter with the GetEBSVolumeRecommendations action,
658// LambdaFunctionRecommendationFilter with the GetLambdaFunctionRecommendations
659// action, and Filter with the GetAutoScalingGroupRecommendations and
660// GetEC2InstanceRecommendations actions.
661type JobFilter struct {
662
663	// The name of the filter. Specify ResourceType to return export jobs of a specific
664	// resource type (for example, Ec2Instance). Specify JobStatus to return export
665	// jobs with a specific status (e.g, Complete).
666	Name JobFilterName
667
668	// The value of the filter. The valid values for this parameter are as follows,
669	// depending on what you specify for the name parameter:
670	//
671	// * Specify Ec2Instance or
672	// AutoScalingGroup if you specify the name parameter as ResourceType. There is no
673	// filter for EBS volumes because volume recommendations cannot be exported at this
674	// time.
675	//
676	// * Specify Queued, InProgress, Complete, or Failed if you specify the name
677	// parameter as JobStatus.
678	Values []string
679
680	noSmithyDocumentSerde
681}
682
683// Describes a projected utilization metric of an Lambda function recommendation
684// option.
685type LambdaFunctionMemoryProjectedMetric struct {
686
687	// The name of the projected utilization metric.
688	Name LambdaFunctionMemoryMetricName
689
690	// The statistic of the projected utilization metric.
691	Statistic LambdaFunctionMemoryMetricStatistic
692
693	// The values of the projected utilization metrics.
694	Value float64
695
696	noSmithyDocumentSerde
697}
698
699// Describes a recommendation option for an Lambda function.
700type LambdaFunctionMemoryRecommendationOption struct {
701
702	// The memory size, in MB, of the function recommendation option.
703	MemorySize int32
704
705	// An array of objects that describe the projected utilization metrics of the
706	// function recommendation option.
707	ProjectedUtilizationMetrics []LambdaFunctionMemoryProjectedMetric
708
709	// The rank of the function recommendation option. The top recommendation option is
710	// ranked as 1.
711	Rank int32
712
713	noSmithyDocumentSerde
714}
715
716// Describes an Lambda function recommendation.
717type LambdaFunctionRecommendation struct {
718
719	// The Amazon Web Services account ID of the function.
720	AccountId *string
721
722	// The amount of memory, in MB, that's allocated to the current function.
723	CurrentMemorySize int32
724
725	// The finding classification of the function. Findings for functions include:
726	//
727	// *
728	// Optimized — The function is correctly provisioned to run your workload based on
729	// its current configuration and its utilization history. This finding
730	// classification does not include finding reason codes.
731	//
732	// * NotOptimized — The
733	// function is performing at a higher level (over-provisioned) or at a lower level
734	// (under-provisioned) than required for your workload because its current
735	// configuration is not optimal. Over-provisioned resources might lead to
736	// unnecessary infrastructure cost, and under-provisioned resources might lead to
737	// poor application performance. This finding classification can include the
738	// MemoryUnderprovisioned and MemoryUnderprovisioned finding reason codes.
739	//
740	// *
741	// Unavailable — Compute Optimizer was unable to generate a recommendation for the
742	// function. This could be because the function has not accumulated sufficient
743	// metric data, or the function does not qualify for a recommendation. This finding
744	// classification can include the InsufficientData and Inconclusive finding reason
745	// codes. Functions with a finding of unavailable are not returned unless you
746	// specify the filter parameter with a value of Unavailable in your
747	// GetLambdaFunctionRecommendations request.
748	Finding LambdaFunctionRecommendationFinding
749
750	// The reason for the finding classification of the function. Functions that have a
751	// finding classification of Optimized don't have a finding reason code. Finding
752	// reason codes for functions include:
753	//
754	// * MemoryOverprovisioned — The function is
755	// over-provisioned when its memory configuration can be sized down while still
756	// meeting the performance requirements of your workload. An over-provisioned
757	// function might lead to unnecessary infrastructure cost. This finding reason code
758	// is part of the NotOptimized finding classification.
759	//
760	// * MemoryUnderprovisioned —
761	// The function is under-provisioned when its memory configuration doesn't meet the
762	// performance requirements of the workload. An under-provisioned function might
763	// lead to poor application performance. This finding reason code is part of the
764	// NotOptimized finding classification.
765	//
766	// * InsufficientData — The function does not
767	// have sufficient metric data for Compute Optimizer to generate a recommendation.
768	// For more information, see the Supported resources and requirements
769	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html) in
770	// the Compute Optimizer User Guide. This finding reason code is part of the
771	// Unavailable finding classification.
772	//
773	// * Inconclusive — The function does not
774	// qualify for a recommendation because Compute Optimizer cannot generate a
775	// recommendation with a high degree of confidence. This finding reason code is
776	// part of the Unavailable finding classification.
777	FindingReasonCodes []LambdaFunctionRecommendationFindingReasonCode
778
779	// The Amazon Resource Name (ARN) of the current function.
780	FunctionArn *string
781
782	// The version number of the current function.
783	FunctionVersion *string
784
785	// The timestamp of when the function recommendation was last refreshed.
786	LastRefreshTimestamp *time.Time
787
788	// The number of days for which utilization metrics were analyzed for the function.
789	LookbackPeriodInDays float64
790
791	// An array of objects that describe the memory configuration recommendation
792	// options for the function.
793	MemorySizeRecommendationOptions []LambdaFunctionMemoryRecommendationOption
794
795	// The number of times your function code was applied during the look-back period.
796	NumberOfInvocations int64
797
798	// An array of objects that describe the utilization metrics of the function.
799	UtilizationMetrics []LambdaFunctionUtilizationMetric
800
801	noSmithyDocumentSerde
802}
803
804// Describes a filter that returns a more specific list of Lambda function
805// recommendations. Use this filter with the GetLambdaFunctionRecommendations
806// action. You can use EBSFilter with the GetEBSVolumeRecommendations action,
807// JobFilter with the DescribeRecommendationExportJobs action, and Filter with the
808// GetAutoScalingGroupRecommendations and GetEC2InstanceRecommendations actions.
809type LambdaFunctionRecommendationFilter struct {
810
811	// The name of the filter. Specify Finding to return recommendations with a
812	// specific finding classification (for example, NotOptimized). Specify
813	// FindingReasonCode to return recommendations with a specific finding reason code
814	// (for example, MemoryUnderprovisioned).
815	Name LambdaFunctionRecommendationFilterName
816
817	// The value of the filter. The valid values for this parameter are as follows,
818	// depending on what you specify for the name parameter:
819	//
820	// * Specify Optimized,
821	// NotOptimized, or Unavailable if you specify the name parameter as Finding.
822	//
823	// *
824	// Specify MemoryOverprovisioned, MemoryUnderprovisioned, InsufficientData, or
825	// Inconclusive if you specify the name parameter as FindingReasonCode.
826	Values []string
827
828	noSmithyDocumentSerde
829}
830
831// Describes a utilization metric of an Lambda function.
832type LambdaFunctionUtilizationMetric struct {
833
834	// The name of the utilization metric. The following utilization metrics are
835	// available:
836	//
837	// * Duration - The amount of time that your function code spends
838	// processing an event.
839	//
840	// * Memory - The amount of memory used per invocation.
841	Name LambdaFunctionMetricName
842
843	// The statistic of the utilization metric. The Compute Optimizer API, Command Line
844	// Interface (CLI), and SDKs return utilization metrics using only the Maximum
845	// statistic, which is the highest value observed during the specified period. The
846	// Compute Optimizer console displays graphs for some utilization metrics using the
847	// Average statistic, which is the value of Sum / SampleCount during the specified
848	// period. For more information, see Viewing resource recommendations
849	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
850	// in the Compute Optimizer User Guide. You can also get averaged utilization
851	// metric data for your resources using Amazon CloudWatch. For more information,
852	// see the Amazon CloudWatch User Guide
853	// (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
854	Statistic LambdaFunctionMetricStatistic
855
856	// The value of the utilization metric.
857	Value float64
858
859	noSmithyDocumentSerde
860}
861
862// Describes a projected utilization metric of a recommendation option, such as an
863// Amazon EC2 instance. This represents the projected utilization of a
864// recommendation option had you used that resource during the analyzed period.
865// Compare the utilization metric data of your resource against its projected
866// utilization metric data to determine the performance difference between your
867// current resource and the recommended option. The Cpu and Memory metrics are the
868// only projected utilization metrics returned when you run the
869// GetEC2RecommendationProjectedMetrics action. Additionally, the Memory metric is
870// returned only for resources that have the unified CloudWatch agent installed on
871// them. For more information, see Enabling Memory Utilization with the CloudWatch
872// Agent
873// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
874type ProjectedMetric struct {
875
876	// The name of the projected utilization metric. The following projected
877	// utilization metrics are returned:
878	//
879	// * Cpu - The projected percentage of allocated
880	// EC2 compute units that would be in use on the recommendation option had you used
881	// that resource during the analyzed period. This metric identifies the processing
882	// power required to run an application on the recommendation option. Depending on
883	// the instance type, tools in your operating system can show a lower percentage
884	// than CloudWatch when the instance is not allocated a full processor core. Units:
885	// Percent
886	//
887	// * Memory - The percentage of memory that would be in use on the
888	// recommendation option had you used that resource during the analyzed period.
889	// This metric identifies the amount of memory required to run an application on
890	// the recommendation option. Units: Percent The Memory metric is returned only for
891	// resources that have the unified CloudWatch agent installed on them. For more
892	// information, see Enabling Memory Utilization with the CloudWatch Agent
893	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
894	Name MetricName
895
896	// The timestamps of the projected utilization metric.
897	Timestamps []time.Time
898
899	// The values of the projected utilization metrics.
900	Values []float64
901
902	noSmithyDocumentSerde
903}
904
905// A summary of a finding reason code.
906type ReasonCodeSummary struct {
907
908	// The name of the finding reason code.
909	Name FindingReasonCode
910
911	// The value of the finding reason code summary.
912	Value float64
913
914	noSmithyDocumentSerde
915}
916
917// Describes a recommendation export job. Use the DescribeRecommendationExportJobs
918// action to view your recommendation export jobs. Use the
919// ExportAutoScalingGroupRecommendations or ExportEC2InstanceRecommendations
920// actions to request an export of your recommendations.
921type RecommendationExportJob struct {
922
923	// The timestamp of when the export job was created.
924	CreationTimestamp *time.Time
925
926	// An object that describes the destination of the export file.
927	Destination *ExportDestination
928
929	// The reason for an export job failure.
930	FailureReason *string
931
932	// The identification number of the export job.
933	JobId *string
934
935	// The timestamp of when the export job was last updated.
936	LastUpdatedTimestamp *time.Time
937
938	// The resource type of the exported recommendations.
939	ResourceType ResourceType
940
941	// The status of the export job.
942	Status JobStatus
943
944	noSmithyDocumentSerde
945}
946
947// Describes preferences for recommendations.
948type RecommendationPreferences struct {
949
950	// Specifies the CPU vendor and architecture for Amazon EC2 instance and Auto
951	// Scaling group recommendations. For example, when you specify AWS_ARM64 with:
952	//
953	// *
954	// A GetEC2InstanceRecommendations or GetAutoScalingGroupRecommendations request,
955	// Compute Optimizer returns recommendations that consist of Graviton2 instance
956	// types only.
957	//
958	// * A GetEC2RecommendationProjectedMetrics request, Compute Optimizer
959	// returns projected utilization metrics for Graviton2 instance type
960	// recommendations only.
961	//
962	// * A ExportEC2InstanceRecommendations or
963	// ExportAutoScalingGroupRecommendations request, Compute Optimizer exports
964	// recommendations that consist of Graviton2 instance types only.
965	CpuVendorArchitectures []CpuVendorArchitecture
966
967	noSmithyDocumentSerde
968}
969
970// Describes the source of a recommendation, such as an Amazon EC2 instance or Auto
971// Scaling group.
972type RecommendationSource struct {
973
974	// The Amazon Resource Name (ARN) of the recommendation source.
975	RecommendationSourceArn *string
976
977	// The resource type of the recommendation source.
978	RecommendationSourceType RecommendationSourceType
979
980	noSmithyDocumentSerde
981}
982
983// A summary of a recommendation.
984type RecommendationSummary struct {
985
986	// The Amazon Web Services account ID of the recommendation summary.
987	AccountId *string
988
989	// The resource type of the recommendation.
990	RecommendationResourceType RecommendationSourceType
991
992	// An array of objects that describe a recommendation summary.
993	Summaries []Summary
994
995	noSmithyDocumentSerde
996}
997
998// Describes a projected utilization metric of a recommendation option. The Cpu and
999// Memory metrics are the only projected utilization metrics returned when you run
1000// the GetEC2RecommendationProjectedMetrics action. Additionally, the Memory metric
1001// is returned only for resources that have the unified CloudWatch agent installed
1002// on them. For more information, see Enabling Memory Utilization with the
1003// CloudWatch Agent
1004// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
1005type RecommendedOptionProjectedMetric struct {
1006
1007	// An array of objects that describe a projected utilization metric.
1008	ProjectedMetrics []ProjectedMetric
1009
1010	// The rank of the recommendation option projected metric. The top recommendation
1011	// option is ranked as 1. The projected metric rank correlates to the
1012	// recommendation option rank. For example, the projected metric ranked as 1 is
1013	// related to the recommendation option that is also ranked as 1 in the same
1014	// response.
1015	Rank int32
1016
1017	// The recommended instance type.
1018	RecommendedInstanceType *string
1019
1020	noSmithyDocumentSerde
1021}
1022
1023// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name
1024// and object keys of a recommendations export file, and its associated metadata
1025// file.
1026type S3Destination struct {
1027
1028	// The name of the Amazon S3 bucket used as the destination of an export file.
1029	Bucket *string
1030
1031	// The Amazon S3 bucket key of an export file. The key uniquely identifies the
1032	// object, or export file, in the S3 bucket.
1033	Key *string
1034
1035	// The Amazon S3 bucket key of a metadata file. The key uniquely identifies the
1036	// object, or metadata file, in the S3 bucket.
1037	MetadataKey *string
1038
1039	noSmithyDocumentSerde
1040}
1041
1042// Describes the destination Amazon Simple Storage Service (Amazon S3) bucket name
1043// and key prefix for a recommendations export job. You must create the destination
1044// Amazon S3 bucket for your recommendations export before you create the export
1045// job. Compute Optimizer does not create the S3 bucket for you. After you create
1046// the S3 bucket, ensure that it has the required permission policy to allow
1047// Compute Optimizer to write the export file to it. If you plan to specify an
1048// object prefix when you create the export job, you must include the object prefix
1049// in the policy that you add to the S3 bucket. For more information, see Amazon S3
1050// Bucket Policy for Compute Optimizer
1051// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/create-s3-bucket-policy-for-compute-optimizer.html)
1052// in the Compute Optimizer User Guide.
1053type S3DestinationConfig struct {
1054
1055	// The name of the Amazon S3 bucket to use as the destination for an export job.
1056	Bucket *string
1057
1058	// The Amazon S3 bucket prefix for an export job.
1059	KeyPrefix *string
1060
1061	noSmithyDocumentSerde
1062}
1063
1064// The summary of a recommendation.
1065type Summary struct {
1066
1067	// The finding classification of the recommendation.
1068	Name Finding
1069
1070	// An array of objects that summarize a finding reason code.
1071	ReasonCodeSummaries []ReasonCodeSummary
1072
1073	// The value of the recommendation summary.
1074	Value float64
1075
1076	noSmithyDocumentSerde
1077}
1078
1079// Describes a utilization metric of a resource, such as an Amazon EC2 instance.
1080// Compare the utilization metric data of your resource against its projected
1081// utilization metric data to determine the performance difference between your
1082// current resource and the recommended option.
1083type UtilizationMetric struct {
1084
1085	// The name of the utilization metric. The following utilization metrics are
1086	// available:
1087	//
1088	// * Cpu - The percentage of allocated EC2 compute units that are
1089	// currently in use on the instance. This metric identifies the processing power
1090	// required to run an application on the instance. Depending on the instance type,
1091	// tools in your operating system can show a lower percentage than CloudWatch when
1092	// the instance is not allocated a full processor core. Units: Percent
1093	//
1094	// * Memory -
1095	// The percentage of memory that is currently in use on the instance. This metric
1096	// identifies the amount of memory required to run an application on the instance.
1097	// Units: Percent The Memory metric is returned only for resources that have the
1098	// unified CloudWatch agent installed on them. For more information, see Enabling
1099	// Memory Utilization with the CloudWatch Agent
1100	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/metrics.html#cw-agent).
1101	//
1102	// *
1103	// EBS_READ_OPS_PER_SECOND - The completed read operations from all EBS volumes
1104	// attached to the instance in a specified period of time. Unit: Count
1105	//
1106	// *
1107	// EBS_WRITE_OPS_PER_SECOND - The completed write operations to all EBS volumes
1108	// attached to the instance in a specified period of time. Unit: Count
1109	//
1110	// *
1111	// EBS_READ_BYTES_PER_SECOND - The bytes read from all EBS volumes attached to the
1112	// instance in a specified period of time. Unit: Bytes
1113	//
1114	// *
1115	// EBS_WRITE_BYTES_PER_SECOND - The bytes written to all EBS volumes attached to
1116	// the instance in a specified period of time. Unit: Bytes
1117	//
1118	// *
1119	// DISK_READ_OPS_PER_SECOND - The completed read operations from all instance store
1120	// volumes available to the instance in a specified period of time. If there are no
1121	// instance store volumes, either the value is 0 or the metric is not reported.
1122	//
1123	// *
1124	// DISK_WRITE_OPS_PER_SECOND - The completed write operations from all instance
1125	// store volumes available to the instance in a specified period of time. If there
1126	// are no instance store volumes, either the value is 0 or the metric is not
1127	// reported.
1128	//
1129	// * DISK_READ_BYTES_PER_SECOND - The bytes read from all instance store
1130	// volumes available to the instance. This metric is used to determine the volume
1131	// of the data the application reads from the disk of the instance. This can be
1132	// used to determine the speed of the application. If there are no instance store
1133	// volumes, either the value is 0 or the metric is not reported.
1134	//
1135	// *
1136	// DISK_WRITE_BYTES_PER_SECOND - The bytes written to all instance store volumes
1137	// available to the instance. This metric is used to determine the volume of the
1138	// data the application writes onto the disk of the instance. This can be used to
1139	// determine the speed of the application. If there are no instance store volumes,
1140	// either the value is 0 or the metric is not reported.
1141	//
1142	// *
1143	// NETWORK_IN_BYTES_PER_SECOND - The number of bytes received by the instance on
1144	// all network interfaces. This metric identifies the volume of incoming network
1145	// traffic to a single instance.
1146	//
1147	// * NETWORK_OUT_BYTES_PER_SECOND - The number of
1148	// bytes sent out by the instance on all network interfaces. This metric identifies
1149	// the volume of outgoing network traffic from a single instance.
1150	//
1151	// *
1152	// NETWORK_PACKETS_IN_PER_SECOND - The number of packets received by the instance
1153	// on all network interfaces. This metric identifies the volume of incoming traffic
1154	// in terms of the number of packets on a single instance.
1155	//
1156	// *
1157	// NETWORK_PACKETS_OUT_PER_SECOND - The number of packets sent out by the instance
1158	// on all network interfaces. This metric identifies the volume of outgoing traffic
1159	// in terms of the number of packets on a single instance.
1160	Name MetricName
1161
1162	// The statistic of the utilization metric. The Compute Optimizer API, Command Line
1163	// Interface (CLI), and SDKs return utilization metrics using only the Maximum
1164	// statistic, which is the highest value observed during the specified period. The
1165	// Compute Optimizer console displays graphs for some utilization metrics using the
1166	// Average statistic, which is the value of Sum / SampleCount during the specified
1167	// period. For more information, see Viewing resource recommendations
1168	// (https://docs.aws.amazon.com/compute-optimizer/latest/ug/viewing-recommendations.html)
1169	// in the Compute Optimizer User Guide. You can also get averaged utilization
1170	// metric data for your resources using Amazon CloudWatch. For more information,
1171	// see the Amazon CloudWatch User Guide
1172	// (https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html).
1173	Statistic MetricStatistic
1174
1175	// The value of the utilization metric.
1176	Value float64
1177
1178	noSmithyDocumentSerde
1179}
1180
1181// Describes the configuration of an Amazon Elastic Block Store (Amazon EBS)
1182// volume.
1183type VolumeConfiguration struct {
1184
1185	// The baseline IOPS of the volume.
1186	VolumeBaselineIOPS int32
1187
1188	// The baseline throughput of the volume.
1189	VolumeBaselineThroughput int32
1190
1191	// The burst IOPS of the volume.
1192	VolumeBurstIOPS int32
1193
1194	// The burst throughput of the volume.
1195	VolumeBurstThroughput int32
1196
1197	// The size of the volume, in GiB.
1198	VolumeSize int32
1199
1200	// The volume type. This can be gp2 for General Purpose SSD, io1 or io2 for
1201	// Provisioned IOPS SSD, st1 for Throughput Optimized HDD, sc1 for Cold HDD, or
1202	// standard for Magnetic volumes.
1203	VolumeType *string
1204
1205	noSmithyDocumentSerde
1206}
1207
1208// Describes an Amazon Elastic Block Store (Amazon EBS) volume recommendation.
1209type VolumeRecommendation struct {
1210
1211	// The Amazon Web Services account ID of the volume.
1212	AccountId *string
1213
1214	// An array of objects that describe the current configuration of the volume.
1215	CurrentConfiguration *VolumeConfiguration
1216
1217	// The finding classification of the volume. Findings for volumes include:
1218	//
1219	// *
1220	// NotOptimized —A volume is considered not optimized when Compute Optimizer
1221	// identifies a recommendation that can provide better performance for your
1222	// workload.
1223	//
1224	// * Optimized —An volume is considered optimized when Compute Optimizer
1225	// determines that the volume is correctly provisioned to run your workload based
1226	// on the chosen volume type. For optimized resources, Compute Optimizer might
1227	// recommend a new generation volume type.
1228	Finding EBSFinding
1229
1230	// The timestamp of when the volume recommendation was last refreshed.
1231	LastRefreshTimestamp *time.Time
1232
1233	// The number of days for which utilization metrics were analyzed for the volume.
1234	LookBackPeriodInDays float64
1235
1236	// An array of objects that describe the utilization metrics of the volume.
1237	UtilizationMetrics []EBSUtilizationMetric
1238
1239	// The Amazon Resource Name (ARN) of the current volume.
1240	VolumeArn *string
1241
1242	// An array of objects that describe the recommendation options for the volume.
1243	VolumeRecommendationOptions []VolumeRecommendationOption
1244
1245	noSmithyDocumentSerde
1246}
1247
1248// Describes a recommendation option for an Amazon Elastic Block Store (Amazon EBS)
1249// instance.
1250type VolumeRecommendationOption struct {
1251
1252	// An array of objects that describe a volume configuration.
1253	Configuration *VolumeConfiguration
1254
1255	// The performance risk of the volume recommendation option. Performance risk is
1256	// the likelihood of the recommended volume type meeting the performance
1257	// requirement of your workload. The value ranges from 0 - 4, with 0 meaning that
1258	// the recommended resource is predicted to always provide enough hardware
1259	// capability. The higher the performance risk is, the more likely you should
1260	// validate whether the recommendation will meet the performance requirements of
1261	// your workload before migrating your resource.
1262	PerformanceRisk float64
1263
1264	// The rank of the volume recommendation option. The top recommendation option is
1265	// ranked as 1.
1266	Rank int32
1267
1268	noSmithyDocumentSerde
1269}
1270
1271type noSmithyDocumentSerde = smithydocument.NoSerde
1272