createImageBuilder method

Future<CreateImageBuilderResult> createImageBuilder({
  1. required String instanceType,
  2. required String name,
  3. List<AccessEndpoint>? accessEndpoints,
  4. String? appstreamAgentVersion,
  5. String? description,
  6. String? displayName,
  7. DomainJoinInfo? domainJoinInfo,
  8. bool? enableDefaultInternetAccess,
  9. String? iamRoleArn,
  10. String? imageArn,
  11. String? imageName,
  12. Map<String, String>? tags,
  13. VpcConfig? vpcConfig,
})

Creates an image builder. An image builder is a virtual machine that is used to create an image.

The initial state of the builder is PENDING. When it is ready, the state is RUNNING.

May throw LimitExceededException. May throw RequestLimitExceededException. May throw InvalidAccountStatusException. May throw ResourceAlreadyExistsException. May throw ResourceNotAvailableException. May throw ResourceNotFoundException. May throw InvalidRoleException. May throw ConcurrentModificationException. May throw InvalidParameterCombinationException. May throw IncompatibleImageException. May throw OperationNotPermittedException.

Parameter instanceType : The instance type to use when launching the image builder. The following instance types are available:

  • stream.standard.medium
  • stream.standard.large
  • stream.compute.large
  • stream.compute.xlarge
  • stream.compute.2xlarge
  • stream.compute.4xlarge
  • stream.compute.8xlarge
  • stream.memory.large
  • stream.memory.xlarge
  • stream.memory.2xlarge
  • stream.memory.4xlarge
  • stream.memory.8xlarge
  • stream.memory.z1d.large
  • stream.memory.z1d.xlarge
  • stream.memory.z1d.2xlarge
  • stream.memory.z1d.3xlarge
  • stream.memory.z1d.6xlarge
  • stream.memory.z1d.12xlarge
  • stream.graphics-design.large
  • stream.graphics-design.xlarge
  • stream.graphics-design.2xlarge
  • stream.graphics-design.4xlarge
  • stream.graphics-desktop.2xlarge
  • stream.graphics.g4dn.xlarge
  • stream.graphics.g4dn.2xlarge
  • stream.graphics.g4dn.4xlarge
  • stream.graphics.g4dn.8xlarge
  • stream.graphics.g4dn.12xlarge
  • stream.graphics.g4dn.16xlarge
  • stream.graphics-pro.4xlarge
  • stream.graphics-pro.8xlarge
  • stream.graphics-pro.16xlarge

Parameter name : A unique name for the image builder.

Parameter accessEndpoints : The list of interface VPC endpoint (interface endpoint) objects. Administrators can connect to the image builder only through the specified endpoints.

Parameter appstreamAgentVersion : The version of the AppStream 2.0 agent to use for this image builder. To use the latest version of the AppStream 2.0 agent, specify LATEST.

Parameter description : The description to display.

Parameter displayName : The image builder name to display.

Parameter domainJoinInfo : The name of the directory and organizational unit (OU) to use to join the image builder to a Microsoft Active Directory domain.

Parameter enableDefaultInternetAccess : Enables or disables default internet access for the image builder.

Parameter iamRoleArn : The Amazon Resource Name (ARN) of the IAM role to apply to the image builder. To assume a role, the image builder calls the AWS Security Token Service (STS) AssumeRole API operation and passes the ARN of the role to use. The operation creates a new session with temporary credentials. AppStream 2.0 retrieves the temporary credentials and creates the appstream_machine_role credential profile on the instance.

For more information, see Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances in the Amazon AppStream 2.0 Administration Guide.

Parameter imageArn : The ARN of the public, private, or shared image to use.

Parameter imageName : The name of the image used to create the image builder.

Parameter tags : The tags to associate with the image builder. A tag is a key-value pair, and the value is optional. For example, Environment=Test. If you do not specify a value, Environment=.

Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following special characters:

_ . : / = + \ - @

If you do not specify a value, the value is set to an empty string.

For more information about tags, see Tagging Your Resources in the Amazon AppStream 2.0 Administration Guide.

Parameter vpcConfig : The VPC configuration for the image builder. You can specify only one subnet.

Implementation

Future<CreateImageBuilderResult> createImageBuilder({
  required String instanceType,
  required String name,
  List<AccessEndpoint>? accessEndpoints,
  String? appstreamAgentVersion,
  String? description,
  String? displayName,
  DomainJoinInfo? domainJoinInfo,
  bool? enableDefaultInternetAccess,
  String? iamRoleArn,
  String? imageArn,
  String? imageName,
  Map<String, String>? tags,
  VpcConfig? vpcConfig,
}) async {
  ArgumentError.checkNotNull(instanceType, 'instanceType');
  _s.validateStringLength(
    'instanceType',
    instanceType,
    1,
    1152921504606846976,
    isRequired: true,
  );
  ArgumentError.checkNotNull(name, 'name');
  _s.validateStringLength(
    'appstreamAgentVersion',
    appstreamAgentVersion,
    1,
    100,
  );
  _s.validateStringLength(
    'description',
    description,
    0,
    256,
  );
  _s.validateStringLength(
    'displayName',
    displayName,
    0,
    100,
  );
  _s.validateStringLength(
    'imageName',
    imageName,
    1,
    1152921504606846976,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'PhotonAdminProxyService.CreateImageBuilder'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'InstanceType': instanceType,
      'Name': name,
      if (accessEndpoints != null) 'AccessEndpoints': accessEndpoints,
      if (appstreamAgentVersion != null)
        'AppstreamAgentVersion': appstreamAgentVersion,
      if (description != null) 'Description': description,
      if (displayName != null) 'DisplayName': displayName,
      if (domainJoinInfo != null) 'DomainJoinInfo': domainJoinInfo,
      if (enableDefaultInternetAccess != null)
        'EnableDefaultInternetAccess': enableDefaultInternetAccess,
      if (iamRoleArn != null) 'IamRoleArn': iamRoleArn,
      if (imageArn != null) 'ImageArn': imageArn,
      if (imageName != null) 'ImageName': imageName,
      if (tags != null) 'Tags': tags,
      if (vpcConfig != null) 'VpcConfig': vpcConfig,
    },
  );

  return CreateImageBuilderResult.fromJson(jsonResponse.body);
}