import { AccessLevelList } from '../shared/access-level' ; import { PolicyStatement , Operator } from '../shared' ; param sid export class Nimble extends PolicyStatement { public servicePrefix = 'nimble' ; param sid constructor ( sid ? ) { super ( sid ) ; } /**
     * Grants permission to accept EULAs
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_AcceptEulas.html
     */ public toAcceptEulas ( ) { return this . to ( 'AcceptEulas' ) ; } /**
     * Grants permission to create a launch profile
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifAwsTagKeys()
     * - .ifAwsRequestTag()
     *
     * Dependent actions:
     * - ec2:CreateNetworkInterface
     * - ec2:DescribeNatGateways
     * - ec2:DescribeNetworkAcls
     * - ec2:DescribeRouteTables
     * - ec2:DescribeSubnets
     * - ec2:DescribeVpcEndpoints
     * - ec2:RunInstances
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_CreateLaunchProfile.html
     */ public toCreateLaunchProfile ( ) { return this . to ( 'CreateLaunchProfile' ) ; } /**
     * Grants permission to create a streaming image
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifAwsTagKeys()
     * - .ifAwsRequestTag()
     *
     * Dependent actions:
     * - ec2:DescribeImages
     * - ec2:DescribeSnapshots
     * - ec2:ModifyInstanceAttribute
     * - ec2:ModifySnapshotAttribute
     * - ec2:RegisterImage
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_CreateStreamingImage.html
     */ public toCreateStreamingImage ( ) { return this . to ( 'CreateStreamingImage' ) ; } /**
     * Grants permission to create a streaming session
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifAwsTagKeys()
     * - .ifAwsRequestTag()
     *
     * Dependent actions:
     * - ec2:CreateNetworkInterface
     * - ec2:CreateNetworkInterfacePermission
     * - nimble:GetLaunchProfile
     * - nimble:GetLaunchProfileInitialization
     * - nimble:ListEulaAcceptances
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_CreateStreamingSession.html
     */ public toCreateStreamingSession ( ) { return this . to ( 'CreateStreamingSession' ) ; } /**
     * Grants permission to create a StreamingSessionStream
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifRequesterPrincipalId()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_CreateStreamingSessionStream.html
     */ public toCreateStreamingSessionStream ( ) { return this . to ( 'CreateStreamingSessionStream' ) ; } /**
     * Grants permission to create a studio
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifAwsTagKeys()
     * - .ifAwsRequestTag()
     *
     * Dependent actions:
     * - iam:PassRole
     * - sso:CreateManagedApplicationInstance
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_CreateStudio.html
     */ public toCreateStudio ( ) { return this . to ( 'CreateStudio' ) ; } /**
     * Grants permission to create a studio component. A studio component designates a network resource to which a launch profile will provide access
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifAwsTagKeys()
     * - .ifAwsRequestTag()
     *
     * Dependent actions:
     * - ds:AuthorizeApplication
     * - ds:DescribeDirectories
     * - ec2:DescribeSecurityGroups
     * - fsx:DescribeFileSystems
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_CreateStudioComponent.html
     */ public toCreateStudioComponent ( ) { return this . to ( 'CreateStudioComponent' ) ; } /**
     * Grants permission to delete a launch profile
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteLaunchProfile.html
     */ public toDeleteLaunchProfile ( ) { return this . to ( 'DeleteLaunchProfile' ) ; } /**
     * Grants permission to delete a launch profile member
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteLaunchProfileMember.html
     */ public toDeleteLaunchProfileMember ( ) { return this . to ( 'DeleteLaunchProfileMember' ) ; } /**
     * Grants permission to delete a streaming image
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - ec2:DeleteSnapshot
     * - ec2:DeregisterImage
     * - ec2:ModifyInstanceAttribute
     * - ec2:ModifySnapshotAttribute
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteStreamingImage.html
     */ public toDeleteStreamingImage ( ) { return this . to ( 'DeleteStreamingImage' ) ; } /**
     * Grants permission to delete a streaming session
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifRequesterPrincipalId()
     *
     * Dependent actions:
     * - ec2:DeleteNetworkInterface
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteStreamingSession.html
     */ public toDeleteStreamingSession ( ) { return this . to ( 'DeleteStreamingSession' ) ; } /**
     * Grants permission to delete a studio
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - sso:DeleteManagedApplicationInstance
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteStudio.html
     */ public toDeleteStudio ( ) { return this . to ( 'DeleteStudio' ) ; } /**
     * Grants permission to delete a studio component
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - ds:UnauthorizeApplication
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteStudioComponent.html
     */ public toDeleteStudioComponent ( ) { return this . to ( 'DeleteStudioComponent' ) ; } /**
     * Grants permission to delete a studio member
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_DeleteStudioMember.html
     */ public toDeleteStudioMember ( ) { return this . to ( 'DeleteStudioMember' ) ; } /**
     * Grants permission to get a EULA
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetEula.html
     */ public toGetEula ( ) { return this . to ( 'GetEula' ) ; } /**
     * Grants permission to allow Nimble Studio portal to show the appropriate features for this account
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/userguide/security-iam-service-with-iam.html
     */ public toGetFeatureMap ( ) { return this . to ( 'GetFeatureMap' ) ; } /**
     * Grants permission to get a launch profile
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetLaunchProfile.html
     */ public toGetLaunchProfile ( ) { return this . to ( 'GetLaunchProfile' ) ; } /**
     * Grants permission to get a launch profile's details, which includes the summary of studio components and streaming images used by the launch profile
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetLaunchProfileDetails.html
     */ public toGetLaunchProfileDetails ( ) { return this . to ( 'GetLaunchProfileDetails' ) ; } /**
     * Grants permission to get a launch profile initialization. A launch profile initialization is a dereferenced version of a launch profile, including attached studio component connection information
     *
     * Access Level: Read
     *
     * Dependent actions:
     * - ds:DescribeDirectories
     * - ec2:DescribeSecurityGroups
     * - fsx:DescribeFileSystems
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetLaunchProfileInitialization.html
     */ public toGetLaunchProfileInitialization ( ) { return this . to ( 'GetLaunchProfileInitialization' ) ; } /**
     * Grants permission to get a launch profile member
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetLaunchProfileMember.html
     */ public toGetLaunchProfileMember ( ) { return this . to ( 'GetLaunchProfileMember' ) ; } /**
     * Grants permission to get a streaming image
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetStreamingImage.html
     */ public toGetStreamingImage ( ) { return this . to ( 'GetStreamingImage' ) ; } /**
     * Grants permission to get a streaming session
     *
     * Access Level: Read
     *
     * Possible conditions:
     * - .ifRequesterPrincipalId()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetStreamingSession.html
     */ public toGetStreamingSession ( ) { return this . to ( 'GetStreamingSession' ) ; } /**
     * Grants permission to get a streaming session stream
     *
     * Access Level: Read
     *
     * Possible conditions:
     * - .ifRequesterPrincipalId()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetStreamingSessionStream.html
     */ public toGetStreamingSessionStream ( ) { return this . to ( 'GetStreamingSessionStream' ) ; } /**
     * Grants permission to get a studio
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetStudio.html
     */ public toGetStudio ( ) { return this . to ( 'GetStudio' ) ; } /**
     * Grants permission to get a studio component
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetStudioComponent.html
     */ public toGetStudioComponent ( ) { return this . to ( 'GetStudioComponent' ) ; } /**
     * Grants permission to get a studio member
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_GetStudioMember.html
     */ public toGetStudioMember ( ) { return this . to ( 'GetStudioMember' ) ; } /**
     * Grants permission to list EULA acceptances
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListEulaAcceptances.html
     */ public toListEulaAcceptances ( ) { return this . to ( 'ListEulaAcceptances' ) ; } /**
     * Grants permission to list EULAs
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListEulas.html
     */ public toListEulas ( ) { return this . to ( 'ListEulas' ) ; } /**
     * Grants permission to list launch profile members
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListLaunchProfileMembers.html
     */ public toListLaunchProfileMembers ( ) { return this . to ( 'ListLaunchProfileMembers' ) ; } /**
     * Grants permission to list launch profiles
     *
     * Access Level: Read
     *
     * Possible conditions:
     * - .ifPrincipalId()
     * - .ifRequesterPrincipalId()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListLaunchProfiles.html
     */ public toListLaunchProfiles ( ) { return this . to ( 'ListLaunchProfiles' ) ; } /**
     * Grants permission to list streaming images
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListStreamingImages.html
     */ public toListStreamingImages ( ) { return this . to ( 'ListStreamingImages' ) ; } /**
     * Grants permission to list streaming sessions
     *
     * Access Level: Read
     *
     * Possible conditions:
     * - .ifCreatedBy()
     * - .ifOwnedBy()
     * - .ifRequesterPrincipalId()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListStreamingSessions.html
     */ public toListStreamingSessions ( ) { return this . to ( 'ListStreamingSessions' ) ; } /**
     * Grants permission to list studio components
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListStudioComponents.html
     */ public toListStudioComponents ( ) { return this . to ( 'ListStudioComponents' ) ; } /**
     * Grants permission to list studio members
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListStudioMembers.html
     */ public toListStudioMembers ( ) { return this . to ( 'ListStudioMembers' ) ; } /**
     * Grants permission to list all studios
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListStudios.html
     */ public toListStudios ( ) { return this . to ( 'ListStudios' ) ; } /**
     * Grants permission to list all tags on a Nimble Studio resource
     *
     * Access Level: Read
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_ListTagsForResource.html
     */ public toListTagsForResource ( ) { return this . to ( 'ListTagsForResource' ) ; } /**
     * Grants permission to add/update launch profile members
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - sso-directory:DescribeUsers
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_PutLaunchProfileMembers.html
     */ public toPutLaunchProfileMembers ( ) { return this . to ( 'PutLaunchProfileMembers' ) ; } /**
     * Grants permission to report metrics and logs for the Nimble Studio portal to monitor application health
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/userguide/security-iam-service-with-iam.html
     */ public toPutStudioLogEvents ( ) { return this . to ( 'PutStudioLogEvents' ) ; } /**
     * Grants permission to add/update studio members
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - sso-directory:DescribeUsers
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_PutStudioMembers.html
     */ public toPutStudioMembers ( ) { return this . to ( 'PutStudioMembers' ) ; } /**
     * Grants permission to start a streaming session
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifRequesterPrincipalId()
     *
     * Dependent actions:
     * - nimble:GetLaunchProfile
     * - nimble:GetLaunchProfileMember
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_StartStreamingSession.html
     */ public toStartStreamingSession ( ) { return this . to ( 'StartStreamingSession' ) ; } /**
     * Grants permission to repair the studio's AWS SSO configuration
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - sso:CreateManagedApplicationInstance
     * - sso:GetManagedApplicationInstance
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_StartStudioSSOConfigurationRepair.html
     */ public toStartStudioSSOConfigurationRepair ( ) { return this . to ( 'StartStudioSSOConfigurationRepair' ) ; } /**
     * Grants permission to stop a streaming session
     *
     * Access Level: Write
     *
     * Possible conditions:
     * - .ifRequesterPrincipalId()
     *
     * Dependent actions:
     * - nimble:GetLaunchProfile
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_StopStreamingSession.html
     */ public toStopStreamingSession ( ) { return this . to ( 'StopStreamingSession' ) ; } /**
     * Grants permission to add or overwrite one or more tags for the specified Nimble Studio resource
     *
     * Access Level: Tagging
     *
     * Possible conditions:
     * - .ifAwsRequestTag()
     * - .ifAwsTagKeys()
     * - .ifAwsResourceTag()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_TagResource.html
     */ public toTagResource ( ) { return this . to ( 'TagResource' ) ; } /**
     * Grants permission to disassociate one or more tags from the specified Nimble Studio resource
     *
     * Access Level: Tagging
     *
     * Possible conditions:
     * - .ifAwsTagKeys()
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_UntagResource.html
     */ public toUntagResource ( ) { return this . to ( 'UntagResource' ) ; } /**
     * Grants permission to update a launch profile
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - ec2:DescribeNatGateways
     * - ec2:DescribeNetworkAcls
     * - ec2:DescribeRouteTables
     * - ec2:DescribeSubnets
     * - ec2:DescribeVpcEndpoints
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_UpdateLaunchProfile.html
     */ public toUpdateLaunchProfile ( ) { return this . to ( 'UpdateLaunchProfile' ) ; } /**
     * Grants permission to update a launch profile member
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_UpdateLaunchProfileMember.html
     */ public toUpdateLaunchProfileMember ( ) { return this . to ( 'UpdateLaunchProfileMember' ) ; } /**
     * Grants permission to update a streaming image
     *
     * Access Level: Write
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_UpdateStreamingImage.html
     */ public toUpdateStreamingImage ( ) { return this . to ( 'UpdateStreamingImage' ) ; } /**
     * Grants permission to update a studio
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - iam:PassRole
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_UpdateStudio.html
     */ public toUpdateStudio ( ) { return this . to ( 'UpdateStudio' ) ; } /**
     * Grants permission to update a studio component
     *
     * Access Level: Write
     *
     * Dependent actions:
     * - ds:AuthorizeApplication
     * - ds:DescribeDirectories
     * - ec2:DescribeSecurityGroups
     * - fsx:DescribeFileSystems
     *
     * https://docs.aws.amazon.com/nimble-studio/latest/APIReference/API_UpdateStudioComponent.html
     */ public toUpdateStudioComponent ( ) { return this . to ( 'UpdateStudioComponent' ) ; } protected accessLevelList : AccessLevelList = { Write : [ 'AcceptEulas' , 'CreateLaunchProfile' , 'CreateStreamingImage' , 'CreateStreamingSession' , 'CreateStreamingSessionStream' , 'CreateStudio' , 'CreateStudioComponent' , 'DeleteLaunchProfile' , 'DeleteLaunchProfileMember' , 'DeleteStreamingImage' , 'DeleteStreamingSession' , 'DeleteStudio' , 'DeleteStudioComponent' , 'DeleteStudioMember' , 'PutLaunchProfileMembers' , 'PutStudioLogEvents' , 'PutStudioMembers' , 'StartStreamingSession' , 'StartStudioSSOConfigurationRepair' , 'StopStreamingSession' , 'UpdateLaunchProfile' , 'UpdateLaunchProfileMember' , 'UpdateStreamingImage' , 'UpdateStudio' , 'UpdateStudioComponent' ] , Read : [ 'GetEula' , 'GetFeatureMap' , 'GetLaunchProfile' , 'GetLaunchProfileDetails' , 'GetLaunchProfileInitialization' , 'GetLaunchProfileMember' , 'GetStreamingImage' , 'GetStreamingSession' , 'GetStreamingSessionStream' , 'GetStudio' , 'GetStudioComponent' , 'GetStudioMember' , 'ListEulaAcceptances' , 'ListEulas' , 'ListLaunchProfileMembers' , 'ListLaunchProfiles' , 'ListStreamingImages' , 'ListStreamingSessions' , 'ListStudioComponents' , 'ListStudioMembers' , 'ListStudios' , 'ListTagsForResource' ] , Tagging : [ 'TagResource' , 'UntagResource' ] } ; param studioId param account param region param partition public onStudio ( studioId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:studio/${ studioId }` ) ; } param streamingImageId param account param region param partition public onStreamingImage ( streamingImageId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:streaming-image/${ streamingImageId }` ) ; } param studioComponentId param account param region param partition public onStudioComponent ( studioComponentId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:studio-component/${ studioComponentId }` ) ; } param launchProfileId param account param region param partition public onLaunchProfile ( launchProfileId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:launch-profile/${ launchProfileId }` ) ; } param streamingSessionId param account param region param partition public onStreamingSession ( streamingSessionId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:streaming-session/${ streamingSessionId }` ) ; } param eulaId param account param region param partition public onEula ( eulaId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:eula/${ eulaId }` ) ; } param eulaAcceptanceId param account param region param partition public onEulaAcceptance ( eulaAcceptanceId , account ? , region ? , partition ? ) { return this . on ( `arn:${ partition || 'aws' }:nimble:${ region || '*' }:${ account || '*' }:eula-acceptance/${ eulaAcceptanceId }` ) ; } param value param operator public ifCreatedBy ( value , operator ? ) { return this . if ( `createdBy` , value , operator || 'StringLike' ) ; } param value param operator public ifOwnedBy ( value , operator ? ) { return this . if ( `ownedBy` , value , operator || 'StringLike' ) ; } param value param operator public ifPrincipalId ( value , operator ? ) { return this . if ( `principalId` , value , operator || 'StringLike' ) ; } param value param operator public ifRequesterPrincipalId ( value , operator ? ) { return this . if ( `requesterPrincipalId` , value , operator || 'StringLike' ) ; } param value param operator public ifStudioId ( value , operator ? ) { return this . if ( `studioId` , value , operator || 'ArnLike' ) ; } }