From bae6c592854d1e806e074a214bc833b5cbe4c939 Mon Sep 17 00:00:00 2001 From: awstools Date: Thu, 14 Jul 2022 18:26:00 +0000 Subject: [PATCH] feat(client-nimble): Amazon Nimble Studio adds support for IAM-based access to AWS resources for Nimble Studio components and custom studio components. Studio Component scripts use these roles on Nimble Studio workstation to mount filesystems, access S3 buckets, or other configured resources in the Studio's AWS account --- clients/client-nimble/src/Nimble.ts | 2 +- .../commands/ListStreamingSessionsCommand.ts | 2 +- clients/client-nimble/src/models/models_0.ts | 48 ++- .../src/protocols/Aws_restJson1.ts | 12 + codegen/sdk-codegen/aws-models/nimble.json | 343 ++++++++++-------- 5 files changed, 258 insertions(+), 149 deletions(-) diff --git a/clients/client-nimble/src/Nimble.ts b/clients/client-nimble/src/Nimble.ts index dff14a8cb643..f8b405dea48f 100644 --- a/clients/client-nimble/src/Nimble.ts +++ b/clients/client-nimble/src/Nimble.ts @@ -1192,7 +1192,7 @@ export class Nimble extends NimbleClient { } /** - *

Lists the streaming image resources in a studio.

+ *

Lists the streaming sessions in a studio.

*/ public listStreamingSessions( args: ListStreamingSessionsCommandInput, diff --git a/clients/client-nimble/src/commands/ListStreamingSessionsCommand.ts b/clients/client-nimble/src/commands/ListStreamingSessionsCommand.ts index 7c1e3821daa1..0a85501e3dea 100644 --- a/clients/client-nimble/src/commands/ListStreamingSessionsCommand.ts +++ b/clients/client-nimble/src/commands/ListStreamingSessionsCommand.ts @@ -23,7 +23,7 @@ export interface ListStreamingSessionsCommandInput extends ListStreamingSessions export interface ListStreamingSessionsCommandOutput extends ListStreamingSessionsResponse, __MetadataBearer {} /** - *

Lists the streaming image resources in a studio.

+ *

Lists the streaming sessions in a studio.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/models/models_0.ts b/clients/client-nimble/src/models/models_0.ts index 0a188240db9f..95fb810fe89d 100644 --- a/clients/client-nimble/src/models/models_0.ts +++ b/clients/client-nimble/src/models/models_0.ts @@ -500,12 +500,12 @@ export interface StreamConfigurationCreate { *

If the value is missing or set to 0, your sessions can’t be stopped. If you then call * StopStreamingSession, the session fails. If the time that a session * stays in the READY state exceeds the maxSessionLengthInMinutes value, the - * session will automatically be terminated by AWS (instead of stopped).

+ * session will automatically be terminated (instead of stopped).

*

If the value is set to a positive number, the session can be stopped. You can call * StopStreamingSession to stop sessions in the READY state. If the time * that a session stays in the READY state exceeds the * maxSessionLengthInMinutes value, the session will automatically be - * stopped by AWS (instead of terminated).

+ * stopped (instead of terminated).

*/ maxStoppedSessionLengthInMinutes?: number; @@ -658,12 +658,12 @@ export interface StreamConfiguration { *

If the value is missing or set to 0, your sessions can’t be stopped. If you then call * StopStreamingSession, the session fails. If the time that a session * stays in the READY state exceeds the maxSessionLengthInMinutes value, the - * session will automatically be terminated by AWS (instead of stopped).

+ * session will automatically be terminated (instead of stopped).

*

If the value is set to a positive number, the session can be stopped. You can call * StopStreamingSession to stop sessions in the READY state. If the time * that a session stays in the READY state exceeds the * maxSessionLengthInMinutes value, the session will automatically be - * stopped by AWS (instead of terminated).

+ * stopped (instead of terminated).

*/ maxStoppedSessionLengthInMinutes?: number; @@ -1932,6 +1932,16 @@ export interface CreateStudioComponentRequest { *

The type of the studio component.

*/ type: StudioComponentType | string | undefined; + + /** + *

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

+ */ + secureInitializationRoleArn?: string; + + /** + *

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

+ */ + runtimeRoleArn?: string; } export namespace CreateStudioComponentRequest { @@ -2078,6 +2088,16 @@ export interface StudioComponent { *

The user ID of the user that most recently updated the resource.

*/ updatedBy?: string; + + /** + *

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

+ */ + secureInitializationRoleArn?: string; + + /** + *

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

+ */ + runtimeRoleArn?: string; } export namespace StudioComponent { @@ -2840,6 +2860,16 @@ export interface LaunchProfileInitializationScript { *

The name for the studio component.

*/ studioComponentName?: string; + + /** + *

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

+ */ + secureInitializationRoleArn?: string; + + /** + *

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

+ */ + runtimeRoleArn?: string; } export namespace LaunchProfileInitializationScript { @@ -4163,6 +4193,16 @@ export interface UpdateStudioComponentRequest { *

The type of the studio component.

*/ type?: StudioComponentType | string; + + /** + *

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

+ */ + secureInitializationRoleArn?: string; + + /** + *

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

+ */ + runtimeRoleArn?: string; } export namespace UpdateStudioComponentRequest { diff --git a/clients/client-nimble/src/protocols/Aws_restJson1.ts b/clients/client-nimble/src/protocols/Aws_restJson1.ts index 37b5468f568d..8a774244c153 100644 --- a/clients/client-nimble/src/protocols/Aws_restJson1.ts +++ b/clients/client-nimble/src/protocols/Aws_restJson1.ts @@ -479,12 +479,16 @@ export const serializeAws_restJson1CreateStudioComponentCommand = async ( ), }), ...(input.name != null && { name: input.name }), + ...(input.runtimeRoleArn != null && { runtimeRoleArn: input.runtimeRoleArn }), ...(input.scriptParameters != null && { scriptParameters: serializeAws_restJson1StudioComponentScriptParameterKeyValueList( input.scriptParameters, context ), }), + ...(input.secureInitializationRoleArn != null && { + secureInitializationRoleArn: input.secureInitializationRoleArn, + }), ...(input.subtype != null && { subtype: input.subtype }), ...(input.tags != null && { tags: serializeAws_restJson1Tags(input.tags, context) }), ...(input.type != null && { type: input.type }), @@ -2060,12 +2064,16 @@ export const serializeAws_restJson1UpdateStudioComponentCommand = async ( ), }), ...(input.name != null && { name: input.name }), + ...(input.runtimeRoleArn != null && { runtimeRoleArn: input.runtimeRoleArn }), ...(input.scriptParameters != null && { scriptParameters: serializeAws_restJson1StudioComponentScriptParameterKeyValueList( input.scriptParameters, context ), }), + ...(input.secureInitializationRoleArn != null && { + secureInitializationRoleArn: input.secureInitializationRoleArn, + }), ...(input.subtype != null && { subtype: input.subtype }), ...(input.type != null && { type: input.type }), }); @@ -5801,7 +5809,9 @@ const deserializeAws_restJson1LaunchProfileInitializationScript = ( context: __SerdeContext ): LaunchProfileInitializationScript => { return { + runtimeRoleArn: __expectString(output.runtimeRoleArn), script: __expectString(output.script), + secureInitializationRoleArn: __expectString(output.secureInitializationRoleArn), studioComponentId: __expectString(output.studioComponentId), studioComponentName: __expectString(output.studioComponentName), } as any; @@ -6151,10 +6161,12 @@ const deserializeAws_restJson1StudioComponent = (output: any, context: __SerdeCo ? deserializeAws_restJson1StudioComponentInitializationScriptList(output.initializationScripts, context) : undefined, name: __expectString(output.name), + runtimeRoleArn: __expectString(output.runtimeRoleArn), scriptParameters: output.scriptParameters != null ? deserializeAws_restJson1StudioComponentScriptParameterKeyValueList(output.scriptParameters, context) : undefined, + secureInitializationRoleArn: __expectString(output.secureInitializationRoleArn), state: __expectString(output.state), statusCode: __expectString(output.statusCode), statusMessage: __expectString(output.statusMessage), diff --git a/codegen/sdk-codegen/aws-models/nimble.json b/codegen/sdk-codegen/aws-models/nimble.json index c926182937f6..5aaa4e2f1609 100644 --- a/codegen/sdk-codegen/aws-models/nimble.json +++ b/codegen/sdk-codegen/aws-models/nimble.json @@ -232,10 +232,9 @@ } }, "endpoint": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#SensitiveString", "traits": { - "smithy.api#documentation": "

The endpoint of the ComputeFarm that is accessed by the studio component\n resource.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The endpoint of the ComputeFarm that is accessed by the studio component\n resource.

" } } }, @@ -476,8 +475,7 @@ "description": { "target": "com.amazonaws.nimble#StreamingImageDescription", "traits": { - "smithy.api#documentation": "

A human-readable description of the streaming image.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

A human-readable description of the streaming image.

" } }, "ec2ImageId": { @@ -491,8 +489,7 @@ "target": "com.amazonaws.nimble#StreamingImageName", "traits": { "smithy.api#documentation": "

A friendly name for a streaming image resource.

", - "smithy.api#required": {}, - "smithy.api#sensitive": {} + "smithy.api#required": {} } }, "studioId": { @@ -822,7 +819,12 @@ "traits": { "aws.iam#actionPermissionDescription": "Grants permission to create a studio component. A studio component designates a network resource to which a launch profile will provide access", "aws.iam#conditionKeys": ["aws:TagKeys", "aws:RequestTag/${TagKey}"], - "aws.iam#requiredActions": ["ec2:DescribeSecurityGroups", "fsx:DescribeFileSystems", "ds:DescribeDirectories"], + "aws.iam#requiredActions": [ + "ec2:DescribeSecurityGroups", + "fsx:DescribeFileSystems", + "ds:DescribeDirectories", + "iam:PassRole" + ], "smithy.api#documentation": "

Creates a studio component resource.

", "smithy.api#http": { "method": "POST", @@ -909,6 +911,22 @@ "smithy.api#documentation": "

The type of the studio component.

", "smithy.api#required": {} } + }, + "secureInitializationRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

", + "smithy.api#tags": ["studio_component_roles"] + } + }, + "runtimeRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

", + "smithy.api#tags": ["studio_component_roles"] + } } }, "traits": { @@ -934,7 +952,7 @@ "type": "structure", "members": { "adminRoleArn": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#RoleArn", "traits": { "smithy.api#documentation": "

The IAM role that Studio Admins will assume when logging in to the Nimble Studio\n portal.

", "smithy.api#required": {} @@ -954,8 +972,7 @@ "traits": { "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

A friendly name for the studio.

", - "smithy.api#required": {}, - "smithy.api#sensitive": {} + "smithy.api#required": {} } }, "studioEncryptionConfiguration": { @@ -979,7 +996,7 @@ } }, "userRoleArn": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#RoleArn", "traits": { "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

The IAM role that Studio Users will assume when logging in to the Nimble Studio\n portal.

", @@ -1704,10 +1721,7 @@ }, "traits": { "aws.api#arn": { - "template": "eula-acceptance/{eulaAcceptanceId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "eula-acceptance/{eulaAcceptanceId}" }, "aws.iam#conditionKeys": [ "aws:ResourceTag/${TagKey}", @@ -1766,10 +1780,7 @@ }, "traits": { "aws.api#arn": { - "template": "eula/{eulaId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "eula/{eulaId}" }, "aws.iam#conditionKeys": ["aws:ResourceTag/${TagKey}", "aws:RequestTag/${TagKey}", "aws:TagKeys"], "aws.iam#disableConditionKeyInference": {}, @@ -1897,6 +1908,8 @@ "smithy.waiters#waitable": { "LaunchProfileReady": { "documentation": "Wait until a LaunchProfile is Ready. Use this after invoking CreateLaunchProfile or UpdateLaunchProfile", + "minDelay": 5, + "maxDelay": 750, "acceptors": [ { "state": "success", @@ -1928,12 +1941,12 @@ } } } - ], - "minDelay": 5, - "maxDelay": 750 + ] }, "LaunchProfileDeleted": { "documentation": "Wait until a LaunchProfile is Deleted. Use this after invoking DeleteLaunchProfile", + "minDelay": 5, + "maxDelay": 750, "acceptors": [ { "state": "success", @@ -1955,9 +1968,7 @@ } } } - ], - "minDelay": 5, - "maxDelay": 750 + ] } } } @@ -2442,6 +2453,8 @@ "smithy.api#readonly": {}, "smithy.waiters#waitable": { "StreamingSessionReady": { + "minDelay": 10, + "maxDelay": 1800, "documentation": "Wait until a StreamingSession is ready. Use this after invoking CreateStreamingSession, StartStreamingSession", "acceptors": [ { @@ -2474,11 +2487,11 @@ } } } - ], - "minDelay": 10, - "maxDelay": 1800 + ] }, "StreamingSessionStopped": { + "minDelay": 5, + "maxDelay": 900, "documentation": "Wait until a StreamingSessionStopped. Use this after invoking StopStreamingSession", "acceptors": [ { @@ -2501,11 +2514,11 @@ } } } - ], - "minDelay": 5, - "maxDelay": 900 + ] }, "StreamingSessionDeleted": { + "minDelay": 5, + "maxDelay": 900, "documentation": "Wait until a StreamingSessionDeleted. Use this after invoking Deletesession", "acceptors": [ { @@ -2528,9 +2541,7 @@ } } } - ], - "minDelay": 5, - "maxDelay": 900 + ] } } } @@ -2610,6 +2621,8 @@ "smithy.api#readonly": {}, "smithy.waiters#waitable": { "StreamingSessionStreamReady": { + "minDelay": 5, + "maxDelay": 150, "documentation": "Wait until a StreamingSessionStream is ready. Use this after invoking CreateStreamingSessionStream", "acceptors": [ { @@ -2632,9 +2645,7 @@ } } } - ], - "minDelay": 5, - "maxDelay": 150 + ] } } } @@ -2860,6 +2871,8 @@ ] }, "StudioComponentDeleted": { + "minDelay": 1, + "maxDelay": 120, "documentation": "Wait until a StudioComponent Deleted. Use this after invoking DeleteStudioComponent", "acceptors": [ { @@ -2882,8 +2895,7 @@ } } } - ], - "minDelay": 1 + ] } } } @@ -3330,6 +3342,20 @@ "traits": { "smithy.api#documentation": "

The name for the studio component.

" } + }, + "secureInitializationRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "smithy.api#documentation": "

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

", + "smithy.api#tags": ["studio_component_roles"] + } + }, + "runtimeRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "smithy.api#documentation": "

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

", + "smithy.api#tags": ["studio_component_roles"] + } } }, "traits": { @@ -3492,14 +3518,11 @@ ], "traits": { "aws.api#arn": { - "template": "launch-profile/{launchProfileId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "launch-profile/{launchProfileId}" }, "aws.cloudformation#cfnResource": { - "additionalSchemas": ["com.amazonaws.nimble#LaunchProfile"], - "name": "LaunchProfile" + "name": "LaunchProfile", + "additionalSchemas": ["com.amazonaws.nimble#LaunchProfile"] }, "aws.iam#conditionKeys": [ "aws:ResourceTag/${TagKey}", @@ -3752,10 +3775,9 @@ "type": "structure", "members": { "endpoint": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#SensitiveString", "traits": { - "smithy.api#documentation": "

The endpoint of the license service that is accessed by the studio component\n resource.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The endpoint of the license service that is accessed by the studio component\n resource.

" } } }, @@ -3990,8 +4012,8 @@ "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", - "items": "members", - "pageSize": "maxResults" + "pageSize": "maxResults", + "items": "members" }, "smithy.api#readonly": {} } @@ -4091,8 +4113,8 @@ "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", - "items": "launchProfiles", - "pageSize": "maxResults" + "pageSize": "maxResults", + "items": "launchProfiles" }, "smithy.api#readonly": {} } @@ -4280,7 +4302,7 @@ "traits": { "aws.iam#actionPermissionDescription": "Grants permission to list streaming sessions", "aws.iam#conditionKeys": ["nimble:createdBy", "nimble:ownedBy", "nimble:requesterPrincipalId"], - "smithy.api#documentation": "

Lists the streaming image resources in a studio.

", + "smithy.api#documentation": "

Lists the streaming sessions in a studio.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions", @@ -4394,8 +4416,8 @@ "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", - "items": "studioComponents", - "pageSize": "maxResults" + "pageSize": "maxResults", + "items": "studioComponents" }, "smithy.api#readonly": {} } @@ -4500,8 +4522,8 @@ "smithy.api#paginated": { "inputToken": "nextToken", "outputToken": "nextToken", - "items": "members", - "pageSize": "maxResults" + "pageSize": "maxResults", + "items": "members" }, "smithy.api#readonly": {} } @@ -5012,6 +5034,15 @@ "smithy.api#httpError": 404 } }, + "com.amazonaws.nimble#RoleArn": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 2048 + } + } + }, "com.amazonaws.nimble#ScriptParameterKey": { "type": "string", "traits": { @@ -5056,6 +5087,12 @@ "com.amazonaws.nimble#SecurityGroupId": { "type": "string" }, + "com.amazonaws.nimble#SensitiveString": { + "type": "string", + "traits": { + "smithy.api#sensitive": {} + } + }, "com.amazonaws.nimble#ServiceQuotaExceededException": { "type": "structure", "members": { @@ -5088,10 +5125,9 @@ "type": "structure", "members": { "endpoint": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#SensitiveString", "traits": { - "smithy.api#documentation": "

The endpoint of the shared file system that is accessed by the studio component\n resource.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The endpoint of the shared file system that is accessed by the studio component\n resource.

" } }, "fileSystemId": { @@ -5107,10 +5143,9 @@ } }, "shareName": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#SensitiveString", "traits": { - "smithy.api#documentation": "

The name of the file share.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The name of the file share.

" } }, "windowsMountDrive": { @@ -5397,7 +5432,7 @@ "maxStoppedSessionLengthInMinutes": { "target": "com.amazonaws.nimble#StreamConfigurationMaxStoppedSessionLengthInMinutes", "traits": { - "smithy.api#documentation": "

Integer that determines if you can start and stop your sessions and how long a session\n can stay in the STOPPED state. The default value is 0. The maximum value is 5760.

\n

If the value is missing or set to 0, your sessions can’t be stopped. If you then call\n StopStreamingSession, the session fails. If the time that a session\n stays in the READY state exceeds the maxSessionLengthInMinutes value, the\n session will automatically be terminated by AWS (instead of stopped).

\n

If the value is set to a positive number, the session can be stopped. You can call\n StopStreamingSession to stop sessions in the READY state. If the time\n that a session stays in the READY state exceeds the\n maxSessionLengthInMinutes value, the session will automatically be\n stopped by AWS (instead of terminated).

", + "smithy.api#documentation": "

Integer that determines if you can start and stop your sessions and how long a session\n can stay in the STOPPED state. The default value is 0. The maximum value is 5760.

\n

If the value is missing or set to 0, your sessions can’t be stopped. If you then call\n StopStreamingSession, the session fails. If the time that a session\n stays in the READY state exceeds the maxSessionLengthInMinutes value, the\n session will automatically be terminated (instead of stopped).

\n

If the value is set to a positive number, the session can be stopped. You can call\n StopStreamingSession to stop sessions in the READY state. If the time\n that a session stays in the READY state exceeds the\n maxSessionLengthInMinutes value, the session will automatically be\n stopped (instead of terminated).

", "smithy.api#tags": ["stop_start_streaming_session"] } }, @@ -5446,7 +5481,7 @@ "maxStoppedSessionLengthInMinutes": { "target": "com.amazonaws.nimble#StreamConfigurationMaxStoppedSessionLengthInMinutes", "traits": { - "smithy.api#documentation": "

Integer that determines if you can start and stop your sessions and how long a session\n can stay in the STOPPED state. The default value is 0. The maximum value is 5760.

\n

If the value is missing or set to 0, your sessions can’t be stopped. If you then call\n StopStreamingSession, the session fails. If the time that a session\n stays in the READY state exceeds the maxSessionLengthInMinutes value, the\n session will automatically be terminated by AWS (instead of stopped).

\n

If the value is set to a positive number, the session can be stopped. You can call\n StopStreamingSession to stop sessions in the READY state. If the time\n that a session stays in the READY state exceeds the\n maxSessionLengthInMinutes value, the session will automatically be\n stopped by AWS (instead of terminated).

", + "smithy.api#documentation": "

Integer that determines if you can start and stop your sessions and how long a session\n can stay in the STOPPED state. The default value is 0. The maximum value is 5760.

\n

If the value is missing or set to 0, your sessions can’t be stopped. If you then call\n StopStreamingSession, the session fails. If the time that a session\n stays in the READY state exceeds the maxSessionLengthInMinutes value, the\n session will automatically be terminated (instead of stopped).

\n

If the value is set to a positive number, the session can be stopped. You can call\n StopStreamingSession to stop sessions in the READY state. If the time\n that a session stays in the READY state exceeds the\n maxSessionLengthInMinutes value, the session will automatically be\n stopped (instead of terminated).

", "smithy.api#tags": ["stop_start_streaming_session"] } }, @@ -5530,8 +5565,7 @@ "target": "com.amazonaws.nimble#StreamingImageDescription", "traits": { "aws.cloudformation#cfnMutability": "full", - "smithy.api#documentation": "

A human-readable description of the streaming image.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

A human-readable description of the streaming image.

" } }, "ec2ImageId": { @@ -5559,8 +5593,7 @@ "target": "com.amazonaws.nimble#StreamingImageName", "traits": { "aws.cloudformation#cfnMutability": "full", - "smithy.api#documentation": "

A friendly name for a streaming image resource.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

A friendly name for a streaming image resource.

" } }, "owner": { @@ -5623,7 +5656,8 @@ "smithy.api#length": { "min": 0, "max": 256 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#StreamingImageEncryptionConfiguration": { @@ -5703,7 +5737,8 @@ "smithy.api#length": { "min": 0, "max": 64 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#StreamingImageOwner": { @@ -5743,14 +5778,11 @@ }, "traits": { "aws.api#arn": { - "template": "streaming-image/{streamingImageId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "streaming-image/{streamingImageId}" }, "aws.cloudformation#cfnResource": { - "additionalSchemas": ["com.amazonaws.nimble#StreamingImage"], - "name": "StreamingImage" + "name": "StreamingImage", + "additionalSchemas": ["com.amazonaws.nimble#StreamingImage"] }, "aws.iam#conditionKeys": [ "aws:ResourceTag/${TagKey}", @@ -5868,7 +5900,8 @@ "value": "g4dn.16xlarge", "name": "g4dn_16xlarge" } - ] + ], + "smithy.api#suppress": ["EnumTrait"] } }, "com.amazonaws.nimble#StreamingInstanceTypeList": { @@ -6061,10 +6094,7 @@ ], "traits": { "aws.api#arn": { - "template": "streaming-session/{sessionId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "streaming-session/{sessionId}" }, "aws.iam#conditionKeys": [ "aws:ResourceTag/${TagKey}", @@ -6309,10 +6339,9 @@ } }, "url": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#SensitiveString", "traits": { - "smithy.api#documentation": "

The URL to connect to this stream using the DCV client.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The URL to connect to this stream using the DCV client.

" } } }, @@ -6404,7 +6433,7 @@ "type": "structure", "members": { "adminRoleArn": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#RoleArn", "traits": { "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

The IAM role that studio admins assume when logging in to the Nimble Studio\n portal.

" @@ -6427,8 +6456,7 @@ "displayName": { "target": "com.amazonaws.nimble#StudioDisplayName", "traits": { - "smithy.api#documentation": "

A friendly name for the studio.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

A friendly name for the studio.

" } }, "homeRegion": { @@ -6507,7 +6535,7 @@ } }, "userRoleArn": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#RoleArn", "traits": { "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

The IAM role that studio users assume when logging in to the Nimble Studio\n portal.

" @@ -6644,6 +6672,22 @@ "aws.cloudformation#cfnExcludeProperty": {}, "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

" } + }, + "secureInitializationRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

", + "smithy.api#tags": ["studio_component_roles"] + } + }, + "runtimeRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

", + "smithy.api#tags": ["studio_component_roles"] + } } }, "traits": { @@ -6811,14 +6855,11 @@ }, "traits": { "aws.api#arn": { - "template": "studio-component/{studioComponentId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "studio-component/{studioComponentId}" }, "aws.cloudformation#cfnResource": { - "additionalSchemas": ["com.amazonaws.nimble#StudioComponent"], - "name": "StudioComponent" + "name": "StudioComponent", + "additionalSchemas": ["com.amazonaws.nimble#StudioComponent"] }, "aws.iam#conditionKeys": [ "aws:ResourceTag/${TagKey}", @@ -7082,7 +7123,8 @@ "smithy.api#length": { "min": 0, "max": 64 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#StudioEncryptionConfiguration": { @@ -7244,14 +7286,11 @@ ], "traits": { "aws.api#arn": { - "template": "studio/{studioId}", - "absolute": false, - "noAccount": false, - "noRegion": false + "template": "studio/{studioId}" }, "aws.cloudformation#cfnResource": { - "additionalSchemas": ["com.amazonaws.nimble#Studio"], - "name": "Studio" + "name": "Studio", + "additionalSchemas": ["com.amazonaws.nimble#Studio"] }, "aws.iam#conditionKeys": [ "aws:ResourceTag/${TagKey}", @@ -7900,15 +7939,13 @@ "description": { "target": "com.amazonaws.nimble#StreamingImageDescription", "traits": { - "smithy.api#documentation": "

The description.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The description.

" } }, "name": { "target": "com.amazonaws.nimble#StreamingImageName", "traits": { - "smithy.api#documentation": "

The name for the streaming image.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

The name for the streaming image.

" } }, "streamingImageId": { @@ -8012,7 +8049,12 @@ ], "traits": { "aws.iam#actionPermissionDescription": "Grants permission to update a studio component", - "aws.iam#requiredActions": ["ec2:DescribeSecurityGroups", "fsx:DescribeFileSystems", "ds:DescribeDirectories"], + "aws.iam#requiredActions": [ + "ec2:DescribeSecurityGroups", + "fsx:DescribeFileSystems", + "ds:DescribeDirectories", + "iam:PassRole" + ], "smithy.api#documentation": "

Updates a studio component resource.

", "smithy.api#http": { "method": "PATCH", @@ -8096,6 +8138,22 @@ "traits": { "smithy.api#documentation": "

The type of the studio component.

" } + }, + "secureInitializationRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

An IAM role attached to Studio Component when the system initialization script runs which give the studio component access to AWS resources when the system initialization script runs.

", + "smithy.api#tags": ["studio_component_roles"] + } + }, + "runtimeRoleArn": { + "target": "com.amazonaws.nimble#RoleArn", + "traits": { + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

An IAM role attached to a Studio Component that gives the studio component access to AWS resources at anytime while the instance is running.

", + "smithy.api#tags": ["studio_component_roles"] + } } } }, @@ -8114,7 +8172,7 @@ "type": "structure", "members": { "adminRoleArn": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#RoleArn", "traits": { "smithy.api#documentation": "

The IAM role that Studio Admins will assume when logging in to the Nimble Studio\n portal.

" } @@ -8131,8 +8189,7 @@ "displayName": { "target": "com.amazonaws.nimble#StudioDisplayName", "traits": { - "smithy.api#documentation": "

A friendly name for the studio.

", - "smithy.api#sensitive": {} + "smithy.api#documentation": "

A friendly name for the studio.

" } }, "studioId": { @@ -8144,7 +8201,7 @@ } }, "userRoleArn": { - "target": "com.amazonaws.nimble#String", + "target": "com.amazonaws.nimble#RoleArn", "traits": { "smithy.api#documentation": "

The IAM role that Studio Users will assume when logging in to the Nimble Studio\n portal.

" } @@ -8244,71 +8301,71 @@ "traits": { "aws.api#service": { "sdkId": "nimble", - "arnNamespace": "nimble", "cloudFormationName": "NimbleStudio", - "cloudTrailEventSource": "nimble.amazonaws.com", - "endpointPrefix": "nimble" + "arnNamespace": "nimble", + "cloudTrailEventSource": "nimble.amazonaws.com" }, "aws.auth#sigv4": { "name": "nimble" }, "aws.iam#defineConditionKeys": { - "nimble:ownedBy": { + "aws:ResourceTag/${TagKey}": { "type": "String", - "documentation": "Filters access by the ownedBy request parameter or the ID of the owner of the resource", - "externalDocumentation": "${ContextKeysDocRoot}" + "documentation": "Filters access by a tag key and value pair of a resource", + "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag" }, - "nimble:principalId": { + "aws:RequestTag/${TagKey}": { "type": "String", - "documentation": "Filters access by the principalId request parameter", - "externalDocumentation": "${ContextKeysDocRoot}" + "documentation": "Filters access by a tag key and value pair that is allowed in the request", + "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag" }, - "nimble:createdBy": { - "type": "String", - "documentation": "Filters access by the createdBy request parameter or the ID of the creator of the resource", - "externalDocumentation": "${ContextKeysDocRoot}" + "aws:TagKeys": { + "type": "ArrayOfString", + "documentation": "Filters access by a list of tag keys that are allowed in the request", + "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys" }, "nimble:studioId": { "type": "String", "documentation": "Filters access by a specific studio", "externalDocumentation": "${ContextKeysDocRoot}" }, - "aws:RequestTag/${TagKey}": { + "nimble:requesterPrincipalId": { "type": "String", - "documentation": "Filters access by a tag key and value pair that is allowed in the request", - "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag" + "documentation": "Filters access by the ID of the logged in user", + "externalDocumentation": "${ContextKeysDocRoot}" }, - "aws:TagKeys": { + "nimble:principalId": { "type": "String", - "documentation": "Filters access by a list of tag keys that are allowed in the request", - "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys" + "documentation": "Filters access by the principalId request parameter", + "externalDocumentation": "${ContextKeysDocRoot}" }, - "nimble:requesterPrincipalId": { + "nimble:createdBy": { "type": "String", - "documentation": "Filters access by the ID of the logged in user", + "documentation": "Filters access by the createdBy request parameter or the ID of the creator of the resource", "externalDocumentation": "${ContextKeysDocRoot}" }, - "aws:ResourceTag/${TagKey}": { + "nimble:ownedBy": { "type": "String", - "documentation": "Filters access by a tag key and value pair of a resource", - "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag" + "documentation": "Filters access by the ownedBy request parameter or the ID of the owner of the resource", + "externalDocumentation": "${ContextKeysDocRoot}" } }, "aws.protocols#restJson1": {}, "smithy.api#cors": { "additionalAllowedHeaders": [ + "*", + "content-type", "authorization", + "x-amz-date", "x-amz-content-sha256", + "x-amz-user-agent", "x-amzn-trace-id", - "x-amz-date", - "x-api-key", + "x-amz-dryrun", "x-amz-client-token", - "x-amz-user-agent", - "*", - "content-type", - "x-amz-dryrun" + "x-api-key" ], - "additionalExposedHeaders": ["x-amz-apigw-id", "x-amzn-trace-id", "x-amzn-errortype", "x-amzn-requestid"] + "additionalExposedHeaders": ["x-amzn-errortype", "x-amzn-requestid", "x-amzn-trace-id", "x-amz-apigw-id"], + "maxAge": 600 }, "smithy.api#documentation": "

Welcome to the Amazon Nimble Studio API reference. This API reference provides\n methods, schema, resources, parameters, and more to help you get the most out of Nimble\n Studio.

\n

Nimble Studio is a virtual studio that empowers visual effects, animation, and\n interactive content teams to create content securely within a scalable, private cloud\n service.

", "smithy.api#title": "AmazonNimbleStudio"