Amazon DataZone · Arazzo Workflow

Amazon DataZone Bootstrap Domain and Project

Version 1.0.0

Create a domain, wait for it to be AVAILABLE, then create a project inside it.

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

Provider

amazon-datazone

Workflows

bootstrap-domain-and-project
Provision a domain and create a first project within it once ready.
Creates a domain, waits for it to become AVAILABLE, creates a project under the new domain, and reads the project back to confirm creation.
4 steps inputs: domainExecutionRole, domainName, projectDescription, projectName outputs: domainId, projectId, projectName
1
createDomain
createDomain
Create the DataZone domain that will contain the project.
2
waitForDomain
getDomain
Poll the domain until it reaches AVAILABLE so the project create call has a ready domain to attach to.
3
createProject
createProject
Create a project inside the newly provisioned domain.
4
confirmProject
getProject
Read the created project back to confirm it was registered.

Source API Descriptions

Arazzo Workflow Specification

amazon-datazone-bootstrap-domain-and-project-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon DataZone Bootstrap Domain and Project
  summary: Create a domain, wait for it to be AVAILABLE, then create a project inside it.
  description: >-
    End-to-end bootstrap for a fresh Amazon DataZone workspace. It creates a
    governance domain, polls until the domain reaches the AVAILABLE state, and
    then creates a project inside that domain to hold data assets and
    environments. Finally it reads the project back to confirm it exists. 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: bootstrap-domain-and-project
  summary: Provision a domain and create a first project within it once ready.
  description: >-
    Creates a domain, waits for it to become AVAILABLE, creates a project under
    the new domain, and reads the project back to confirm creation.
  inputs:
    type: object
    required:
    - domainName
    - domainExecutionRole
    - projectName
    properties:
      domainName:
        type: string
        description: The name of the DataZone domain to create.
      domainExecutionRole:
        type: string
        description: ARN of the IAM role DataZone uses to execute domain operations.
      projectName:
        type: string
        description: The name of the project to create inside the new domain.
      projectDescription:
        type: string
        description: An optional description for the project.
  steps:
  - stepId: createDomain
    description: Create the DataZone domain that will contain the project.
    operationId: createDomain
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.domainName
        domainExecutionRole: $inputs.domainExecutionRole
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      domainId: $response.body#/id
  - stepId: waitForDomain
    description: >-
      Poll the domain until it reaches AVAILABLE so the project create call has a
      ready domain to attach to.
    operationId: getDomain
    parameters:
    - name: domainIdentifier
      in: path
      value: $steps.createDomain.outputs.domainId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.status == "AVAILABLE"
      type: jsonpath
    outputs:
      status: $response.body#/status
  - stepId: createProject
    description: Create a project inside the newly provisioned domain.
    operationId: createProject
    parameters:
    - name: domainIdentifier
      in: path
      value: $steps.createDomain.outputs.domainId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.projectName
        description: $inputs.projectDescription
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      projectId: $response.body#/id
  - stepId: confirmProject
    description: Read the created project back to confirm it was registered.
    operationId: getProject
    parameters:
    - name: domainIdentifier
      in: path
      value: $steps.createDomain.outputs.domainId
    - name: identifier
      in: path
      value: $steps.createProject.outputs.projectId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      projectName: $response.body#/name
      createdAt: $response.body#/createdAt
  outputs:
    domainId: $steps.createDomain.outputs.domainId
    projectId: $steps.createProject.outputs.projectId
    projectName: $steps.confirmProject.outputs.projectName