Amazon DataZone · Arazzo Workflow

Amazon DataZone Onboard Data Workspace

Version 1.0.0

Create a project, catalog an asset, and provision an environment in one workspace flow.

1 workflow 1 source API 1 provider
View Spec View on GitHub Data CatalogData GovernanceData ManagementData SharingAnalyticsArazzoWorkflows

Provider

amazon-datazone

Workflows

onboard-data-workspace
Create project, catalog asset, and provision an ACTIVE environment.
Creates a project in the domain, catalogs an asset under it, creates an environment from a profile, and waits until that environment reports ACTIVE.
4 steps inputs: assetName, domainIdentifier, environmentName, environmentProfileIdentifier, projectName, typeIdentifier outputs: assetId, environmentId, projectId
1
createProject
createProject
Create the project that anchors the new workspace.
2
catalogAsset
createAsset
Catalog the first data asset under the new project.
3
createEnvironment
createEnvironment
Provision an analytics environment for the project from the supplied profile. The environment starts in the CREATING state.
4
waitForEnvironment
listEnvironments
List the project's environments and repeat until the created environment reports ACTIVE.

Source API Descriptions

Arazzo Workflow Specification

amazon-datazone-onboard-data-workspace-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon DataZone Onboard Data Workspace
  summary: Create a project, catalog an asset, and provision an environment in one workspace flow.
  description: >-
    Onboards a complete analytics workspace inside an existing Amazon DataZone
    domain. It creates a project, catalogs a first data asset under that project,
    provisions an analytics environment from a profile, and polls the project's
    environment list until the environment is ACTIVE. The result is a project
    that already has data and a ready compute environment. Every step spells out
    its request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: dataZoneApi
  url: ../openapi/amazon-datazone-openapi.yml
  type: openapi
workflows:
- workflowId: onboard-data-workspace
  summary: Create project, catalog asset, and provision an ACTIVE environment.
  description: >-
    Creates a project in the domain, catalogs an asset under it, creates an
    environment from a profile, and waits until that environment reports ACTIVE.
  inputs:
    type: object
    required:
    - domainIdentifier
    - projectName
    - assetName
    - typeIdentifier
    - environmentName
    - environmentProfileIdentifier
    properties:
      domainIdentifier:
        type: string
        description: The identifier of the existing domain to onboard into.
      projectName:
        type: string
        description: The name of the project to create.
      assetName:
        type: string
        description: The name of the first asset to catalog under the project.
      typeIdentifier:
        type: string
        description: The asset type identifier (e.g. amazon.datazone.RelationalTable).
      environmentName:
        type: string
        description: The name of the analytics environment to provision.
      environmentProfileIdentifier:
        type: string
        description: The environment profile that defines the environment blueprint.
  steps:
  - stepId: createProject
    description: Create the project that anchors the new workspace.
    operationId: createProject
    parameters:
    - name: domainIdentifier
      in: path
      value: $inputs.domainIdentifier
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.projectName
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      projectId: $response.body#/id
  - stepId: catalogAsset
    description: Catalog the first data asset under the new project.
    operationId: createAsset
    parameters:
    - name: domainIdentifier
      in: path
      value: $inputs.domainIdentifier
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.assetName
        domainIdentifier: $inputs.domainIdentifier
        owningProjectIdentifier: $steps.createProject.outputs.projectId
        typeIdentifier: $inputs.typeIdentifier
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      assetId: $response.body#/id
  - stepId: createEnvironment
    description: >-
      Provision an analytics environment for the project from the supplied
      profile. The environment starts in the CREATING state.
    operationId: createEnvironment
    parameters:
    - name: domainIdentifier
      in: path
      value: $inputs.domainIdentifier
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.environmentName
        domainIdentifier: $inputs.domainIdentifier
        projectIdentifier: $steps.createProject.outputs.projectId
        environmentProfileIdentifier: $inputs.environmentProfileIdentifier
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      environmentId: $response.body#/id
  - stepId: waitForEnvironment
    description: >-
      List the project's environments and repeat until the created environment
      reports ACTIVE.
    operationId: listEnvironments
    parameters:
    - name: domainIdentifier
      in: path
      value: $inputs.domainIdentifier
    - name: projectIdentifier
      in: query
      value: $steps.createProject.outputs.projectId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.items[?(@.id == "$steps.createEnvironment.outputs.environmentId")].status == "ACTIVE"
      type: jsonpath
    outputs:
      environments: $response.body#/items
  outputs:
    projectId: $steps.createProject.outputs.projectId
    assetId: $steps.catalogAsset.outputs.assetId
    environmentId: $steps.createEnvironment.outputs.environmentId