Skip to content

A GitHub Action to save CloudFormation stack outputs to env vars.

License

Notifications You must be signed in to change notification settings

puremcc/save-stack-outputs

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

save-stack-outputs

Save CloudFormation stack outputs to job-level env vars for use by other steps. Inspired by deep-mm/set-variables.

This is designed for common use cases such as passing variables from a frontend stack to a backend stack and vice versa, or passing stack output values to a set of integration tests.

Example usage

In this case, some components of my-app need to share information that is not known until the respective stack has been deployed.

  1. The backend needs to know the URL where the frontend is deployed, so that it can configure things like CORS and OAuth callback URLs accordingly.
  2. When building the frontend website, it needs to know some things from the backend stack such as the API URL(s), IDP config (e.g. Auth/Token URL, User Pool ID, etc.)
- name: Deploy frontend infra
  working-directory: frontend
  run: |
      sam deploy --stack-name my-app-frontend-infra \
          --s3-bucket $ARTIFACT_BUCKET \
          --no-fail-on-empty-changeset \
          --no-confirm-changeset \
          --capabilities CAPABILITY_IAM \

##### Use the save-stack-outputs action here. #####
- name: Save frontend stack outputs
  uses: puremcc/save-stack-outputs@v1
  with:
    stack-name: my-app-frontend-infra

## Github Workflow Output:
#
# Saving outputs from stack 'my-app-frontend-infrae' to the following env vars:
#   BucketName: my-app-website-bucket
#   WebsiteUrl: https://abcd1234.cloudfront.net
#   DistributionId: ABCDE12345

# Now we can use $WebsiteUrl for the 'AppHostUrl' parameter override when 
# deploying our backend stack.

- name: Deploy backend
  working-directory: backend
  run: |
    sam deploy --stack-name my-app-backend-infra \
        --s3-bucket $ARTIFACT_BUCKET \
        --no-fail-on-empty-changeset \
        --no-confirm-changeset \
        --capabilities CAPABILITY_IAM \
        --parameter-overrides "AppHostUrl=$WebsiteUrl"

##### Use the save-stack-outputs action here. #####
- name: Save backend stack outputs
  uses: puremcc/save-stack-outputs@v1
  with:
    stack-name: my-app-backend-infra

## Github Workflow Output:
#
# Saving outputs from stack 'my-app-backend-infra' to the following env vars:
#   UserPoolId: us-east-1_aBcD1234
#   UserPoolAuthDomain: my-app-backend-infra.auth.us-east-1.amazoncognito.com
#   UserPoolWebClientId: 8ja2f1lhj36db3ima7qpuvdlp
#   UserPoolRegion: us-east-1
#   ApiUrl: https://1234abcd5678.execute-api.us-east-1.amazonaws.com

# Frontend JS compiler can now use the environment variables that were set from 
# the stack outputs in the previous step.
- name: Build frontend for Dev
  working-directory: frontend
  run: npm run build

About

A GitHub Action to save CloudFormation stack outputs to env vars.

Resources

License

Stars

Watchers

Forks

Packages