Amazon DocumentDB · Arazzo Workflow

Amazon DocumentDB Scale Out Read Replica

Version 1.0.0

Add a replica instance to a cluster, wait for it, then confirm cluster membership.

1 workflow 1 source API 1 provider
View Spec View on GitHub Amazon Web ServicesDatabaseDocument DatabaseDocumentDBManaged DatabaseMongoDBNoSQLArazzoWorkflows

Provider

amazon-documentdb

Workflows

scale-out-read-replica
Add a replica instance and confirm it joins the cluster.
Creates a replica instance in the target cluster, polls until it is available, then describes the cluster to confirm the new member is present.
3 steps inputs: AutoMinorVersionUpgrade, DBClusterIdentifier, DBInstanceClass, DBInstanceIdentifier, Engine outputs: DBClusterIdentifier, DBInstanceIdentifier, clusterStatus, replicaStatus
1
createReplica
createDBInstance
Create the replica instance within the target cluster.
2
pollReplica
describeDBInstances
Poll the replica instance status, looping back here until it reports available.
3
confirmMembership
describeDBClusters
Describe the cluster again to confirm it is available and now reports the new replica among its members.

Source API Descriptions

Arazzo Workflow Specification

amazon-documentdb-scale-out-read-replica-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon DocumentDB Scale Out Read Replica
  summary: Add a replica instance to a cluster, wait for it, then confirm cluster membership.
  description: >-
    Scales out an existing Amazon DocumentDB cluster by adding a new replica
    instance, polling until that instance is available, and then re-describing
    the cluster to confirm the new instance has joined the cluster membership.
    The workflow uses the AWS query protocol, supplying the Action and Version in
    the query string and the instance parameters as a form-urlencoded request
    body, and spells out each request inline so the flow can be read and executed
    without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: docdbApi
  url: ../openapi/amazon-documentdb-openapi.yml
  type: openapi
workflows:
- workflowId: scale-out-read-replica
  summary: Add a replica instance and confirm it joins the cluster.
  description: >-
    Creates a replica instance in the target cluster, polls until it is
    available, then describes the cluster to confirm the new member is present.
  inputs:
    type: object
    required:
    - DBClusterIdentifier
    - DBInstanceIdentifier
    - DBInstanceClass
    properties:
      DBClusterIdentifier:
        type: string
        description: The identifier of the cluster to scale out.
      DBInstanceIdentifier:
        type: string
        description: The identifier to assign to the new replica instance.
      DBInstanceClass:
        type: string
        description: The compute and memory capacity of the replica instance.
      Engine:
        type: string
        description: The database engine for the instance.
        default: docdb
      AutoMinorVersionUpgrade:
        type: boolean
        description: Whether minor engine upgrades are applied automatically.
        default: true
  steps:
  - stepId: createReplica
    description: Create the replica instance within the target cluster.
    operationId: createDBInstance
    parameters:
    - name: Action
      in: query
      value: CreateDBInstance
    - name: Version
      in: query
      value: '2014-10-31'
    requestBody:
      contentType: application/x-www-form-urlencoded
      payload:
        DBInstanceIdentifier: $inputs.DBInstanceIdentifier
        DBInstanceClass: $inputs.DBInstanceClass
        Engine: $inputs.Engine
        DBClusterIdentifier: $inputs.DBClusterIdentifier
        AutoMinorVersionUpgrade: $inputs.AutoMinorVersionUpgrade
    successCriteria:
    - condition: $statusCode == 200
  - stepId: pollReplica
    description: >-
      Poll the replica instance status, looping back here until it reports
      available.
    operationId: describeDBInstances
    parameters:
    - name: Action
      in: query
      value: DescribeDBInstances
    - name: Version
      in: query
      value: '2014-10-31'
    - name: DBInstanceIdentifier
      in: query
      value: $inputs.DBInstanceIdentifier
    - name: MaxRecords
      in: query
      value: 1
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      instanceStatus: $response.body#/DBInstances/0/DBInstanceStatus
    onSuccess:
    - name: replicaReady
      type: goto
      stepId: confirmMembership
      criteria:
      - context: $response.body
        condition: $.DBInstances[0].DBInstanceStatus == "available"
        type: jsonpath
    - name: replicaCreating
      type: goto
      stepId: pollReplica
      criteria:
      - context: $response.body
        condition: $.DBInstances[0].DBInstanceStatus != "available"
        type: jsonpath
  - stepId: confirmMembership
    description: >-
      Describe the cluster again to confirm it is available and now reports the
      new replica among its members.
    operationId: describeDBClusters
    parameters:
    - name: Action
      in: query
      value: DescribeDBClusters
    - name: Version
      in: query
      value: '2014-10-31'
    - name: DBClusterIdentifier
      in: query
      value: $inputs.DBClusterIdentifier
    - name: MaxRecords
      in: query
      value: 1
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      clusterStatus: $response.body#/DBClusters/0/Status
      members: $response.body#/DBClusters/0/DBClusterMembers
  outputs:
    DBClusterIdentifier: $inputs.DBClusterIdentifier
    DBInstanceIdentifier: $inputs.DBInstanceIdentifier
    clusterStatus: $steps.confirmMembership.outputs.clusterStatus
    replicaStatus: $steps.pollReplica.outputs.instanceStatus