Amazon RDS · Arazzo Workflow

Amazon RDS Convert Instance to Multi-AZ

Version 1.0.0

Enable Multi-AZ on a DB instance immediately and poll until stable.

1 workflow 1 source API 1 provider
View Spec View on GitHub Cloud DatabasesDatabase ServiceDBaaSManaged DatabasesRelational DatabasesArazzoWorkflows

Provider

amazon-rds

Workflows

convert-to-multi-az
Convert a DB instance to Multi-AZ and wait for it to stabilize.
Confirms the instance is available, modifies it to MultiAZ with ApplyImmediately, then polls until DescribeDBInstances reports the instance available again.
3 steps inputs: dbInstanceIdentifier outputs: multiAZ, status
1
confirmInstance
describeDBInstances
Describe the DB instance to confirm it is available before converting it to a Multi-AZ deployment.
2
enableMultiAZ
modifyDBInstance
Submit the modify request enabling Multi-AZ with the change applied immediately.
3
pollInstance
describeDBInstances
Describe the DB instance and inspect its status. While the instance is still modifying the workflow loops back to poll again; once it is available the flow ends.

Source API Descriptions

Arazzo Workflow Specification

amazon-rds-convert-to-multi-az-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amazon RDS Convert Instance to Multi-AZ
  summary: Enable Multi-AZ on a DB instance immediately and poll until stable.
  description: >-
    Increases availability by converting a single-AZ DB instance into a Multi-AZ
    deployment and waiting for the change to complete. The workflow confirms the
    instance is available and currently single-AZ, submits a modify request that
    sets MultiAZ true with ApplyImmediately, and polls DescribeDBInstances until
    the status settles back to available with MultiAZ enabled. 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: amazonRdsApi
  url: ../openapi/amazon-rds-openapi.yml
  type: openapi
workflows:
- workflowId: convert-to-multi-az
  summary: Convert a DB instance to Multi-AZ and wait for it to stabilize.
  description: >-
    Confirms the instance is available, modifies it to MultiAZ with
    ApplyImmediately, then polls until DescribeDBInstances reports the instance
    available again.
  inputs:
    type: object
    required:
    - dbInstanceIdentifier
    properties:
      dbInstanceIdentifier:
        type: string
        description: The identifier of the DB instance to convert to Multi-AZ.
  steps:
  - stepId: confirmInstance
    description: >-
      Describe the DB instance to confirm it is available before converting it
      to a Multi-AZ deployment.
    operationId: describeDBInstances
    parameters:
    - name: DBInstanceIdentifier
      in: query
      value: $inputs.dbInstanceIdentifier
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.dBInstances[0].dBInstanceStatus == 'available'
      type: jsonpath
    outputs:
      currentMultiAZ: $response.body#/dBInstances/0/multiAZ
  - stepId: enableMultiAZ
    description: >-
      Submit the modify request enabling Multi-AZ with the change applied
      immediately.
    operationId: modifyDBInstance
    parameters:
    - name: DBInstanceIdentifier
      in: query
      value: $inputs.dbInstanceIdentifier
    - name: MultiAZ
      in: query
      value: true
    - name: ApplyImmediately
      in: query
      value: true
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      pendingStatus: $response.body#/dBInstance/dBInstanceStatus
  - stepId: pollInstance
    description: >-
      Describe the DB instance and inspect its status. While the instance is
      still modifying the workflow loops back to poll again; once it is
      available the flow ends.
    operationId: describeDBInstances
    parameters:
    - name: DBInstanceIdentifier
      in: query
      value: $inputs.dbInstanceIdentifier
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/dBInstances/0/dBInstanceStatus
      multiAZ: $response.body#/dBInstances/0/multiAZ
    onSuccess:
    - name: stillModifying
      type: goto
      stepId: pollInstance
      criteria:
      - context: $response.body
        condition: $.dBInstances[0].dBInstanceStatus != 'available'
        type: jsonpath
    - name: available
      type: end
      criteria:
      - context: $response.body
        condition: $.dBInstances[0].dBInstanceStatus == 'available'
        type: jsonpath
  outputs:
    status: $steps.pollInstance.outputs.status
    multiAZ: $steps.pollInstance.outputs.multiAZ