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