createSystemInstance method

Future<CreateSystemInstanceResponse> createSystemInstance({
  1. required DefinitionDocument definition,
  2. required DeploymentTarget target,
  3. String? flowActionsRoleArn,
  4. String? greengrassGroupName,
  5. MetricsConfiguration? metricsConfiguration,
  6. String? s3BucketName,
  7. List<Tag>? tags,
})

Creates a system instance.

This action validates the system instance, prepares the deployment-related resources. For Greengrass deployments, it updates the Greengrass group that is specified by the greengrassGroupName parameter. It also adds a file to the S3 bucket specified by the s3BucketName parameter. You need to call DeploySystemInstance after running this action.

For Greengrass deployments, since this action modifies and adds resources to a Greengrass group and an S3 bucket on the caller's behalf, the calling identity must have write permissions to both the specified Greengrass group and S3 bucket. Otherwise, the call will fail with an authorization error.

For cloud deployments, this action requires a flowActionsRoleArn value. This is an IAM role that has permissions to access AWS services, such as AWS Lambda and AWS IoT, that the flow uses when it executes.

If the definition document doesn't specify a version of the user's namespace, the latest version will be used by default.

May throw InvalidRequestException. May throw ResourceAlreadyExistsException. May throw ThrottlingException. May throw InternalFailureException. May throw LimitExceededException.

Parameter target : The target type of the deployment. Valid values are GREENGRASS and CLOUD.

Parameter flowActionsRoleArn : The ARN of the IAM role that AWS IoT Things Graph will assume when it executes the flow. This role must have read and write access to AWS Lambda and AWS IoT and any other AWS services that the flow uses when it executes. This value is required if the value of the target parameter is CLOUD.

Parameter greengrassGroupName : The name of the Greengrass group where the system instance will be deployed. This value is required if the value of the target parameter is GREENGRASS.

Parameter s3BucketName : The name of the Amazon Simple Storage Service bucket that will be used to store and deploy the system instance's resource file. This value is required if the value of the target parameter is GREENGRASS.

Parameter tags : Metadata, consisting of key-value pairs, that can be used to categorize your system instances.

Implementation

Future<CreateSystemInstanceResponse> createSystemInstance({
  required DefinitionDocument definition,
  required DeploymentTarget target,
  String? flowActionsRoleArn,
  String? greengrassGroupName,
  MetricsConfiguration? metricsConfiguration,
  String? s3BucketName,
  List<Tag>? tags,
}) async {
  ArgumentError.checkNotNull(definition, 'definition');
  ArgumentError.checkNotNull(target, 'target');
  _s.validateStringLength(
    'flowActionsRoleArn',
    flowActionsRoleArn,
    20,
    2048,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'IotThingsGraphFrontEndService.CreateSystemInstance'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'definition': definition,
      'target': target.toValue(),
      if (flowActionsRoleArn != null)
        'flowActionsRoleArn': flowActionsRoleArn,
      if (greengrassGroupName != null)
        'greengrassGroupName': greengrassGroupName,
      if (metricsConfiguration != null)
        'metricsConfiguration': metricsConfiguration,
      if (s3BucketName != null) 's3BucketName': s3BucketName,
      if (tags != null) 'tags': tags,
    },
  );

  return CreateSystemInstanceResponse.fromJson(jsonResponse.body);
}