Get all env variables for all AWS Lamda functions in a CloudFormation/SAM stack
#! /usr/bin/env python | |
# Use at your own risk and reward. | |
# requires boto3 to be installed | |
# example `./get-vars.py MyStack > vars.json` | |
import sys, json | |
import boto3 | |
if len(sys.argv) == 1: | |
print('CloudFormation stack required') | |
sys.exit() | |
cloudformation_client = boto3.client('cloudformation') | |
lambda_client = boto3.client('lambda') | |
page = {} | |
# Grab stack from AWS | |
try: | |
stack_resources = cloudformation_client.list_stack_resources( | |
StackName=sys.argv[1] | |
) | |
except Exception as e: | |
print(e) | |
sys.exit() | |
# Grab environment vars from each lambda in the stack | |
for resource in stack_resources['StackResourceSummaries']: | |
if(resource['ResourceType']=='AWS::Lambda::Function'): | |
lambda_config = lambda_client.get_function_configuration( | |
FunctionName=resource['PhysicalResourceId'] | |
) | |
if 'Environment' in lambda_config and 'Variables' in lambda_config['Environment']: | |
page[resource['LogicalResourceId']] = lambda_config['Environment']['Variables'] | |
# Print to console | |
print(json.dumps(page, indent=2)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
I use theis script to generate my environment file for using AWS SAM
sam local invoke -n environmant-vars.json
. As described here: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-invoke.html#serverless-sam-cli-using-invoke-environment-file