Amazon Control Tower · Arazzo Workflow

AWS Control Tower Update Landing Zone and Confirm

Version 1.0.0

Update a landing zone's version or manifest, poll the async operation, then read back its details.

1 workflow 1 source API 1 provider
View Spec View on GitHub ComplianceGovernanceLanding ZoneMulti-AccountSecurityControlsArazzoWorkflows

Provider

amazon-control-tower

Workflows

update-landing-zone
Update a landing zone and wait for the operation to succeed.
Calls updateLandingZone, then repeatedly checks getLandingZoneOperation until the operation status is no longer IN_PROGRESS, branching to getLandingZone on success.
3 steps inputs: landingZoneIdentifier, manifest, version outputs: landingZone, operationIdentifier, operationStatus
1
updateLandingZone
updateLandingZone
Start the asynchronous update-landing-zone operation and capture the operation identifier used for polling.
2
pollLandingZoneOperation
getLandingZoneOperation
Check the status of the update operation. Repeats while the operation is still IN_PROGRESS, and proceeds to read the landing zone once it has SUCCEEDED.
3
getLandingZone
getLandingZone
Retrieve the landing zone's refreshed details, including status and version, now that the update has completed.

Source API Descriptions

Arazzo Workflow Specification

amazon-control-tower-update-landing-zone-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: AWS Control Tower Update Landing Zone and Confirm
  summary: Update a landing zone's version or manifest, poll the async operation, then read back its details.
  description: >-
    Updates an existing AWS Control Tower landing zone to a new version or
    manifest. Because updating a landing zone is asynchronous, the workflow
    starts the operation, captures the returned operation identifier, polls the
    landing zone operation until it leaves the IN_PROGRESS state, and on success
    retrieves the landing zone so the caller sees its refreshed status and
    version. Each 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: controlTowerApi
  url: ../openapi/amazon-control-tower-openapi.yml
  type: openapi
workflows:
- workflowId: update-landing-zone
  summary: Update a landing zone and wait for the operation to succeed.
  description: >-
    Calls updateLandingZone, then repeatedly checks getLandingZoneOperation until
    the operation status is no longer IN_PROGRESS, branching to getLandingZone on
    success.
  inputs:
    type: object
    required:
    - landingZoneIdentifier
    - version
    - manifest
    properties:
      landingZoneIdentifier:
        type: string
        description: The ARN of the landing zone to update.
      version:
        type: string
        description: The landing zone version to apply (e.g. "3.3").
      manifest:
        type: object
        description: The landing zone manifest describing the desired configuration.
  steps:
  - stepId: updateLandingZone
    description: >-
      Start the asynchronous update-landing-zone operation and capture the
      operation identifier used for polling.
    operationId: updateLandingZone
    requestBody:
      contentType: application/json
      payload:
        landingZoneIdentifier: $inputs.landingZoneIdentifier
        version: $inputs.version
        manifest: $inputs.manifest
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      operationIdentifier: $response.body#/operationIdentifier
  - stepId: pollLandingZoneOperation
    description: >-
      Check the status of the update operation. Repeats while the operation is
      still IN_PROGRESS, and proceeds to read the landing zone once it has
      SUCCEEDED.
    operationId: getLandingZoneOperation
    requestBody:
      contentType: application/json
      payload:
        operationIdentifier: $steps.updateLandingZone.outputs.operationIdentifier
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/operationDetails/status
    onSuccess:
    - name: stillRunning
      type: goto
      stepId: pollLandingZoneOperation
      criteria:
      - context: $response.body
        condition: $.operationDetails.status == "IN_PROGRESS"
        type: jsonpath
    - name: operationDone
      type: goto
      stepId: getLandingZone
      criteria:
      - context: $response.body
        condition: $.operationDetails.status == "SUCCEEDED"
        type: jsonpath
  - stepId: getLandingZone
    description: >-
      Retrieve the landing zone's refreshed details, including status and
      version, now that the update has completed.
    operationId: getLandingZone
    requestBody:
      contentType: application/json
      payload:
        landingZoneIdentifier: $inputs.landingZoneIdentifier
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      landingZone: $response.body#/landingZone
      status: $response.body#/landingZone/status
      version: $response.body#/landingZone/version
  outputs:
    operationIdentifier: $steps.updateLandingZone.outputs.operationIdentifier
    operationStatus: $steps.pollLandingZoneOperation.outputs.status
    landingZone: $steps.getLandingZone.outputs.landingZone