sceptre: Using Stack Outputs for Dependent CloudFormation Stacks

sceptre stack_output AWS CloudFormation

2 min read | by Jordi Prats

Sceptre is a command-line tool that allows you to manage AWS CloudFormation stacks. One of the features of sceptre is the ability to use stack outputs in other stacks, allowing you to create a dependent relationship between stacks, where one stack's output can be used as an input to another stack.

Let's assume we are creating a S3 bucket that one of it's outputs is the BucketName:

AWSTemplateFormatVersion: 2010-09-09 Description: Deploy the S3 Service Catalog Product Parameters:  BucketName:  Type: String (...) Outputs:  BucketName:  Description: Name of created S3 Bucket  Value: !GetAtt Bucket.Outputs.BucketName  ARN:  Description: ARN of created S3 Bucket  Value: !GetAtt Bucket.Outputs.ARN 

We can instantiate it as usual:

template_path: "s3.yaml" parameters: BucketName: test-s3 

To use the output from one stack as an input in another, we can utilize the stack_output function in Sceptre. This function takes in two arguments: the name of the stack (including the full path if necessary) and the specific output that we want to use, separated by double colons.

template_path: "velero-backups-policy.yaml" parameters: PolicyNameSuffix: VeleroBackups  BucketName: !stack_output s3.yaml::BucketName 

Since we are using the output of one stack as input for another, we are defining an implicit dependency.


Posted on 30/01/2023