createWorkflow method
- Accelerators? accelerators,
- ContainerRegistryMap? containerRegistryMap,
- String? containerRegistryMapUri,
- DefinitionRepository? definitionRepository,
- String? definitionUri,
- Uint8List? definitionZip,
- String? description,
- WorkflowEngine? engine,
- String? main,
- String? name,
- Map<
String, WorkflowParameter> ? parameterTemplate, - String? parameterTemplatePath,
- String? readmeMarkdown,
- String? readmePath,
- String? readmeUri,
- String? requestId,
- int? storageCapacity,
- StorageType? storageType,
- Map<
String, String> ? tags, - String? workflowBucketOwnerId,
Creates a private workflow. Before you create a private workflow, you must create and configure these required resources:
-
Workflow definition file: A workflow definition file written in
WDL, Nextflow, or CWL. The workflow definition specifies the inputs and
outputs for runs that use the workflow. It also includes specifications
for the runs and run tasks for your workflow, including compute and memory
requirements. The workflow definition file must be in
.zipformat. For more information, see Workflow definition files in Amazon Web Services HealthOmics.- You can use Amazon Q CLI to build and validate your workflow definition files in WDL, Nextflow, and CWL. For more information, see Example prompts for Amazon Q CLI and the Amazon Web Services HealthOmics Agentic generative AI tutorial on GitHub.
- (Optional) Parameter template file: A parameter template file written in JSON. Create the file to define the run parameters, or Amazon Web Services HealthOmics generates the parameter template for you. For more information, see Parameter template files for HealthOmics workflows.
- ECR container images: Create container images for the workflow in a private ECR repository, or synchronize images from a supported upstream registry with your Amazon ECR private repository.
- (Optional) Sentieon licenses: Request a Sentieon license to use the Sentieon software in private workflows.
May throw AccessDeniedException.
May throw ConflictException.
May throw InternalServerException.
May throw RequestTimeoutException.
May throw ResourceNotFoundException.
May throw ServiceQuotaExceededException.
May throw ThrottlingException.
May throw ValidationException.
Parameter accelerators :
The computational accelerator specified to run the workflow.
Parameter containerRegistryMap :
(Optional) Use a container registry map to specify mappings between the
ECR private repository and one or more upstream registries. For more
information, see Container
images in the Amazon Web Services HealthOmics User Guide.
Parameter containerRegistryMapUri :
(Optional) URI of the S3 location for the registry mapping file.
Parameter definitionRepository :
The repository information for the workflow definition. This allows you to
source your workflow definition directly from a code repository.
Parameter definitionUri :
The S3 URI of a definition for the workflow. The S3 bucket must be in the
same region as the workflow.
Parameter definitionZip :
A ZIP archive containing the main workflow definition file and
dependencies that it imports for the workflow. You can use a file with a
://fileb prefix instead of the Base64 string. For more information, see Workflow
definition requirements in the Amazon Web Services HealthOmics User
Guide.
Parameter description :
A description for the workflow.
Parameter engine :
The workflow engine for the workflow. By default, Amazon Web Services
HealthOmics detects the engine automatically from your workflow
definition. Provide a value if you have workflow definition files from
more than one engine in your zip file, or to use WDL lenient.
WDL lenient is designed to handle workflows migrated from Cromwell. It supports customer Cromwell directives and some non-conformant logic. For details, see Implicit type conversion in WDL lenient in the Amazon Web Services HealthOmics User Guide.
Parameter main :
The path of the main definition file for the workflow. This parameter is
not required if the ZIP archive contains only one workflow definition
file, or if the main definition file is named “main”. An example path is:
workflow-definition/main-file.wdl.
Parameter name :
Name (optional but highly recommended) for the workflow to locate relevant
information in the CloudWatch logs and Amazon Web Services HealthOmics
console.
Parameter parameterTemplate :
A parameter template for the workflow. If this field is blank, Amazon Web
Services HealthOmics will automatically parse the parameter template
values from your workflow definition file. To override these service
generated default values, provide a parameter template. To view an example
of a parameter template, see Parameter
template files in the Amazon Web Services HealthOmics User
Guide.
Parameter parameterTemplatePath :
The path to the workflow parameter template JSON file within the
repository. This file defines the input parameters for runs that use this
workflow. If not specified, the workflow will be created without a
parameter template.
Parameter readmeMarkdown :
The markdown content for the workflow's README file. This provides
documentation and usage information for users of the workflow.
Parameter readmePath :
The path to the workflow README markdown file within the repository. This
file provides documentation and usage information for the workflow. If not
specified, the README.md file from the root directory of the
repository will be used.
Parameter readmeUri :
The S3 URI of the README file for the workflow. This file provides
documentation and usage information for the workflow. Requirements
include:
-
The S3 URI must begin with
s3://USER-OWNED-BUCKET/ - The requester must have access to the S3 bucket and object.
- The max README content length is 500 KiB.
Parameter requestId :
An idempotency token to ensure that duplicate workflows are not created
when Amazon Web Services HealthOmics submits retry requests.
Parameter storageCapacity :
The default static storage capacity (in gibibytes) for runs that use this
workflow or workflow version. The storageCapacity can be
overwritten at run time. The storage capacity is not required for runs
with a DYNAMIC storage type.
Parameter storageType :
The default storage type for runs that use this workflow. The
storageType can be overridden at run time.
DYNAMIC storage dynamically scales the storage up or down,
based on file system utilization. STATIC storage allocates a
fixed amount of storage. For more information about dynamic and static
storage types, see Run
storage types in the Amazon Web Services HealthOmics User
Guide.
Parameter tags :
Tags for the workflow. You can define up to 50 tags for the workflow. For
more information, see Adding
a tag in the Amazon Web Services HealthOmics User Guide.
Parameter workflowBucketOwnerId :
The Amazon Web Services account ID of the expected owner of the S3 bucket
that contains the workflow definition. If not specified, the service skips
the validation.
Implementation
Future<CreateWorkflowResponse> createWorkflow({
Accelerators? accelerators,
ContainerRegistryMap? containerRegistryMap,
String? containerRegistryMapUri,
DefinitionRepository? definitionRepository,
String? definitionUri,
Uint8List? definitionZip,
String? description,
WorkflowEngine? engine,
String? main,
String? name,
Map<String, WorkflowParameter>? parameterTemplate,
String? parameterTemplatePath,
String? readmeMarkdown,
String? readmePath,
String? readmeUri,
String? requestId,
int? storageCapacity,
StorageType? storageType,
Map<String, String>? tags,
String? workflowBucketOwnerId,
}) async {
final $payload = <String, dynamic>{
if (accelerators != null) 'accelerators': accelerators.value,
if (containerRegistryMap != null)
'containerRegistryMap': containerRegistryMap,
if (containerRegistryMapUri != null)
'containerRegistryMapUri': containerRegistryMapUri,
if (definitionRepository != null)
'definitionRepository': definitionRepository,
if (definitionUri != null) 'definitionUri': definitionUri,
if (definitionZip != null) 'definitionZip': base64Encode(definitionZip),
if (description != null) 'description': description,
if (engine != null) 'engine': engine.value,
if (main != null) 'main': main,
if (name != null) 'name': name,
if (parameterTemplate != null) 'parameterTemplate': parameterTemplate,
if (parameterTemplatePath != null)
'parameterTemplatePath': parameterTemplatePath,
if (readmeMarkdown != null) 'readmeMarkdown': readmeMarkdown,
if (readmePath != null) 'readmePath': readmePath,
if (readmeUri != null) 'readmeUri': readmeUri,
'requestId': requestId ?? _s.generateIdempotencyToken(),
if (storageCapacity != null) 'storageCapacity': storageCapacity,
if (storageType != null) 'storageType': storageType.value,
if (tags != null) 'tags': tags,
if (workflowBucketOwnerId != null)
'workflowBucketOwnerId': workflowBucketOwnerId,
};
final response = await _protocol.send(
payload: $payload,
method: 'POST',
requestUri: '/workflow',
exceptionFnMap: _exceptionFns,
);
return CreateWorkflowResponse.fromJson(response);
}