Skip to content

Commit 9c56b96

Browse files
author
awstools
committed
feat(client-auto-scaling): With this release, customers can prioritize launching instances into ODCRs using targets from ASGs or Launch Templates. Customers can express their baseline instances' CPU-performance in attribute-based Instance Requirements configuration by referencing an instance family that meets their needs.
1 parent 7cf2a36 commit 9c56b96

File tree

8 files changed

+787
-20
lines changed

8 files changed

+787
-20
lines changed

clients/client-auto-scaling/src/commands/CreateAutoScalingGroupCommand.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,15 @@ export interface CreateAutoScalingGroupCommandOutput extends __MetadataBearer {}
137137
* AllowedInstanceTypes: [ // AllowedInstanceTypes
138138
* "STRING_VALUE",
139139
* ],
140+
* BaselinePerformanceFactors: { // BaselinePerformanceFactorsRequest
141+
* Cpu: { // CpuPerformanceFactorRequest
142+
* References: [ // PerformanceFactorReferenceSetRequest
143+
* { // PerformanceFactorReferenceRequest
144+
* InstanceFamily: "STRING_VALUE",
145+
* },
146+
* ],
147+
* },
148+
* },
140149
* },
141150
* },
142151
* ],
@@ -216,6 +225,17 @@ export interface CreateAutoScalingGroupCommandOutput extends __MetadataBearer {}
216225
* ImpairedZoneHealthCheckBehavior: "ReplaceUnhealthy" || "IgnoreUnhealthy",
217226
* },
218227
* SkipZonalShiftValidation: true || false,
228+
* CapacityReservationSpecification: { // CapacityReservationSpecification
229+
* CapacityReservationPreference: "capacity-reservations-only" || "capacity-reservations-first" || "none" || "default",
230+
* CapacityReservationTarget: { // CapacityReservationTarget
231+
* CapacityReservationIds: [ // CapacityReservationIds
232+
* "STRING_VALUE",
233+
* ],
234+
* CapacityReservationResourceGroupArns: [ // CapacityReservationResourceGroupArns
235+
* "STRING_VALUE",
236+
* ],
237+
* },
238+
* },
219239
* };
220240
* const command = new CreateAutoScalingGroupCommand(input);
221241
* const response = await client.send(command);

clients/client-auto-scaling/src/commands/DescribeAutoScalingGroupsCommand.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,15 @@ export interface DescribeAutoScalingGroupsCommandOutput extends AutoScalingGroup
150150
* // AllowedInstanceTypes: [ // AllowedInstanceTypes
151151
* // "STRING_VALUE",
152152
* // ],
153+
* // BaselinePerformanceFactors: { // BaselinePerformanceFactorsRequest
154+
* // Cpu: { // CpuPerformanceFactorRequest
155+
* // References: [ // PerformanceFactorReferenceSetRequest
156+
* // { // PerformanceFactorReferenceRequest
157+
* // InstanceFamily: "STRING_VALUE",
158+
* // },
159+
* // ],
160+
* // },
161+
* // },
153162
* // },
154163
* // },
155164
* // ],
@@ -254,6 +263,17 @@ export interface DescribeAutoScalingGroupsCommandOutput extends AutoScalingGroup
254263
* // ZonalShiftEnabled: true || false,
255264
* // ImpairedZoneHealthCheckBehavior: "ReplaceUnhealthy" || "IgnoreUnhealthy",
256265
* // },
266+
* // CapacityReservationSpecification: { // CapacityReservationSpecification
267+
* // CapacityReservationPreference: "capacity-reservations-only" || "capacity-reservations-first" || "none" || "default",
268+
* // CapacityReservationTarget: { // CapacityReservationTarget
269+
* // CapacityReservationIds: [ // CapacityReservationIds
270+
* // "STRING_VALUE",
271+
* // ],
272+
* // CapacityReservationResourceGroupArns: [ // CapacityReservationResourceGroupArns
273+
* // "STRING_VALUE",
274+
* // ],
275+
* // },
276+
* // },
257277
* // },
258278
* // ],
259279
* // NextToken: "STRING_VALUE",

clients/client-auto-scaling/src/commands/DescribeInstanceRefreshesCommand.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,15 @@ export interface DescribeInstanceRefreshesCommandOutput extends DescribeInstance
181181
* // AllowedInstanceTypes: [ // AllowedInstanceTypes
182182
* // "STRING_VALUE",
183183
* // ],
184+
* // BaselinePerformanceFactors: { // BaselinePerformanceFactorsRequest
185+
* // Cpu: { // CpuPerformanceFactorRequest
186+
* // References: [ // PerformanceFactorReferenceSetRequest
187+
* // { // PerformanceFactorReferenceRequest
188+
* // InstanceFamily: "STRING_VALUE",
189+
* // },
190+
* // ],
191+
* // },
192+
* // },
184193
* // },
185194
* // },
186195
* // ],

clients/client-auto-scaling/src/commands/StartInstanceRefreshCommand.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,15 @@ export interface StartInstanceRefreshCommandOutput extends StartInstanceRefreshA
146146
* AllowedInstanceTypes: [ // AllowedInstanceTypes
147147
* "STRING_VALUE",
148148
* ],
149+
* BaselinePerformanceFactors: { // BaselinePerformanceFactorsRequest
150+
* Cpu: { // CpuPerformanceFactorRequest
151+
* References: [ // PerformanceFactorReferenceSetRequest
152+
* { // PerformanceFactorReferenceRequest
153+
* InstanceFamily: "STRING_VALUE",
154+
* },
155+
* ],
156+
* },
157+
* },
149158
* },
150159
* },
151160
* ],

clients/client-auto-scaling/src/commands/UpdateAutoScalingGroupCommand.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,15 @@ export interface UpdateAutoScalingGroupCommandOutput extends __MetadataBearer {}
166166
* AllowedInstanceTypes: [ // AllowedInstanceTypes
167167
* "STRING_VALUE",
168168
* ],
169+
* BaselinePerformanceFactors: { // BaselinePerformanceFactorsRequest
170+
* Cpu: { // CpuPerformanceFactorRequest
171+
* References: [ // PerformanceFactorReferenceSetRequest
172+
* { // PerformanceFactorReferenceRequest
173+
* InstanceFamily: "STRING_VALUE",
174+
* },
175+
* ],
176+
* },
177+
* },
169178
* },
170179
* },
171180
* ],
@@ -212,6 +221,17 @@ export interface UpdateAutoScalingGroupCommandOutput extends __MetadataBearer {}
212221
* ImpairedZoneHealthCheckBehavior: "ReplaceUnhealthy" || "IgnoreUnhealthy",
213222
* },
214223
* SkipZonalShiftValidation: true || false,
224+
* CapacityReservationSpecification: { // CapacityReservationSpecification
225+
* CapacityReservationPreference: "capacity-reservations-only" || "capacity-reservations-first" || "none" || "default",
226+
* CapacityReservationTarget: { // CapacityReservationTarget
227+
* CapacityReservationIds: [ // CapacityReservationIds
228+
* "STRING_VALUE",
229+
* ],
230+
* CapacityReservationResourceGroupArns: [ // CapacityReservationResourceGroupArns
231+
* "STRING_VALUE",
232+
* ],
233+
* },
234+
* },
215235
* };
216236
* const command = new UpdateAutoScalingGroupCommand(input);
217237
* const response = await client.send(command);

clients/client-auto-scaling/src/models/models_0.ts

Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,89 @@ export interface AvailabilityZoneImpairmentPolicy {
835835
ImpairedZoneHealthCheckBehavior?: ImpairedZoneHealthCheckBehavior | undefined;
836836
}
837837

838+
/**
839+
* @public
840+
* @enum
841+
*/
842+
export const CapacityReservationPreference = {
843+
CapacityReservationsFirst: "capacity-reservations-first",
844+
CapacityReservationsOnly: "capacity-reservations-only",
845+
Default: "default",
846+
None: "none",
847+
} as const;
848+
849+
/**
850+
* @public
851+
*/
852+
export type CapacityReservationPreference =
853+
(typeof CapacityReservationPreference)[keyof typeof CapacityReservationPreference];
854+
855+
/**
856+
* <p>
857+
* The target for the Capacity Reservation. Specify Capacity Reservations IDs or Capacity Reservation resource group ARNs.
858+
* </p>
859+
* @public
860+
*/
861+
export interface CapacityReservationTarget {
862+
/**
863+
* <p>
864+
* The Capacity Reservation IDs to launch instances into.
865+
* </p>
866+
* @public
867+
*/
868+
CapacityReservationIds?: string[] | undefined;
869+
870+
/**
871+
* <p>
872+
* The resource group ARNs of the Capacity Reservation to launch instances into.
873+
* </p>
874+
* @public
875+
*/
876+
CapacityReservationResourceGroupArns?: string[] | undefined;
877+
}
878+
879+
/**
880+
* <p>
881+
* Describes the Capacity Reservation preference and targeting options. If you specify <code>open</code> or <code>none</code> for <code>CapacityReservationPreference</code>, do not specify a <code>CapacityReservationTarget</code>.
882+
* </p>
883+
* @public
884+
*/
885+
export interface CapacityReservationSpecification {
886+
/**
887+
* <p>
888+
* The capacity reservation preference. The following options are available:
889+
* </p>
890+
* <ul>
891+
* <li>
892+
* <p>
893+
* <code>capacity-reservations-only</code> - Auto Scaling will only launch instances into a Capacity Reservation or Capacity Reservation resource group. If capacity isn't available, instances will fail to launch.</p>
894+
* </li>
895+
* <li>
896+
* <p>
897+
* <code>capacity-reservations-first</code> - Auto Scaling will try to launch instances into a Capacity Reservation or Capacity Reservation resource group first. If capacity isn't available, instances will run in On-Demand capacity.</p>
898+
* </li>
899+
* <li>
900+
* <p>
901+
* <code>none</code> - Auto Scaling will not launch instances into a Capacity Reservation. Instances will run in On-Demand capacity. </p>
902+
* </li>
903+
* <li>
904+
* <p>
905+
* <code>default</code> - Auto Scaling uses the Capacity Reservation preference from your launch template or an open Capacity Reservation.</p>
906+
* </li>
907+
* </ul>
908+
* @public
909+
*/
910+
CapacityReservationPreference?: CapacityReservationPreference | undefined;
911+
912+
/**
913+
* <p>
914+
* Describes a target Capacity Reservation or Capacity Reservation resource group.
915+
* </p>
916+
* @public
917+
*/
918+
CapacityReservationTarget?: CapacityReservationTarget | undefined;
919+
}
920+
838921
/**
839922
* <p>Describes an instance maintenance policy.</p>
840923
* <p>For more information, see <a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html">Set instance maintenance policy</a> in the
@@ -1139,6 +1222,115 @@ export interface BaselineEbsBandwidthMbpsRequest {
11391222
Max?: number | undefined;
11401223
}
11411224

1225+
/**
1226+
* <p>
1227+
* Specify an instance family to use as the baseline reference for CPU performance. All instance types that All instance types that match your specified attributes will be compared against the CPU performance of the
1228+
* referenced instance family, regardless of CPU manufacturer or architecture differences.
1229+
* </p>
1230+
* <note>
1231+
* <p>Currently only one instance family can be specified in the list.</p>
1232+
* </note>
1233+
* @public
1234+
*/
1235+
export interface PerformanceFactorReferenceRequest {
1236+
/**
1237+
* <p>
1238+
* The instance family to use as a baseline reference.
1239+
* </p>
1240+
* <note>
1241+
* <p>Make sure that you specify the correct value for the instance family. The instance family is everything before the period (.) in the instance type name. For example, in the instance <code>c6i.large</code>, the
1242+
* instance family is <code>c6i</code>, not <code>c6</code>. For more information, see <a href="https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-type-names.html">Amazon EC2 instance type naming conventions</a> in
1243+
* <i>Amazon EC2 Instance Types</i>.</p>
1244+
* </note>
1245+
* <p>The following instance types are <i>not supported</i> for performance protection.</p>
1246+
* <ul>
1247+
* <li>
1248+
* <p>
1249+
* <code>c1</code>
1250+
* </p>
1251+
* </li>
1252+
* <li>
1253+
* <p>
1254+
* <code>g3| g3s</code>
1255+
* </p>
1256+
* </li>
1257+
* <li>
1258+
* <p>
1259+
* <code>hpc7g</code>
1260+
* </p>
1261+
* </li>
1262+
* <li>
1263+
* <p>
1264+
* <code>m1| m2</code>
1265+
* </p>
1266+
* </li>
1267+
* <li>
1268+
* <p>
1269+
* <code>mac1 | mac2 | mac2-m1ultra | mac2-m2 | mac2-m2pro</code>
1270+
* </p>
1271+
* </li>
1272+
* <li>
1273+
* <p>
1274+
* <code>p3dn | p4d | p5</code>
1275+
* </p>
1276+
* </li>
1277+
* <li>
1278+
* <p>
1279+
* <code>t1</code>
1280+
* </p>
1281+
* </li>
1282+
* <li>
1283+
* <p>
1284+
* <code>u-12tb1 | u-18tb1 | u-24tb1 | u-3tb1 | u-6tb1 | u-9tb1 | u7i-12tb | u7in-16tb | u7in-24tb | u7in-32tb</code>
1285+
* </p>
1286+
* </li>
1287+
* </ul>
1288+
* <p>If you performance protection by specifying a supported instance family, the returned instance types will exclude the preceding unsupported instance families.</p>
1289+
* <p>If you specify an unsupported instance family as a value for baseline performance, the API returns an empty response.</p>
1290+
* @public
1291+
*/
1292+
InstanceFamily?: string | undefined;
1293+
}
1294+
1295+
/**
1296+
* <p>
1297+
* The CPU performance to consider, using an instance family as the baseline reference.
1298+
* </p>
1299+
* @public
1300+
*/
1301+
export interface CpuPerformanceFactorRequest {
1302+
/**
1303+
* <p>
1304+
* Specify an instance family to use as the baseline reference for CPU performance. All instance types that match your specified attributes will be compared against the CPU performance of the
1305+
* referenced instance family, regardless of CPU manufacturer or architecture differences.
1306+
* </p>
1307+
* <note>
1308+
* <p>Currently only one instance family can be specified in the list.</p>
1309+
* </note>
1310+
* @public
1311+
*/
1312+
References?: PerformanceFactorReferenceRequest[] | undefined;
1313+
}
1314+
1315+
/**
1316+
* <p>
1317+
* The baseline performance to consider, using an instance family as a baseline reference. The instance family establishes the lowest acceptable level of performance. Auto Scaling uses
1318+
* this baseline to guide instance type selection, but there is no guarantee that the selected instance types will always exceed the baseline for every application.
1319+
* </p>
1320+
* <p>Currently, this parameter only supports CPU performance as a baseline performance factor. For example, specifying <code>c6i</code> uses the CPU performance of the <code>c6i</code>
1321+
* family as the baseline reference.</p>
1322+
* @public
1323+
*/
1324+
export interface BaselinePerformanceFactorsRequest {
1325+
/**
1326+
* <p>
1327+
* The CPU performance to consider, using an instance family as the baseline reference.
1328+
* </p>
1329+
* @public
1330+
*/
1331+
Cpu?: CpuPerformanceFactorRequest | undefined;
1332+
}
1333+
11421334
/**
11431335
* @public
11441336
* @enum
@@ -1718,6 +1910,14 @@ export interface InstanceRequirements {
17181910
* @public
17191911
*/
17201912
AllowedInstanceTypes?: string[] | undefined;
1913+
1914+
/**
1915+
* <p>
1916+
* The baseline performance factors for the instance requirements.
1917+
* </p>
1918+
* @public
1919+
*/
1920+
BaselinePerformanceFactors?: BaselinePerformanceFactorsRequest | undefined;
17211921
}
17221922

17231923
/**
@@ -2217,6 +2417,14 @@ export interface CreateAutoScalingGroupType {
22172417
* @public
22182418
*/
22192419
SkipZonalShiftValidation?: boolean | undefined;
2420+
2421+
/**
2422+
* <p>
2423+
* The capacity reservation specification for the Auto Scaling group.
2424+
* </p>
2425+
* @public
2426+
*/
2427+
CapacityReservationSpecification?: CapacityReservationSpecification | undefined;
22202428
}
22212429

22222430
/**
@@ -3611,6 +3819,14 @@ export interface AutoScalingGroup {
36113819
* @public
36123820
*/
36133821
AvailabilityZoneImpairmentPolicy?: AvailabilityZoneImpairmentPolicy | undefined;
3822+
3823+
/**
3824+
* <p>
3825+
* The capacity reservation specification.
3826+
* </p>
3827+
* @public
3828+
*/
3829+
CapacityReservationSpecification?: CapacityReservationSpecification | undefined;
36143830
}
36153831

36163832
/**
@@ -8396,4 +8612,12 @@ export interface UpdateAutoScalingGroupType {
83968612
* @public
83978613
*/
83988614
SkipZonalShiftValidation?: boolean | undefined;
8615+
8616+
/**
8617+
* <p>
8618+
* The capacity reservation specification for the Auto Scaling group.
8619+
* </p>
8620+
* @public
8621+
*/
8622+
CapacityReservationSpecification?: CapacityReservationSpecification | undefined;
83998623
}

0 commit comments

Comments
 (0)