# AWS CloudFormation

> Run your AWS infrastructure as code from a workflow: create, update and delete CloudFormation stacks, preview changes with change sets, read stack outputs and events, and check stacks for drift.

App · Cloud Computing · 20 actions. Web page: https://docs.lodol.com/docs/integrations/amazon-cloudformation

## Actions

### Cancel a stack update

Cancel an update that is still in progress, rolling the stack back to how it was, and by default wait for the rollback.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `capabilities` (list)
- `creation_time` (text)
- `deletion_time` (text)
- `description` (text)
- `detailed_status` (text)
- `disable_rollback` (true/false)
- `drift_last_checked` (text)
- `drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `finished` (true/false): True once the stack settled. False when the step did not wait, or stopped waiting before CloudFormation finished.
- `last_updated_time` (text)
- `notification_arns` (list)
- `output_map` (object): Output name to value, for picking one by name.
- `outputs` (list)
- `parameters` (object): Parameter name to value.
- `parent_id` (text): For a nested stack, the stack ARN of its parent.
- `role_arn` (text)
- `root_id` (text)
- `stack_id` (text): The stack ARN, such as arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-...
- `stack_name` (text)
- `status` (text): Such as CREATE_COMPLETE, UPDATE_IN_PROGRESS or ROLLBACK_COMPLETE.
- `status_reason` (text)
- `tags` (object): Tag name to value.
- `termination_protection` (true/false)
- `timeout_in_minutes` (number)

**Example output**

```json
{
  "capabilities": [],
  "creation_time": "2026-10-01T09:00:00+00:00",
  "deletion_time": null,
  "description": "My app's queue and parameters",
  "detailed_status": null,
  "disable_rollback": false,
  "drift_last_checked": null,
  "drift_status": "NOT_CHECKED",
  "finished": true,
  "last_updated_time": null,
  "notification_arns": [],
  "output_map": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
  },
  "outputs": [
    {
      "description": "The queue's URL",
      "export_name": null,
      "key": "QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "parameters": {
    "Environment": "prod"
  },
  "parent_id": null,
  "role_arn": null,
  "root_id": null,
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "UPDATE_ROLLBACK_COMPLETE",
  "status_reason": null,
  "tags": {
    "team": "web"
  },
  "termination_protection": false,
  "timeout_in_minutes": null
}
```

### Create a change set

Preview what an update would change, without changing anything yet: CloudFormation lists each resource it would add, modify or replace. Execute the change set to apply it.

**Inputs**

- Stack (`stack`, text, required): The stack to change: pick one, or give its name or ARN. For the Create type, the new stack's name.
- Change set name (`change_set_name`, text, required): A name unique on the stack: letters, digits and hyphens, starting with a letter, such as release-42.
- Type (`change_set_type`, text): Update previews changes to an existing stack; Create previews a new stack, which waits in REVIEW_IN_PROGRESS until executed. One of: `UPDATE` (Update an existing stack), `CREATE` (Create a new stack). Default: `UPDATE`.
- Template (`template_body`, text): The new template, in YAML or JSON. Leave this and Template URL empty to keep the stack's current template.
- Template URL (`template_url`, text): Instead of pasting the template: its https:// link in Amazon S3, such as https://my-bucket.s3.amazonaws.com/template.yaml.
- Parameters (`parameters`, object): New values for the template's parameters, by name. Any parameter left out keeps its current value.
- Capabilities (`capabilities`, list): Acknowledge what the template does that needs your consent: IAM resources, or macros. CloudFormation refuses the template and names the capability if one is missing. One or more of: `CAPABILITY_IAM` (IAM resources (CAPABILITY_IAM)), `CAPABILITY_NAMED_IAM` (IAM resources with custom names (CAPABILITY_NAMED_IAM)), `CAPABILITY_AUTO_EXPAND` (Macros and nested transforms (CAPABILITY_AUTO_EXPAND)).
- Tags (`tags`, object): Tag names and values. When given, they replace all of the stack's tags; leave empty to keep its current tags.
- Description (`description`, text): An optional note, up to 1,024 characters.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `capabilities` (list)
- `change_count` (number)
- `change_set_id` (text): The change set ARN.
- `change_set_name` (text)
- `changes` (list)
- `creation_time` (text)
- `description` (text)
- `execution_status` (text): AVAILABLE when it can be executed.
- `finished` (true/false): True once CloudFormation finished working out the changes.
- `has_changes` (true/false): False when the change set would change nothing.
- `on_stack_failure` (text)
- `parameters` (object)
- `stack_id` (text)
- `stack_name` (text)
- `status` (text): CREATE_PENDING, CREATE_IN_PROGRESS, CREATE_COMPLETE, FAILED, ...
- `status_reason` (text)
- `tags` (object)

**Example output**

```json
{
  "capabilities": [],
  "change_count": 1,
  "change_set_id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/release-42/1a2345b6-0000-00a0-a123-00abc0abc000",
  "change_set_name": "release-42",
  "changes": [
    {
      "action": "Modify",
      "logical_resource_id": "Queue",
      "physical_resource_id": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app",
      "policy_action": null,
      "replacement": "False",
      "resource_type": "AWS::SQS::Queue",
      "scope": [
        "Properties"
      ]
    }
  ],
  "creation_time": "2026-10-02T09:00:00+00:00",
  "description": "Raise the queue's retention",
  "execution_status": "AVAILABLE",
  "finished": true,
  "has_changes": true,
  "on_stack_failure": null,
  "parameters": {
    "Environment": "prod"
  },
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "CREATE_COMPLETE",
  "status_reason": null,
  "tags": {}
}
```

### Create a stack

Create a stack from a template, and by default wait until every resource is created. Give the template either pasted in or as an Amazon S3 link.

**Inputs**

- Stack name (`stack_name`, text, required): A name unique in this region: letters, digits and hyphens, starting with a letter, such as my-app-prod.
- Template (`template_body`, text): The template, in YAML or JSON, up to 51,200 bytes. For a bigger one, upload it to Amazon S3 and give its link in Template URL instead.
- Template URL (`template_url`, text): Instead of pasting the template: its https:// link in Amazon S3, such as https://my-bucket.s3.amazonaws.com/template.yaml.
- Parameters (`parameters`, object): Values for the template's parameters, by name, such as Environment = prod. A list value can be given as a, b, c.
- Capabilities (`capabilities`, list): Acknowledge what the template does that needs your consent: IAM resources, or macros. CloudFormation refuses the template and names the capability if one is missing. One or more of: `CAPABILITY_IAM` (IAM resources (CAPABILITY_IAM)), `CAPABILITY_NAMED_IAM` (IAM resources with custom names (CAPABILITY_NAMED_IAM)), `CAPABILITY_AUTO_EXPAND` (Macros and nested transforms (CAPABILITY_AUTO_EXPAND)).
- Tags (`tags`, object): Tag names and values, such as team = web, applied to the stack and every resource it creates that supports tags. Up to 50.
- If creation fails (`on_failure`, text): What CloudFormation does if a resource fails. One of: `ROLLBACK` (Roll back (delete what was created, keep the stack)), `DO_NOTHING` (Do nothing (keep what was created, for debugging)), `DELETE` (Delete the stack). Default: `ROLLBACK`.
- Timeout (minutes) (`timeout_in_minutes`, number): Fail the creation if it takes longer than this. Leave empty for no limit.
- Termination protection (`enable_termination_protection`, true/false): Refuse to delete the stack until this is off. Default: `false`.
- SNS topic ARNs (`notification_arns`, list): Up to 5 SNS topics to receive the stack's events, such as arn:aws:sns:us-east-1:123456789012:stack-events.
- Service role ARN (`role_arn`, text): An IAM role CloudFormation uses to create and change the resources, such as arn:aws:iam::123456789012:role/cfn-deployer. Leave empty to use this connection's own permissions.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `capabilities` (list)
- `creation_time` (text)
- `deletion_time` (text)
- `description` (text)
- `detailed_status` (text)
- `disable_rollback` (true/false)
- `drift_last_checked` (text)
- `drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `finished` (true/false): True once the stack settled. False when the step did not wait, or stopped waiting before CloudFormation finished.
- `last_updated_time` (text)
- `notification_arns` (list)
- `operation_id` (text): CloudFormation's id for this operation.
- `output_map` (object): Output name to value, for picking one by name.
- `outputs` (list)
- `parameters` (object): Parameter name to value.
- `parent_id` (text): For a nested stack, the stack ARN of its parent.
- `role_arn` (text)
- `root_id` (text)
- `stack_id` (text): The stack ARN, such as arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-...
- `stack_name` (text)
- `status` (text): Such as CREATE_COMPLETE, UPDATE_IN_PROGRESS or ROLLBACK_COMPLETE.
- `status_reason` (text)
- `tags` (object): Tag name to value.
- `termination_protection` (true/false)
- `timeout_in_minutes` (number)

**Example output**

```json
{
  "capabilities": [],
  "creation_time": "2026-10-01T09:00:00+00:00",
  "deletion_time": null,
  "description": "My app's queue and parameters",
  "detailed_status": null,
  "disable_rollback": false,
  "drift_last_checked": null,
  "drift_status": "NOT_CHECKED",
  "finished": true,
  "last_updated_time": null,
  "notification_arns": [],
  "operation_id": "8b0a6b1e-1c2d-4e5f-9a8b-7c6d5e4f3a2b",
  "output_map": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
  },
  "outputs": [
    {
      "description": "The queue's URL",
      "export_name": null,
      "key": "QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "parameters": {
    "Environment": "prod"
  },
  "parent_id": null,
  "role_arn": null,
  "root_id": null,
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "CREATE_COMPLETE",
  "status_reason": null,
  "tags": {
    "team": "web"
  },
  "termination_protection": false,
  "timeout_in_minutes": null
}
```

### Delete a change set

Throw away a change set without applying it. The stack is not changed.

**Inputs**

- Stack (`stack`, text): The change set's stack. Needed when the change set is given by name; leave empty when it is given by ARN.
- Change set (`change_set`, text, required): The change set. Pick one of the stack's, or give its name or ARN. With an ARN the stack can be left empty.

**Outputs**

- `change_set` (text)
- `deleted` (true/false)
- `stack` (text)

**Example output**

```json
{
  "change_set": "release-42",
  "deleted": true,
  "stack": "my-app"
}
```

### Delete a stack

Delete a stack and every resource it created (except those its template retains), and by default wait until it is gone. Termination protection must be off.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Resources to keep (`retain_resources`, list): Only for a stack in DELETE_FAILED: the logical ids (names in the template) of resources that could not be deleted and should be left in place.
- Deletion mode (`deletion_mode`, text): Force delete removes a stack stuck in DELETE_FAILED without deleting the resources that failed. One of: `STANDARD`, `FORCE_DELETE_STACK` (Force delete (only for a stack in DELETE_FAILED)). Default: `STANDARD`.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `capabilities` (list)
- `creation_time` (text)
- `deletion_time` (text)
- `description` (text)
- `detailed_status` (text)
- `disable_rollback` (true/false)
- `drift_last_checked` (text)
- `drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `finished` (true/false): True once the stack settled. False when the step did not wait, or stopped waiting before CloudFormation finished.
- `last_updated_time` (text)
- `notification_arns` (list)
- `output_map` (object): Output name to value, for picking one by name.
- `outputs` (list)
- `parameters` (object): Parameter name to value.
- `parent_id` (text): For a nested stack, the stack ARN of its parent.
- `role_arn` (text)
- `root_id` (text)
- `stack_id` (text): The stack ARN, such as arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-...
- `stack_name` (text)
- `status` (text): Such as CREATE_COMPLETE, UPDATE_IN_PROGRESS or ROLLBACK_COMPLETE.
- `status_reason` (text)
- `tags` (object): Tag name to value.
- `termination_protection` (true/false)
- `timeout_in_minutes` (number)

**Example output**

```json
{
  "capabilities": [],
  "creation_time": "2026-10-01T09:00:00+00:00",
  "deletion_time": "2026-10-04T09:00:00+00:00",
  "description": "My app's queue and parameters",
  "detailed_status": null,
  "disable_rollback": false,
  "drift_last_checked": null,
  "drift_status": "NOT_CHECKED",
  "finished": true,
  "last_updated_time": null,
  "notification_arns": [],
  "output_map": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
  },
  "outputs": [
    {
      "description": "The queue's URL",
      "export_name": null,
      "key": "QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "parameters": {
    "Environment": "prod"
  },
  "parent_id": null,
  "role_arn": null,
  "root_id": null,
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "DELETE_COMPLETE",
  "status_reason": null,
  "tags": {
    "team": "web"
  },
  "termination_protection": false,
  "timeout_in_minutes": null
}
```

### Detect stack drift

Check whether a stack's resources were changed outside CloudFormation, and by default wait for the result. 'List resource drifts' then shows what differs.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Only these resources (`logical_resource_ids`, list): Logical ids (names in the template) to check, such as Queue. Leave empty to check every resource.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `detection_status` (text): DETECTION_IN_PROGRESS, DETECTION_COMPLETE or DETECTION_FAILED.
- `detection_status_reason` (text)
- `drift_detection_id` (text)
- `drifted_resource_count` (number)
- `finished` (true/false): True once the detection finished.
- `stack_drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `stack_id` (text)
- `timestamp` (text)

**Example output**

```json
{
  "detection_status": "DETECTION_COMPLETE",
  "detection_status_reason": null,
  "drift_detection_id": "b78ac9b0-dec1-11e7-a451-50d5cd92b8ae",
  "drifted_resource_count": 0,
  "finished": true,
  "stack_drift_status": "IN_SYNC",
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "timestamp": "2026-10-03T09:00:00+00:00"
}
```

### Execute a change set

Apply a change set to its stack, and by default wait until the stack finishes updating. Its execution status must be AVAILABLE.

**Inputs**

- Stack (`stack`, text): The change set's stack. Needed when the change set is given by name; leave empty when it is given by ARN.
- Change set (`change_set`, text, required): The change set. Pick one of the stack's, or give its name or ARN. With an ARN the stack can be left empty.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `capabilities` (list)
- `change_set_id` (text)
- `creation_time` (text)
- `deletion_time` (text)
- `description` (text)
- `detailed_status` (text)
- `disable_rollback` (true/false)
- `drift_last_checked` (text)
- `drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `finished` (true/false): True once the stack settled. False when the step did not wait, or stopped waiting before CloudFormation finished.
- `last_updated_time` (text)
- `notification_arns` (list)
- `output_map` (object): Output name to value, for picking one by name.
- `outputs` (list)
- `parameters` (object): Parameter name to value.
- `parent_id` (text): For a nested stack, the stack ARN of its parent.
- `role_arn` (text)
- `root_id` (text)
- `stack_id` (text): The stack ARN, such as arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-...
- `stack_name` (text)
- `status` (text): Such as CREATE_COMPLETE, UPDATE_IN_PROGRESS or ROLLBACK_COMPLETE.
- `status_reason` (text)
- `tags` (object): Tag name to value.
- `termination_protection` (true/false)
- `timeout_in_minutes` (number)

**Example output**

```json
{
  "capabilities": [],
  "change_set_id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/release-42/1a2345b6-0000-00a0-a123-00abc0abc000",
  "creation_time": "2026-10-01T09:00:00+00:00",
  "deletion_time": null,
  "description": "My app's queue and parameters",
  "detailed_status": null,
  "disable_rollback": false,
  "drift_last_checked": null,
  "drift_status": "NOT_CHECKED",
  "finished": true,
  "last_updated_time": null,
  "notification_arns": [],
  "output_map": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
  },
  "outputs": [
    {
      "description": "The queue's URL",
      "export_name": null,
      "key": "QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "parameters": {
    "Environment": "prod"
  },
  "parent_id": null,
  "role_arn": null,
  "root_id": null,
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "UPDATE_COMPLETE",
  "status_reason": null,
  "tags": {
    "team": "web"
  },
  "termination_protection": false,
  "timeout_in_minutes": null
}
```

### Get a change set

Read a change set: its status, whether it can be executed, and every resource change it would make.

**Inputs**

- Stack (`stack`, text): The change set's stack. Needed when the change set is given by name; leave empty when it is given by ARN.
- Change set (`change_set`, text, required): The change set. Pick one of the stack's, or give its name or ARN. With an ARN the stack can be left empty.

**Outputs**

- `capabilities` (list)
- `change_count` (number)
- `change_set_id` (text): The change set ARN.
- `change_set_name` (text)
- `changes` (list)
- `creation_time` (text)
- `description` (text)
- `execution_status` (text): AVAILABLE when it can be executed.
- `has_changes` (true/false): False when the change set would change nothing.
- `on_stack_failure` (text)
- `parameters` (object)
- `stack_id` (text)
- `stack_name` (text)
- `status` (text): CREATE_PENDING, CREATE_IN_PROGRESS, CREATE_COMPLETE, FAILED, ...
- `status_reason` (text)
- `tags` (object)

**Example output**

```json
{
  "capabilities": [],
  "change_count": 1,
  "change_set_id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/release-42/1a2345b6-0000-00a0-a123-00abc0abc000",
  "change_set_name": "release-42",
  "changes": [
    {
      "action": "Modify",
      "logical_resource_id": "Queue",
      "physical_resource_id": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app",
      "policy_action": null,
      "replacement": "False",
      "resource_type": "AWS::SQS::Queue",
      "scope": [
        "Properties"
      ]
    }
  ],
  "creation_time": "2026-10-02T09:00:00+00:00",
  "description": "Raise the queue's retention",
  "execution_status": "AVAILABLE",
  "has_changes": true,
  "on_stack_failure": null,
  "parameters": {
    "Environment": "prod"
  },
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "CREATE_COMPLETE",
  "status_reason": null,
  "tags": {}
}
```

### Get a stack

Read a stack: its status, parameters, outputs (as a list and by name), tags and drift status.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.

**Outputs**

- `capabilities` (list)
- `creation_time` (text)
- `deletion_time` (text)
- `description` (text)
- `detailed_status` (text)
- `disable_rollback` (true/false)
- `drift_last_checked` (text)
- `drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `last_updated_time` (text)
- `notification_arns` (list)
- `output_map` (object): Output name to value, for picking one by name.
- `outputs` (list)
- `parameters` (object): Parameter name to value.
- `parent_id` (text): For a nested stack, the stack ARN of its parent.
- `role_arn` (text)
- `root_id` (text)
- `stack_id` (text): The stack ARN, such as arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-...
- `stack_name` (text)
- `status` (text): Such as CREATE_COMPLETE, UPDATE_IN_PROGRESS or ROLLBACK_COMPLETE.
- `status_reason` (text)
- `tags` (object): Tag name to value.
- `termination_protection` (true/false)
- `timeout_in_minutes` (number)

**Example output**

```json
{
  "capabilities": [],
  "creation_time": "2026-10-01T09:00:00+00:00",
  "deletion_time": null,
  "description": "My app's queue and parameters",
  "detailed_status": null,
  "disable_rollback": false,
  "drift_last_checked": null,
  "drift_status": "NOT_CHECKED",
  "last_updated_time": null,
  "notification_arns": [],
  "output_map": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
  },
  "outputs": [
    {
      "description": "The queue's URL",
      "export_name": null,
      "key": "QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "parameters": {
    "Environment": "prod"
  },
  "parent_id": null,
  "role_arn": null,
  "root_id": null,
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "CREATE_COMPLETE",
  "status_reason": null,
  "tags": {
    "team": "web"
  },
  "termination_protection": false,
  "timeout_in_minutes": null
}
```

### Get a template

Read the template a stack (or one of its change sets) uses, as text and, for JSON, as an object.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Change set (`change_set`, text): To read a change set's template instead of the stack's: its name or ARN. Leave empty for the stack's.
- Stage (`template_stage`, text): Original is the template as written; Processed has transforms such as AWS::Serverless applied. One of: `Original` (Original (as written)), `Processed` (Processed (with transforms applied)). Default: `Original`.

**Outputs**

- `stages_available` (list)
- `template` (object): A JSON template, parsed. Null for YAML.
- `template_body` (text): The template text, JSON or YAML.
- `template_format` (text): JSON or YAML.

**Example output**

```json
{
  "stages_available": [
    "Original",
    "Processed"
  ],
  "template": {
    "Resources": {
      "Queue": {
        "Type": "AWS::SQS::Queue"
      }
    }
  },
  "template_body": "{\n  \"Resources\": {\n    \"Queue\": {\n      \"Type\": \"AWS::SQS::Queue\"\n    }\n  }\n}",
  "template_format": "JSON"
}
```

### Get drift detection status

Read the progress and result of a drift detection that 'Detect stack drift' started.

**Inputs**

- Drift detection id (`drift_detection_id`, text, required): The 'drift_detection_id' that 'Detect stack drift' returned.

**Outputs**

- `detection_status` (text): DETECTION_IN_PROGRESS, DETECTION_COMPLETE or DETECTION_FAILED.
- `detection_status_reason` (text)
- `drift_detection_id` (text)
- `drifted_resource_count` (number)
- `stack_drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `stack_id` (text)
- `timestamp` (text)

**Example output**

```json
{
  "detection_status": "DETECTION_COMPLETE",
  "detection_status_reason": null,
  "drift_detection_id": "b78ac9b0-dec1-11e7-a451-50d5cd92b8ae",
  "drifted_resource_count": 0,
  "stack_drift_status": "IN_SYNC",
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "timestamp": "2026-10-03T09:00:00+00:00"
}
```

### List change sets

List a stack's change sets that are not yet executed.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Next token (`next_token`, text): To fetch the next page, the 'next_token' an earlier run of this step returned. Leave empty for the first page.

**Outputs**

- `change_sets` (list)
- `count` (number)
- `next_token` (text): Pass this as 'Next token' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "change_sets": [
    {
      "change_set_id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/release-42/1a2345b6-0000-00a0-a123-00abc0abc000",
      "change_set_name": "release-42",
      "creation_time": "2026-10-02T09:00:00+00:00",
      "description": "Raise the queue's retention",
      "execution_status": "AVAILABLE",
      "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
      "stack_name": "my-app",
      "status": "CREATE_COMPLETE",
      "status_reason": null
    }
  ],
  "count": 1,
  "next_token": null
}
```

### List exports

List the output values stacks in this region export for other stacks to import.

**Inputs**

- Next token (`next_token`, text): To fetch the next page, the 'next_token' an earlier run of this step returned. Leave empty for the first page.

**Outputs**

- `count` (number)
- `exports` (list)
- `next_token` (text): Pass this as 'Next token' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "count": 1,
  "exports": [
    {
      "exporting_stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
      "name": "my-app-QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "next_token": null
}
```

### List resource drifts

List the drift results of a stack's resources from the last drift detection, with each property that differs.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Drift statuses (`drift_statuses`, list): Only resources in up to 4 of these statuses, such as Modified and Deleted. Leave empty for all. One or more of: `MODIFIED`, `DELETED`, `IN_SYNC` (In sync), `NOT_CHECKED` (Not checked), `UNKNOWN`, `UNSUPPORTED`.
- Max results (`max_results`, number): How many to return in one page, from 1 to 100. From 1 to 100. Default: `100`.
- Next token (`next_token`, text): To fetch the next page, the 'next_token' an earlier run of this step returned. Leave empty for the first page.

**Outputs**

- `count` (number)
- `drifts` (list)
- `next_token` (text): Pass this as 'Next token' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "count": 1,
  "drifts": [
    {
      "actual_properties": "{\"MessageRetentionPeriod\":1209600}",
      "drift_status": "MODIFIED",
      "drift_status_reason": null,
      "expected_properties": "{\"MessageRetentionPeriod\":345600}",
      "logical_resource_id": "Queue",
      "physical_resource_id": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app",
      "property_differences": [
        {
          "actual_value": "1209600",
          "difference_type": "NOT_EQUAL",
          "expected_value": "345600",
          "property_path": "/MessageRetentionPeriod"
        }
      ],
      "resource_type": "AWS::SQS::Queue",
      "timestamp": "2026-10-03T09:00:00+00:00"
    }
  ],
  "next_token": null
}
```

### List stack events

List a stack's events, newest first: each resource's progress and, for a failure, the reason.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Failures only (`failures_only`, true/false): Only the events that report a failure, with why. Default: `false`.
- Next token (`next_token`, text): To fetch the next page, the 'next_token' an earlier run of this step returned. Leave empty for the first page.

**Outputs**

- `count` (number)
- `events` (list)
- `next_token` (text): Pass this as 'Next token' to fetch the next page. Null on the last page.

**Example output**

```json
{
  "count": 1,
  "events": [
    {
      "client_request_token": null,
      "detailed_status": null,
      "event_id": "Queue-CREATE_COMPLETE-2026-10-01T09:01:00.000Z",
      "hook_status": null,
      "hook_status_reason": null,
      "hook_type": null,
      "logical_resource_id": "Queue",
      "operation_id": null,
      "physical_resource_id": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app",
      "resource_type": "AWS::SQS::Queue",
      "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
      "stack_name": "my-app",
      "status": "CREATE_COMPLETE",
      "status_reason": null,
      "timestamp": "2026-10-01T09:01:00+00:00"
    }
  ],
  "next_token": null
}
```

### List stack resources

List the resources a stack created, with each one's real id and status.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Next token (`next_token`, text): To fetch the next page, the 'next_token' an earlier run of this step returned. Leave empty for the first page.

**Outputs**

- `count` (number)
- `next_token` (text): Pass this as 'Next token' to fetch the next page. Null on the last page.
- `resources` (list)

**Example output**

```json
{
  "count": 1,
  "next_token": null,
  "resources": [
    {
      "drift_last_checked": null,
      "drift_status": "NOT_CHECKED",
      "last_updated_time": "2026-10-01T09:01:00+00:00",
      "logical_resource_id": "Queue",
      "physical_resource_id": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app",
      "resource_type": "AWS::SQS::Queue",
      "status": "CREATE_COMPLETE",
      "status_reason": null
    }
  ]
}
```

### List stacks

List the stacks in the connection's region, newest first, with their status. Stacks deleted in the last 90 days are left out unless you pick DELETE_COMPLETE.

**Inputs**

- Statuses (`statuses`, list): Only stacks in these statuses. Leave empty for every stack that is not deleted. One or more of: `CREATE_IN_PROGRESS`, `CREATE_FAILED`, `CREATE_COMPLETE`, `ROLLBACK_IN_PROGRESS`, `ROLLBACK_FAILED`, `ROLLBACK_COMPLETE`, `DELETE_IN_PROGRESS`, `DELETE_FAILED`, `DELETE_COMPLETE`, `UPDATE_IN_PROGRESS`, and 13 more.
- Next token (`next_token`, text): To fetch the next page, the 'next_token' an earlier run of this step returned. Leave empty for the first page.

**Outputs**

- `count` (number)
- `next_token` (text): Pass this as 'Next token' to fetch the next page. Null on the last page.
- `stacks` (list)

**Example output**

```json
{
  "count": 1,
  "next_token": null,
  "stacks": [
    {
      "creation_time": "2026-10-01T09:00:00+00:00",
      "deletion_time": null,
      "drift_last_checked": null,
      "drift_status": "NOT_CHECKED",
      "last_updated_time": null,
      "parent_id": null,
      "root_id": null,
      "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
      "stack_name": "my-app",
      "status": "CREATE_COMPLETE",
      "status_reason": null,
      "template_description": "My app's queue and parameters"
    }
  ]
}
```

### Set termination protection

Turn a stack's termination protection on or off. While it is on, the stack cannot be deleted.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Enabled (`enabled`, true/false, required): On to protect the stack, off to allow deleting it.

**Outputs**

- `stack_id` (text)
- `termination_protection` (true/false)

**Example output**

```json
{
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "termination_protection": true
}
```

### Update a stack

Change a stack's template, parameter values or tags, and by default wait until the update finishes. Parameters you leave out keep their current values. When nothing would change, the step succeeds with 'updated' false.

**Inputs**

- Stack (`stack`, text, required): The stack. Pick one, or give its name, its stack ARN, or the link to its page in the CloudFormation console. It must be in the connection's region.
- Template (`template_body`, text): The new template, in YAML or JSON. Leave this and Template URL empty to keep the stack's current template.
- Template URL (`template_url`, text): Instead of pasting the template: its https:// link in Amazon S3, such as https://my-bucket.s3.amazonaws.com/template.yaml.
- Parameters (`parameters`, object): New values for the template's parameters, by name. Any parameter left out keeps its current value.
- Capabilities (`capabilities`, list): Acknowledge what the template does that needs your consent: IAM resources, or macros. CloudFormation refuses the template and names the capability if one is missing. One or more of: `CAPABILITY_IAM` (IAM resources (CAPABILITY_IAM)), `CAPABILITY_NAMED_IAM` (IAM resources with custom names (CAPABILITY_NAMED_IAM)), `CAPABILITY_AUTO_EXPAND` (Macros and nested transforms (CAPABILITY_AUTO_EXPAND)).
- Tags (`tags`, object): Tag names and values. When given, they replace all of the stack's tags; leave empty to keep its current tags.
- Keep changes if it fails (`disable_rollback`, true/false): On: if the update fails, keep the resources already changed instead of rolling back. Leave empty for the stack's own setting.
- Service role ARN (`role_arn`, text): An IAM role CloudFormation uses to create and change the resources, such as arn:aws:iam::123456789012:role/cfn-deployer. Leave empty to use this connection's own permissions.
- Wait until finished (`wait_for_completion`, true/false): Keep the step running until CloudFormation finishes, and fail it with the resource errors if it rolled back. Off returns as soon as CloudFormation has started. Default: `true`.
- Stop waiting after (seconds) (`wait_timeout_seconds`, number): How long to wait, from 10 to 900 seconds. If CloudFormation is still working then, the step returns with 'finished' false and the operation carries on; follow it with 'Get a stack'. From 10 to 900. Default: `300`.

**Outputs**

- `capabilities` (list)
- `creation_time` (text)
- `deletion_time` (text)
- `description` (text)
- `detailed_status` (text)
- `disable_rollback` (true/false)
- `drift_last_checked` (text)
- `drift_status` (text): DRIFTED, IN_SYNC, UNKNOWN or NOT_CHECKED.
- `finished` (true/false): True once the stack settled. False when the step did not wait, or stopped waiting before CloudFormation finished.
- `last_updated_time` (text)
- `notification_arns` (list)
- `operation_id` (text): CloudFormation's id for this operation.
- `output_map` (object): Output name to value, for picking one by name.
- `outputs` (list)
- `parameters` (object): Parameter name to value.
- `parent_id` (text): For a nested stack, the stack ARN of its parent.
- `role_arn` (text)
- `root_id` (text)
- `stack_id` (text): The stack ARN, such as arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-...
- `stack_name` (text)
- `status` (text): Such as CREATE_COMPLETE, UPDATE_IN_PROGRESS or ROLLBACK_COMPLETE.
- `status_reason` (text)
- `tags` (object): Tag name to value.
- `termination_protection` (true/false)
- `timeout_in_minutes` (number)
- `updated` (true/false): False when the stack already matched, so nothing changed.

**Example output**

```json
{
  "capabilities": [],
  "creation_time": "2026-10-01T09:00:00+00:00",
  "deletion_time": null,
  "description": "My app's queue and parameters",
  "detailed_status": null,
  "disable_rollback": false,
  "drift_last_checked": null,
  "drift_status": "NOT_CHECKED",
  "finished": true,
  "last_updated_time": "2026-10-02T09:00:00+00:00",
  "notification_arns": [],
  "operation_id": "8b0a6b1e-1c2d-4e5f-9a8b-7c6d5e4f3a2c",
  "output_map": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
  },
  "outputs": [
    {
      "description": "The queue's URL",
      "export_name": null,
      "key": "QueueUrl",
      "value": "https://sqs.us-east-1.amazonaws.com/123456789012/my-app"
    }
  ],
  "parameters": {
    "Environment": "prod"
  },
  "parent_id": null,
  "role_arn": null,
  "root_id": null,
  "stack_id": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-app/1c2fa620-982a-11e3-aff7-50e2416294e0",
  "stack_name": "my-app",
  "status": "UPDATE_COMPLETE",
  "status_reason": null,
  "tags": {
    "team": "web"
  },
  "termination_protection": false,
  "timeout_in_minutes": null,
  "updated": true
}
```

### Validate a template

Check a template's syntax and list its parameters and the capabilities it needs. An invalid template is returned with 'valid' false and the reason, not as an error.

**Inputs**

- Template (`template_body`, text): The template, in YAML or JSON, up to 51,200 bytes. Or give its Amazon S3 link in Template URL.
- Template URL (`template_url`, text): Instead of pasting the template: its https:// link in Amazon S3, such as https://my-bucket.s3.amazonaws.com/template.yaml.

**Outputs**

- `capabilities` (list): Capabilities a stack from this template must acknowledge.
- `capabilities_reason` (text)
- `declared_transforms` (list)
- `description` (text)
- `message` (text): Why the template is not valid. Null when it is.
- `parameters` (list)
- `valid` (true/false)

**Example output**

```json
{
  "capabilities": [],
  "capabilities_reason": null,
  "declared_transforms": [],
  "description": "My app's queue and parameters",
  "message": null,
  "parameters": [
    {
      "default_value": "dev",
      "description": "dev or prod",
      "key": "Environment",
      "no_echo": false
    }
  ],
  "valid": true
}
```
