createActivation method

Future<CreateActivationResult> createActivation({
  1. required String iamRole,
  2. String? defaultInstanceName,
  3. String? description,
  4. DateTime? expirationDate,
  5. int? registrationLimit,
  6. List<RegistrationMetadataItem>? registrationMetadata,
  7. List<Tag>? tags,
})

Generates an activation code and activation ID you can use to register your on-premises servers, edge devices, or virtual machine (VM) with Amazon Web Services Systems Manager. Registering these machines with Systems Manager makes it possible to manage them using Systems Manager tools. You use the activation code and ID when installing SSM Agent on machines in your hybrid environment. For more information about requirements for managing on-premises machines using Systems Manager, see Using Amazon Web Services Systems Manager in hybrid and multicloud environments in the Amazon Web Services Systems Manager User Guide.

May throw InternalServerError. May throw InvalidParameters.

Parameter iamRole : The name of the Identity and Access Management (IAM) role that you want to assign to the managed node. This IAM role must provide AssumeRole permissions for the Amazon Web Services Systems Manager service principal ssm.amazonaws.com. For more information, see Create the IAM service role required for Systems Manager in a hybrid and multicloud environments in the Amazon Web Services Systems Manager User Guide.

Parameter defaultInstanceName : The name of the registered, managed node as it will appear in the Amazon Web Services Systems Manager console or when you use the Amazon Web Services command line tools to list Systems Manager resources.

Parameter description : A user-defined description of the resource that you want to register with Systems Manager.

Parameter expirationDate : The date by which this activation request should expire, in timestamp format, such as "2024-07-07T00:00:00". You can specify a date up to 30 days in advance. If you don't provide an expiration date, the activation code expires in 24 hours.

Parameter registrationLimit : Specify the maximum number of managed nodes you want to register. The default value is 1.

Parameter registrationMetadata : Reserved for internal use.

Parameter tags : Optional metadata that you assign to a resource. Tags enable you to categorize a resource in different ways, such as by purpose, owner, or environment. For example, you might want to tag an activation to identify which servers or virtual machines (VMs) in your on-premises environment you intend to activate. In this case, you could specify the following key-value pairs:

  • Key=OS,Value=Windows
  • Key=Environment,Value=Production
You can't add tags to or delete tags from an existing activation. You can tag your on-premises servers, edge devices, and VMs after they connect to Systems Manager for the first time and are assigned a managed node ID. This means they are listed in the Amazon Web Services Systems Manager console with an ID that is prefixed with "mi-". For information about how to add tags to your managed nodes, see AddTagsToResource. For information about how to remove tags from your managed nodes, see RemoveTagsFromResource.

Implementation

Future<CreateActivationResult> createActivation({
  required String iamRole,
  String? defaultInstanceName,
  String? description,
  DateTime? expirationDate,
  int? registrationLimit,
  List<RegistrationMetadataItem>? registrationMetadata,
  List<Tag>? tags,
}) async {
  _s.validateNumRange(
    'registrationLimit',
    registrationLimit,
    1,
    1000,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AmazonSSM.CreateActivation'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'IamRole': iamRole,
      if (defaultInstanceName != null)
        'DefaultInstanceName': defaultInstanceName,
      if (description != null) 'Description': description,
      if (expirationDate != null)
        'ExpirationDate': unixTimestampToJson(expirationDate),
      if (registrationLimit != null) 'RegistrationLimit': registrationLimit,
      if (registrationMetadata != null)
        'RegistrationMetadata': registrationMetadata,
      if (tags != null) 'Tags': tags,
    },
  );

  return CreateActivationResult.fromJson(jsonResponse.body);
}