From 206a25b7f8d801a1bd7b81ae237f76d9e6a0ba5b Mon Sep 17 00:00:00 2001 From: awstools Date: Mon, 26 Aug 2024 18:17:07 +0000 Subject: [PATCH] feat(client-workspaces): This release adds support for creating and managing directories that use AWS IAM Identity Center as user identity source. Such directories can be used to create non-Active Directory domain joined WorkSpaces Personal.Updated RegisterWorkspaceDirectory and DescribeWorkspaceDirectories APIs. --- .../DescribeWorkspaceDirectoriesCommand.ts | 20 ++- .../RegisterWorkspaceDirectoryCommand.ts | 7 +- .../src/commands/RestoreWorkspaceCommand.ts | 2 +- .../src/commands/RevokeIpRulesCommand.ts | 2 +- .../client-workspaces/src/models/models_0.ts | 139 +++++++++++----- .../client-workspaces/src/models/models_1.ts | 38 +++++ .../src/protocols/Aws_json1_1.ts | 18 +- .../sdk-codegen/aws-models/workspaces.json | 157 ++++++++++++++++++ 8 files changed, 338 insertions(+), 45 deletions(-) diff --git a/clients/client-workspaces/src/commands/DescribeWorkspaceDirectoriesCommand.ts b/clients/client-workspaces/src/commands/DescribeWorkspaceDirectoriesCommand.ts index cb7491bce4af..d12eba58e6a4 100644 --- a/clients/client-workspaces/src/commands/DescribeWorkspaceDirectoriesCommand.ts +++ b/clients/client-workspaces/src/commands/DescribeWorkspaceDirectoriesCommand.ts @@ -49,6 +49,14 @@ export interface DescribeWorkspaceDirectoriesCommandOutput * ], * Limit: Number("int"), * NextToken: "STRING_VALUE", + * Filters: [ // DescribeWorkspaceDirectoriesFilterList + * { // DescribeWorkspaceDirectoriesFilter + * Name: "USER_IDENTITY_TYPE" || "WORKSPACE_TYPE", // required + * Values: [ // DescribeWorkspaceDirectoriesFilterValues // required + * "STRING_VALUE", + * ], + * }, + * ], * }; * const command = new DescribeWorkspaceDirectoriesCommand(input); * const response = await client.send(command); @@ -67,7 +75,7 @@ export interface DescribeWorkspaceDirectoriesCommandOutput * // ], * // CustomerUserName: "STRING_VALUE", * // IamRoleId: "STRING_VALUE", - * // DirectoryType: "SIMPLE_AD" || "AD_CONNECTOR" || "CUSTOMER_MANAGED", + * // DirectoryType: "SIMPLE_AD" || "AD_CONNECTOR" || "CUSTOMER_MANAGED" || "AWS_IAM_IDENTITY_CENTER", * // WorkspaceSecurityGroupId: "STRING_VALUE", * // State: "REGISTERING" || "REGISTERED" || "DEREGISTERING" || "DEREGISTERED" || "ERROR", * // WorkspaceCreationProperties: { // DefaultWorkspaceCreationProperties @@ -109,10 +117,18 @@ export interface DescribeWorkspaceDirectoriesCommandOutput * // Status: "DISABLED" || "ENABLED", * // CertificateAuthorityArn: "STRING_VALUE", * // }, + * // MicrosoftEntraConfig: { // MicrosoftEntraConfig + * // TenantId: "STRING_VALUE", + * // ApplicationConfigSecretArn: "STRING_VALUE", + * // }, * // WorkspaceDirectoryName: "STRING_VALUE", * // WorkspaceDirectoryDescription: "STRING_VALUE", - * // UserIdentityType: "CUSTOMER_MANAGED" || "AWS_DIRECTORY_SERVICE", + * // UserIdentityType: "CUSTOMER_MANAGED" || "AWS_DIRECTORY_SERVICE" || "AWS_IAM_IDENTITY_CENTER", * // WorkspaceType: "PERSONAL" || "POOLS", + * // IDCConfig: { // IDCConfig + * // InstanceArn: "STRING_VALUE", + * // ApplicationArn: "STRING_VALUE", + * // }, * // ActiveDirectoryConfig: { // ActiveDirectoryConfig * // DomainName: "STRING_VALUE", // required * // ServiceAccountSecretArn: "STRING_VALUE", // required diff --git a/clients/client-workspaces/src/commands/RegisterWorkspaceDirectoryCommand.ts b/clients/client-workspaces/src/commands/RegisterWorkspaceDirectoryCommand.ts index 56f00ae4dde8..12e950934052 100644 --- a/clients/client-workspaces/src/commands/RegisterWorkspaceDirectoryCommand.ts +++ b/clients/client-workspaces/src/commands/RegisterWorkspaceDirectoryCommand.ts @@ -55,7 +55,12 @@ export interface RegisterWorkspaceDirectoryCommandOutput extends RegisterWorkspa * ], * WorkspaceDirectoryName: "STRING_VALUE", * WorkspaceDirectoryDescription: "STRING_VALUE", - * UserIdentityType: "CUSTOMER_MANAGED" || "AWS_DIRECTORY_SERVICE", + * UserIdentityType: "CUSTOMER_MANAGED" || "AWS_DIRECTORY_SERVICE" || "AWS_IAM_IDENTITY_CENTER", + * IdcInstanceArn: "STRING_VALUE", + * MicrosoftEntraConfig: { // MicrosoftEntraConfig + * TenantId: "STRING_VALUE", + * ApplicationConfigSecretArn: "STRING_VALUE", + * }, * WorkspaceType: "PERSONAL" || "POOLS", * ActiveDirectoryConfig: { // ActiveDirectoryConfig * DomainName: "STRING_VALUE", // required diff --git a/clients/client-workspaces/src/commands/RestoreWorkspaceCommand.ts b/clients/client-workspaces/src/commands/RestoreWorkspaceCommand.ts index e07aa92a93d1..d6f1a2d98d40 100644 --- a/clients/client-workspaces/src/commands/RestoreWorkspaceCommand.ts +++ b/clients/client-workspaces/src/commands/RestoreWorkspaceCommand.ts @@ -5,7 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client"; import { MetadataBearer as __MetadataBearer } from "@smithy/types"; import { commonParams } from "../endpoint/EndpointParameters"; -import { RestoreWorkspaceRequest, RestoreWorkspaceResult } from "../models/models_0"; +import { RestoreWorkspaceRequest, RestoreWorkspaceResult } from "../models/models_1"; import { de_RestoreWorkspaceCommand, se_RestoreWorkspaceCommand } from "../protocols/Aws_json1_1"; import { ServiceInputTypes, ServiceOutputTypes, WorkSpacesClientResolvedConfig } from "../WorkSpacesClient"; diff --git a/clients/client-workspaces/src/commands/RevokeIpRulesCommand.ts b/clients/client-workspaces/src/commands/RevokeIpRulesCommand.ts index f224ee844961..881a808fab08 100644 --- a/clients/client-workspaces/src/commands/RevokeIpRulesCommand.ts +++ b/clients/client-workspaces/src/commands/RevokeIpRulesCommand.ts @@ -5,7 +5,7 @@ import { Command as $Command } from "@smithy/smithy-client"; import { MetadataBearer as __MetadataBearer } from "@smithy/types"; import { commonParams } from "../endpoint/EndpointParameters"; -import { RevokeIpRulesRequest, RevokeIpRulesResult } from "../models/models_0"; +import { RevokeIpRulesRequest, RevokeIpRulesResult } from "../models/models_1"; import { de_RevokeIpRulesCommand, se_RevokeIpRulesCommand } from "../protocols/Aws_json1_1"; import { ServiceInputTypes, ServiceOutputTypes, WorkSpacesClientResolvedConfig } from "../WorkSpacesClient"; diff --git a/clients/client-workspaces/src/models/models_0.ts b/clients/client-workspaces/src/models/models_0.ts index 86d68c67951c..bc472bbf6ec9 100644 --- a/clients/client-workspaces/src/models/models_0.ts +++ b/clients/client-workspaces/src/models/models_0.ts @@ -4372,6 +4372,39 @@ export interface DescribeWorkspaceBundlesResult { NextToken?: string; } +/** + * @public + * @enum + */ +export const DescribeWorkspaceDirectoriesFilterName = { + USER_IDENTITY_TYPE: "USER_IDENTITY_TYPE", + WORKSPACE_TYPE: "WORKSPACE_TYPE", +} as const; + +/** + * @public + */ +export type DescribeWorkspaceDirectoriesFilterName = + (typeof DescribeWorkspaceDirectoriesFilterName)[keyof typeof DescribeWorkspaceDirectoriesFilterName]; + +/** + *

Describes the filter conditions for the WorkSpaces to return.

+ * @public + */ +export interface DescribeWorkspaceDirectoriesFilter { + /** + *

The name of the WorkSpaces to filter.

+ * @public + */ + Name: DescribeWorkspaceDirectoriesFilterName | undefined; + + /** + *

The values for filtering WorkSpaces

+ * @public + */ + Values: string[] | undefined; +} + /** * @public */ @@ -4401,6 +4434,12 @@ export interface DescribeWorkspaceDirectoriesRequest { * @public */ NextToken?: string; + + /** + *

The filter condition for the WorkSpaces.

+ * @public + */ + Filters?: DescribeWorkspaceDirectoriesFilter[]; } /** @@ -4409,6 +4448,7 @@ export interface DescribeWorkspaceDirectoriesRequest { */ export const WorkspaceDirectoryType = { AD_CONNECTOR: "AD_CONNECTOR", + AWS_IAM_IDENTITY_CENTER: "AWS_IAM_IDENTITY_CENTER", CUSTOMER_MANAGED: "CUSTOMER_MANAGED", SIMPLE_AD: "SIMPLE_AD", } as const; @@ -4418,6 +4458,42 @@ export const WorkspaceDirectoryType = { */ export type WorkspaceDirectoryType = (typeof WorkspaceDirectoryType)[keyof typeof WorkspaceDirectoryType]; +/** + *

Specifies the configurations of the identity center.

+ * @public + */ +export interface IDCConfig { + /** + *

The Amazon Resource Name (ARN) of the identity center instance.

+ * @public + */ + InstanceArn?: string; + + /** + *

The Amazon Resource Name (ARN) of the application.

+ * @public + */ + ApplicationArn?: string; +} + +/** + *

Specifies the configurations of the Microsoft Entra.

+ * @public + */ +export interface MicrosoftEntraConfig { + /** + *

The identifier of the tenant.

+ * @public + */ + TenantId?: string; + + /** + *

The Amazon Resource Name (ARN) of the application config.

+ * @public + */ + ApplicationConfigSecretArn?: string; +} + /** * @public * @enum @@ -4692,6 +4768,7 @@ export type Tenancy = (typeof Tenancy)[keyof typeof Tenancy]; */ export const UserIdentityType = { AWS_DIRECTORY_SERVICE: "AWS_DIRECTORY_SERVICE", + AWS_IAM_IDENTITY_CENTER: "AWS_IAM_IDENTITY_CENTER", CUSTOMER_MANAGED: "CUSTOMER_MANAGED", } as const; @@ -4895,6 +4972,12 @@ export interface WorkspaceDirectory { */ CertificateBasedAuthProperties?: CertificateBasedAuthProperties; + /** + *

Specifies details about Microsoft Entra configurations.

+ * @public + */ + MicrosoftEntraConfig?: MicrosoftEntraConfig; + /** *

The name fo the WorkSpace directory.

* @public @@ -4919,6 +5002,12 @@ export interface WorkspaceDirectory { */ WorkspaceType?: WorkspaceType; + /** + *

Specifies details about identity center configurations.

+ * @public + */ + IDCConfig?: IDCConfig; + /** *

Information about the Active Directory config.

* @public @@ -6733,6 +6822,18 @@ export interface RegisterWorkspaceDirectoryRequest { */ UserIdentityType?: UserIdentityType; + /** + *

The Amazon Resource Name (ARN) of the identity center instance.

+ * @public + */ + IdcInstanceArn?: string; + + /** + *

The details about Microsoft Entra config.

+ * @public + */ + MicrosoftEntraConfig?: MicrosoftEntraConfig; + /** *

Indicates whether the directory's WorkSpace type is personal or pools.

* @public @@ -6834,41 +6935,3 @@ export interface RejectAccountLinkInvitationResult { */ AccountLink?: AccountLink; } - -/** - * @public - */ -export interface RestoreWorkspaceRequest { - /** - *

The identifier of the WorkSpace.

- * @public - */ - WorkspaceId: string | undefined; -} - -/** - * @public - */ -export interface RestoreWorkspaceResult {} - -/** - * @public - */ -export interface RevokeIpRulesRequest { - /** - *

The identifier of the group.

- * @public - */ - GroupId: string | undefined; - - /** - *

The rules to remove from the group.

- * @public - */ - UserRules: string[] | undefined; -} - -/** - * @public - */ -export interface RevokeIpRulesResult {} diff --git a/clients/client-workspaces/src/models/models_1.ts b/clients/client-workspaces/src/models/models_1.ts index 9a64e7c7d894..c1ffb4732465 100644 --- a/clients/client-workspaces/src/models/models_1.ts +++ b/clients/client-workspaces/src/models/models_1.ts @@ -9,6 +9,44 @@ import { WorkspacesPool, } from "./models_0"; +/** + * @public + */ +export interface RestoreWorkspaceRequest { + /** + *

The identifier of the WorkSpace.

+ * @public + */ + WorkspaceId: string | undefined; +} + +/** + * @public + */ +export interface RestoreWorkspaceResult {} + +/** + * @public + */ +export interface RevokeIpRulesRequest { + /** + *

The identifier of the group.

+ * @public + */ + GroupId: string | undefined; + + /** + *

The rules to remove from the group.

+ * @public + */ + UserRules: string[] | undefined; +} + +/** + * @public + */ +export interface RevokeIpRulesResult {} + /** *

Information used to start a WorkSpace.

* @public diff --git a/clients/client-workspaces/src/protocols/Aws_json1_1.ts b/clients/client-workspaces/src/protocols/Aws_json1_1.ts index 008caddb76b4..d12da88a6f1d 100644 --- a/clients/client-workspaces/src/protocols/Aws_json1_1.ts +++ b/clients/client-workspaces/src/protocols/Aws_json1_1.ts @@ -383,6 +383,7 @@ import { DescribeWorkspaceAssociationsResult, DescribeWorkspaceBundlesRequest, DescribeWorkspaceBundlesResult, + DescribeWorkspaceDirectoriesFilter, DescribeWorkspaceDirectoriesRequest, DescribeWorkspaceImagePermissionsRequest, DescribeWorkspaceImagesRequest, @@ -415,6 +416,7 @@ import { IpRuleItem, ListAccountLinksRequest, ListAvailableManagementCidrRangesRequest, + MicrosoftEntraConfig, MigrateWorkspaceRequest, ModifyAccountRequest, ModifyCertificateBasedAuthPropertiesRequest, @@ -444,8 +446,6 @@ import { ResourceLimitExceededException, ResourceNotFoundException, ResourceUnavailableException, - RestoreWorkspaceRequest, - RevokeIpRulesRequest, RootStorage, SamlProperties, SelfservicePermissions, @@ -478,6 +478,8 @@ import { WorkspacesPoolSession, } from "../models/models_0"; import { + RestoreWorkspaceRequest, + RevokeIpRulesRequest, StartRequest, StartWorkspacesPoolRequest, StartWorkspacesRequest, @@ -3966,6 +3968,12 @@ const se_DefaultImportClientBrandingAttributes = ( // se_DescribeWorkspaceBundlesRequest omitted. +// se_DescribeWorkspaceDirectoriesFilter omitted. + +// se_DescribeWorkspaceDirectoriesFilterList omitted. + +// se_DescribeWorkspaceDirectoriesFilterValues omitted. + // se_DescribeWorkspaceDirectoriesRequest omitted. // se_DescribeWorkspaceImagePermissionsRequest omitted. @@ -4051,6 +4059,8 @@ const se_IosImportClientBrandingAttributes = ( // se_LoginMessage omitted. +// se_MicrosoftEntraConfig omitted. + // se_MigrateWorkspaceRequest omitted. // se_ModifyAccountRequest omitted. @@ -4674,6 +4684,8 @@ const de_DisassociateWorkspaceApplicationResult = ( // de_GetAccountLinkResult omitted. +// de_IDCConfig omitted. + // de_ImagePermission omitted. // de_ImagePermissions omitted. @@ -4731,6 +4743,8 @@ const de_ImageResourceAssociationList = (output: any, context: __SerdeContext): // de_LoginMessage omitted. +// de_MicrosoftEntraConfig omitted. + // de_MigrateWorkspaceResult omitted. // de_ModificationState omitted. diff --git a/codegen/sdk-codegen/aws-models/workspaces.json b/codegen/sdk-codegen/aws-models/workspaces.json index b72a67b66d53..9c393e2bcbd0 100644 --- a/codegen/sdk-codegen/aws-models/workspaces.json +++ b/codegen/sdk-codegen/aws-models/workspaces.json @@ -4480,6 +4480,75 @@ } } }, + "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilter": { + "type": "structure", + "members": { + "Name": { + "target": "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterName", + "traits": { + "smithy.api#documentation": "

The name of the WorkSpaces to filter.

", + "smithy.api#required": {} + } + }, + "Values": { + "target": "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterValues", + "traits": { + "smithy.api#documentation": "

The values for filtering WorkSpaces

", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

Describes the filter conditions for the WorkSpaces to return.

" + } + }, + "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterList": { + "type": "list", + "member": { + "target": "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilter" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 25 + } + } + }, + "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterName": { + "type": "enum", + "members": { + "USER_IDENTITY_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "USER_IDENTITY_TYPE" + } + }, + "WORKSPACE_TYPE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "WORKSPACE_TYPE" + } + } + } + }, + "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterValue": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[0-9a-zA-Z\\*\\.\\\\/\\?-_]{0,64}$" + } + }, + "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterValues": { + "type": "list", + "member": { + "target": "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterValue" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 25 + } + } + }, "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesRequest": { "type": "structure", "members": { @@ -4506,6 +4575,12 @@ "traits": { "smithy.api#documentation": "

If you received a NextToken from a previous call that was paginated,\n provide this token to receive the next set of results.

" } + }, + "Filters": { + "target": "com.amazonaws.workspaces#DescribeWorkspaceDirectoriesFilterList", + "traits": { + "smithy.api#documentation": "

The filter condition for the WorkSpaces.

" + } } }, "traits": { @@ -5603,6 +5678,26 @@ "smithy.api#output": {} } }, + "com.amazonaws.workspaces#IDCConfig": { + "type": "structure", + "members": { + "InstanceArn": { + "target": "com.amazonaws.workspaces#ARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the identity center instance.

" + } + }, + "ApplicationArn": { + "target": "com.amazonaws.workspaces#ARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Specifies the configurations of the identity center.

" + } + }, "com.amazonaws.workspaces#IdleDisconnectTimeoutInSeconds": { "type": "integer", "traits": { @@ -6400,6 +6495,32 @@ } } }, + "com.amazonaws.workspaces#MicrosoftEntraConfig": { + "type": "structure", + "members": { + "TenantId": { + "target": "com.amazonaws.workspaces#MicrosoftEntraConfigTenantId", + "traits": { + "smithy.api#documentation": "

The identifier of the tenant.

" + } + }, + "ApplicationConfigSecretArn": { + "target": "com.amazonaws.workspaces#SecretsManagerArn", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the application config.

" + } + } + }, + "traits": { + "smithy.api#documentation": "

Specifies the configurations of the Microsoft Entra.

" + } + }, + "com.amazonaws.workspaces#MicrosoftEntraConfigTenantId": { + "type": "string", + "traits": { + "smithy.api#pattern": "^[a-zA-Z0-9-]{1,100}$" + } + }, "com.amazonaws.workspaces#MigrateWorkspace": { "type": "operation", "input": { @@ -7632,6 +7753,18 @@ "smithy.api#documentation": "

The type of identity management the user is using.

" } }, + "IdcInstanceArn": { + "target": "com.amazonaws.workspaces#ARN", + "traits": { + "smithy.api#documentation": "

The Amazon Resource Name (ARN) of the identity center instance.

" + } + }, + "MicrosoftEntraConfig": { + "target": "com.amazonaws.workspaces#MicrosoftEntraConfig", + "traits": { + "smithy.api#documentation": "

The details about Microsoft Entra config.

" + } + }, "WorkspaceType": { "target": "com.amazonaws.workspaces#WorkspaceType", "traits": { @@ -9457,6 +9590,12 @@ "traits": { "smithy.api#enumValue": "AWS_DIRECTORY_SERVICE" } + }, + "AWS_IAM_IDENTITY_CENTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWS_IAM_IDENTITY_CENTER" + } } } }, @@ -10256,6 +10395,12 @@ "smithy.api#documentation": "

The certificate-based authentication properties used to authenticate SAML 2.0 Identity Provider (IdP)\n user identities to Active Directory for WorkSpaces login.

" } }, + "MicrosoftEntraConfig": { + "target": "com.amazonaws.workspaces#MicrosoftEntraConfig", + "traits": { + "smithy.api#documentation": "

Specifies details about Microsoft Entra configurations.

" + } + }, "WorkspaceDirectoryName": { "target": "com.amazonaws.workspaces#WorkspaceDirectoryName", "traits": { @@ -10280,6 +10425,12 @@ "smithy.api#documentation": "

Indicates whether the directory's WorkSpace type is personal or pools.

" } }, + "IDCConfig": { + "target": "com.amazonaws.workspaces#IDCConfig", + "traits": { + "smithy.api#documentation": "

Specifies details about identity center configurations.

" + } + }, "ActiveDirectoryConfig": { "target": "com.amazonaws.workspaces#ActiveDirectoryConfig", "traits": { @@ -10382,6 +10533,12 @@ "traits": { "smithy.api#enumValue": "CUSTOMER_MANAGED" } + }, + "AWS_IAM_IDENTITY_CENTER": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "AWS_IAM_IDENTITY_CENTER" + } } } },