Skip to content

Commit

Permalink
feat(client-appstream): This release introduces multi-session fleets,…
Browse files Browse the repository at this point in the history
… allowing customers to provision more than one user session on a single fleet instance.
  • Loading branch information
awstools committed Oct 26, 2023
1 parent a9637b1 commit 8e3c248
Show file tree
Hide file tree
Showing 7 changed files with 167 additions and 12 deletions.
9 changes: 8 additions & 1 deletion clients/client-appstream/src/commands/CreateFleetCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ export interface CreateFleetCommandOutput extends CreateFleetResult, __MetadataB
* InstanceType: "STRING_VALUE", // required
* FleetType: "ALWAYS_ON" || "ON_DEMAND" || "ELASTIC",
* ComputeCapacity: { // ComputeCapacity
* DesiredInstances: Number("int"), // required
* DesiredInstances: Number("int"),
* DesiredSessions: Number("int"),
* },
* VpcConfig: { // VpcConfig
* SubnetIds: [ // SubnetIdList
Expand Down Expand Up @@ -85,6 +86,7 @@ export interface CreateFleetCommandOutput extends CreateFleetResult, __MetadataB
* S3Bucket: "STRING_VALUE", // required
* S3Key: "STRING_VALUE",
* },
* MaxSessionsPerInstance: Number("int"),
* };
* const command = new CreateFleetCommand(input);
* const response = await client.send(command);
Expand All @@ -103,6 +105,10 @@ export interface CreateFleetCommandOutput extends CreateFleetResult, __MetadataB
* // Running: Number("int"),
* // InUse: Number("int"),
* // Available: Number("int"),
* // DesiredUserSessions: Number("int"),
* // AvailableUserSessions: Number("int"),
* // ActiveUserSessions: Number("int"),
* // ActualUserSessions: Number("int"),
* // },
* // MaxUserDurationInSeconds: Number("int"),
* // DisconnectTimeoutInSeconds: Number("int"),
Expand Down Expand Up @@ -139,6 +145,7 @@ export interface CreateFleetCommandOutput extends CreateFleetResult, __MetadataB
* // S3Bucket: "STRING_VALUE", // required
* // S3Key: "STRING_VALUE",
* // },
* // MaxSessionsPerInstance: Number("int"),
* // },
* // };
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ export interface DescribeFleetsCommandOutput extends DescribeFleetsResult, __Met
* // Running: Number("int"),
* // InUse: Number("int"),
* // Available: Number("int"),
* // DesiredUserSessions: Number("int"),
* // AvailableUserSessions: Number("int"),
* // ActiveUserSessions: Number("int"),
* // ActualUserSessions: Number("int"),
* // },
* // MaxUserDurationInSeconds: Number("int"),
* // DisconnectTimeoutInSeconds: Number("int"),
Expand Down Expand Up @@ -104,6 +108,7 @@ export interface DescribeFleetsCommandOutput extends DescribeFleetsResult, __Met
* // S3Bucket: "STRING_VALUE", // required
* // S3Key: "STRING_VALUE",
* // },
* // MaxSessionsPerInstance: Number("int"),
* // },
* // ],
* // NextToken: "STRING_VALUE",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export interface DescribeSessionsCommandOutput extends DescribeSessionsResult, _
* NextToken: "STRING_VALUE",
* Limit: Number("int"),
* AuthenticationType: "API" || "SAML" || "USERPOOL" || "AWS_AD",
* InstanceId: "STRING_VALUE",
* };
* const command = new DescribeSessionsCommand(input);
* const response = await client.send(command);
Expand All @@ -72,6 +73,7 @@ export interface DescribeSessionsCommandOutput extends DescribeSessionsResult, _
* // EniPrivateIpAddress: "STRING_VALUE",
* // EniId: "STRING_VALUE",
* // },
* // InstanceId: "STRING_VALUE",
* // },
* // ],
* // NextToken: "STRING_VALUE",
Expand Down
11 changes: 9 additions & 2 deletions clients/client-appstream/src/commands/UpdateFleetCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ export interface UpdateFleetCommandOutput extends UpdateFleetResult, __MetadataB
* Name: "STRING_VALUE",
* InstanceType: "STRING_VALUE",
* ComputeCapacity: { // ComputeCapacity
* DesiredInstances: Number("int"), // required
* DesiredInstances: Number("int"),
* DesiredSessions: Number("int"),
* },
* VpcConfig: { // VpcConfig
* SubnetIds: [ // SubnetIdList
Expand All @@ -93,7 +94,7 @@ export interface UpdateFleetCommandOutput extends UpdateFleetResult, __MetadataB
* },
* IdleDisconnectTimeoutInSeconds: Number("int"),
* AttributesToDelete: [ // FleetAttributes
* "VPC_CONFIGURATION" || "VPC_CONFIGURATION_SECURITY_GROUP_IDS" || "DOMAIN_JOIN_INFO" || "IAM_ROLE_ARN" || "USB_DEVICE_FILTER_STRINGS" || "SESSION_SCRIPT_S3_LOCATION",
* "VPC_CONFIGURATION" || "VPC_CONFIGURATION_SECURITY_GROUP_IDS" || "DOMAIN_JOIN_INFO" || "IAM_ROLE_ARN" || "USB_DEVICE_FILTER_STRINGS" || "SESSION_SCRIPT_S3_LOCATION" || "MAX_SESSIONS_PER_INSTANCE",
* ],
* IamRoleArn: "STRING_VALUE",
* StreamView: "APP" || "DESKTOP",
Expand All @@ -106,6 +107,7 @@ export interface UpdateFleetCommandOutput extends UpdateFleetResult, __MetadataB
* S3Bucket: "STRING_VALUE", // required
* S3Key: "STRING_VALUE",
* },
* MaxSessionsPerInstance: Number("int"),
* };
* const command = new UpdateFleetCommand(input);
* const response = await client.send(command);
Expand All @@ -124,6 +126,10 @@ export interface UpdateFleetCommandOutput extends UpdateFleetResult, __MetadataB
* // Running: Number("int"),
* // InUse: Number("int"),
* // Available: Number("int"),
* // DesiredUserSessions: Number("int"),
* // AvailableUserSessions: Number("int"),
* // ActiveUserSessions: Number("int"),
* // ActualUserSessions: Number("int"),
* // },
* // MaxUserDurationInSeconds: Number("int"),
* // DisconnectTimeoutInSeconds: Number("int"),
Expand Down Expand Up @@ -160,6 +166,7 @@ export interface UpdateFleetCommandOutput extends UpdateFleetResult, __MetadataB
* // S3Bucket: "STRING_VALUE", // required
* // S3Key: "STRING_VALUE",
* // },
* // MaxSessionsPerInstance: Number("int"),
* // },
* // };
*
Expand Down
72 changes: 70 additions & 2 deletions clients/client-appstream/src/models/models_0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1224,7 +1224,14 @@ export interface ComputeCapacity {
* @public
* <p>The desired number of streaming instances.</p>
*/
DesiredInstances: number | undefined;
DesiredInstances?: number;

/**
* @public
* <p>The desired number of user sessions for a multi-session fleet. This is not allowed for single-session fleets.</p>
* <p>When you create a fleet, you must set either the DesiredSessions or DesiredInstances attribute, based on the type of fleet you create. You can’t define both attributes or leave both attributes blank.</p>
*/
DesiredSessions?: number;
}

/**
Expand Down Expand Up @@ -1256,6 +1263,36 @@ export interface ComputeCapacityStatus {
* sessions.</p>
*/
Available?: number;

/**
* @public
* <p>The total number of sessions slots that are either running or pending. This represents the total number of concurrent streaming sessions your fleet can support in a steady state.</p>
* <p>DesiredUserSessionCapacity = ActualUserSessionCapacity + PendingUserSessionCapacity</p>
* <p>This only applies to multi-session fleets.</p>
*/
DesiredUserSessions?: number;

/**
* @public
* <p>The number of idle session slots currently available for user sessions.</p>
* <p>AvailableUserSessionCapacity = ActualUserSessionCapacity - ActiveUserSessions</p>
* <p>This only applies to multi-session fleets.</p>
*/
AvailableUserSessions?: number;

/**
* @public
* <p>The number of user sessions currently being used for streaming sessions. This only applies to multi-session fleets.</p>
*/
ActiveUserSessions?: number;

/**
* @public
* <p>The total number of session slots that are available for streaming or are currently streaming.</p>
* <p>ActualUserSessionCapacity = AvailableUserSessionCapacity + ActiveUserSessions</p>
* <p>This only applies to multi-session fleets.</p>
*/
ActualUserSessions?: number;
}

/**
Expand Down Expand Up @@ -2209,7 +2246,7 @@ export interface CreateFleetRequest {
/**
* @public
* <p>The maximum amount of time that a streaming session can remain active, in seconds. If users are still connected to a streaming instance five minutes before this limit is reached, they are prompted to save any open documents before being disconnected. After this time elapses, the instance is terminated and replaced by a new instance.</p>
* <p>Specify a value between 600 and 360000.</p>
* <p>Specify a value between 600 and 432000.</p>
*/
MaxUserDurationInSeconds?: number;

Expand Down Expand Up @@ -2312,6 +2349,12 @@ export interface CreateFleetRequest {
* <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
*/
SessionScriptS3Location?: S3Location;

/**
* @public
* <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
*/
MaxSessionsPerInstance?: number;
}

/**
Expand Down Expand Up @@ -2627,6 +2670,12 @@ export interface Fleet {
* <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets.</p>
*/
SessionScriptS3Location?: S3Location;

/**
* @public
* <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
*/
MaxSessionsPerInstance?: number;
}

/**
Expand Down Expand Up @@ -4684,6 +4733,12 @@ export interface DescribeSessionsRequest {
* The default is to authenticate users using a streaming URL.</p>
*/
AuthenticationType?: AuthenticationType;

/**
* @public
* <p>The identifier for the instance hosting the session.</p>
*/
InstanceId?: string;
}

/**
Expand Down Expand Up @@ -4780,6 +4835,12 @@ export interface Session {
* <p>The network details for the streaming session.</p>
*/
NetworkAccessConfiguration?: NetworkAccessConfiguration;

/**
* @public
* <p>The identifier for the instance hosting the session.</p>
*/
InstanceId?: string;
}

/**
Expand Down Expand Up @@ -5284,6 +5345,7 @@ export interface ExpireSessionResult {}
export const FleetAttribute = {
DOMAIN_JOIN_INFO: "DOMAIN_JOIN_INFO",
IAM_ROLE_ARN: "IAM_ROLE_ARN",
MAX_SESSIONS_PER_INSTANCE: "MAX_SESSIONS_PER_INSTANCE",
SESSION_SCRIPT_S3_LOCATION: "SESSION_SCRIPT_S3_LOCATION",
USB_DEVICE_FILTER_STRINGS: "USB_DEVICE_FILTER_STRINGS",
VPC_CONFIGURATION: "VPC_CONFIGURATION",
Expand Down Expand Up @@ -6142,6 +6204,12 @@ export interface UpdateFleetRequest {
* <p>The S3 location of the session scripts configuration zip file. This only applies to Elastic fleets. </p>
*/
SessionScriptS3Location?: S3Location;

/**
* @public
* <p>The maximum number of user sessions on an instance. This only applies to multi-session fleets.</p>
*/
MaxSessionsPerInstance?: number;
}

/**
Expand Down
2 changes: 2 additions & 0 deletions clients/client-appstream/src/protocols/Aws_json1_1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6359,6 +6359,7 @@ const de_Fleet = (output: any, context: __SerdeContext): Fleet => {
ImageName: __expectString,
InstanceType: __expectString,
MaxConcurrentSessions: __expectInt32,
MaxSessionsPerInstance: __expectInt32,
MaxUserDurationInSeconds: __expectInt32,
Name: __expectString,
Platform: __expectString,
Expand Down Expand Up @@ -6549,6 +6550,7 @@ const de_Session = (output: any, context: __SerdeContext): Session => {
ConnectionState: __expectString,
FleetName: __expectString,
Id: __expectString,
InstanceId: __expectString,
MaxExpirationTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),
NetworkAccessConfiguration: _json,
StackName: __expectString,
Expand Down
Loading

0 comments on commit 8e3c248

Please sign in to comment.