#!/bin/python import boto3 #from pprint import pprint, pformat import json import codecs import sys import argparse import logging def parse_arguments(): parser = argparse.ArgumentParser() parser.add_argument('--accesskey', help='AWS Access key', default='') parser.add_argument('--secretkey', help='AWS Secret key', default='') parser.add_argument('--region', help='AWS Default region', default='us-east-1') parser.add_argument('--outfile', help='Path to output file with results', default='./secret_list.json') requiredNamed = parser.add_argument_group('required named arguments') requiredNamed.add_argument('--env', help='Environment prefix', required=True) requiredNamed.add_argument('--projectgroup', help='Name of the project group', required=True) requiredNamed.add_argument('--project', help='Name of the project', required=True) return parser.parse_args() if __name__ == "__main__": logger = logging.getLogger('') logger.setLevel(logging.DEBUG) args = parse_arguments() # Using project-specific parameters and common parameters for project group param_paths = [ f'/{args.projectgroup}/{args.env}/common', f'/{args.projectgroup}/{args.env}/{args.project}' ] # Initialize the client with credentials or with IAM role. try: if (args.accesskey and args.secretkey): ssm_client = boto3.client( 'ssm', aws_access_key_id = args.accesskey, aws_secret_access_key = args.secretkey, region_name = args.region ) else: ssm_client = boto3.client('ssm', region_name=args.region) except: logger.exception("Client initialization error:") # Get all parameters in specified paths params = list() param_paginator = ssm_client.get_paginator('get_parameters_by_path') try: for path in param_paths: for page in param_paginator.paginate(Path=path,Recursive=True): params += page['Parameters'] except: logger.error("Error during reading the parameter store.") sys.exit(1) # Create a map of parameters which will fit in container definition in ECS secrets_list = [ { "name": x['Name'].split('/')[-1], "valueFrom": x['ARN'] } for x in params ] # Write output to file try: with open(args.outfile, 'wb') as f: json.dump( secrets_list, codecs.getwriter('utf-8')(f), indent=2, ensure_ascii=False ) except: logger.error("Error while writing secrets to output file %s", args.outfile) sys.exit(1)