registerContainerInstance method

Future<RegisterContainerInstanceResponse> registerContainerInstance({
  1. List<Attribute>? attributes,
  2. String? cluster,
  3. String? containerInstanceArn,
  4. String? instanceIdentityDocument,
  5. String? instanceIdentityDocumentSignature,
  6. List<PlatformDevice>? platformDevices,
  7. List<Tag>? tags,
  8. List<Resource>? totalResources,
  9. VersionInfo? versionInfo,
})
Registers an EC2 instance into the specified cluster. This instance becomes available to place containers on.

May throw ServerException. May throw ClientException. May throw InvalidParameterException.

Parameter attributes : The container instance attributes that this container instance supports.

Parameter cluster : The short name or full Amazon Resource Name (ARN) of the cluster with which to register your container instance. If you do not specify a cluster, the default cluster is assumed.

Parameter containerInstanceArn : The ARN of the container instance (if it was previously registered).

Parameter instanceIdentityDocument : The instance identity document for the EC2 instance to register. This document can be found by running the following command from the instance: curl http://169.254.169.254/latest/dynamic/instance-identity/document/

Parameter instanceIdentityDocumentSignature : The instance identity document signature for the EC2 instance to register. This signature can be found by running the following command from the instance: curl http://169.254.169.254/latest/dynamic/instance-identity/signature/

Parameter platformDevices : The devices that are available on the container instance. The only supported device type is a GPU.

Parameter tags : The metadata that you apply to the container instance to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define.

The following basic restrictions apply to tags:

  • Maximum number of tags per resource - 50
  • For each resource, each tag key must be unique, and each tag key can have only one value.
  • Maximum key length - 128 Unicode characters in UTF-8
  • Maximum value length - 256 Unicode characters in UTF-8
  • If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.
  • Tag keys and values are case-sensitive.
  • Do not use aws:, AWS:, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for AWS use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.

Parameter totalResources : The resources available on the instance.

Parameter versionInfo : The version information for the Amazon ECS container agent and Docker daemon running on the container instance.

Implementation

Future<RegisterContainerInstanceResponse> registerContainerInstance({
  List<Attribute>? attributes,
  String? cluster,
  String? containerInstanceArn,
  String? instanceIdentityDocument,
  String? instanceIdentityDocumentSignature,
  List<PlatformDevice>? platformDevices,
  List<Tag>? tags,
  List<Resource>? totalResources,
  VersionInfo? versionInfo,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target':
        'AmazonEC2ContainerServiceV20141113.RegisterContainerInstance'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      if (attributes != null) 'attributes': attributes,
      if (cluster != null) 'cluster': cluster,
      if (containerInstanceArn != null)
        'containerInstanceArn': containerInstanceArn,
      if (instanceIdentityDocument != null)
        'instanceIdentityDocument': instanceIdentityDocument,
      if (instanceIdentityDocumentSignature != null)
        'instanceIdentityDocumentSignature':
            instanceIdentityDocumentSignature,
      if (platformDevices != null) 'platformDevices': platformDevices,
      if (tags != null) 'tags': tags,
      if (totalResources != null) 'totalResources': totalResources,
      if (versionInfo != null) 'versionInfo': versionInfo,
    },
  );

  return RegisterContainerInstanceResponse.fromJson(jsonResponse.body);
}