cdkDeploy
cdkDeploy
This script performs a CDK deploy into an AWS account.
Welcome users: run this script as
ENVIRONMENT=some_env python3 cdkDeploy [-p <properties_env>] [-l <cdk_language> (Default: python)] [-h Help] [-v VERBOSE]
1#!/usr/bin/env python3 2""" 3cdkDeploy 4 5This script performs a CDK deploy into an AWS account. 6 7Welcome users: run this script as 8 9 ENVIRONMENT=some_env python3 cdkDeploy [-p <properties_env>] [-l <cdk_language> (Default: python)] [-h Help] [-v VERBOSE] 10 11""" 12 13import argparse 14import os 15import glob 16import sys 17from pathlib import Path 18from utils import cdk, common 19from subprocess_tee import run as _run 20 21REGION = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1') 22 23 24if __name__ == "__main__": 25 print("cdkDeploy.__main__(): BEGIN") 26 27 # 28 # ArgParse 29 # 30 parser = argparse.ArgumentParser(description='Deploy a CDK to an AWS Environment.') 31 parser.add_argument( 32 '-p', 33 '--properties_env', 34 action='store', 35 type=str, 36 required=False, 37 default=os.environ.get('CDK_ENV', None), 38 help='properties env file [i.e. gov-prod in properties.gov-prod.json]') 39 40 parser.add_argument( 41 '-l', 42 '--language', 43 action='store', 44 type=str, 45 required=False, 46 default=os.environ.get('CDK_LANG', None), 47 help='cdk language to use [python, typescript]') 48 49 parser.add_argument( 50 '-P', 51 '--path', 52 action='store', 53 type=str, 54 required=False, 55 default=os.environ.get('CDK_PATH', None), 56 help='cdk path, if different from root. Will attempt to dynamically find it.') 57 58 parser.add_argument( 59 '-v', 60 '--verbose', 61 action='count', 62 default=0, 63 required=False, 64 help='verbosity level') 65 66 args = parser.parse_args() 67 68 _VERBOSE = args.verbose 69 _CDK_ENV = args.properties_env 70 _CDK_LANG = args.language 71 _CDK_PATH = args.path if args.path is not None else os.path.dirname(glob.glob('**/cdk.json', recursive=True)[0]) 72 _PROPS_FILE = f"properties.{_CDK_ENV}.json" 73 74 with common.ChDir(_CDK_PATH): 75 76 env_file = Path(_PROPS_FILE).read_text() 77 # env_data = json.load(env_file) 78 print(env_file) 79 80 cdk.install_cdk_requirements(cdk_lang=_CDK_LANG) 81 82 my_env = os.environ.copy() 83 my_env["ENVIRONMENT"] = _CDK_ENV 84 85 _process_output = _run(['cdk', 'deploy', '--require-approval', 'never', '--all'], env=my_env, check=True) 86 87 with open('cdk.deploy.txt', 'w') as file: 88 if _process_output.stderr is not None: 89 file.write(_process_output.stderr) 90 91 if _process_output.stdout is not None: 92 file.write(_process_output.stdout) 93 94 sys.exit(_process_output.returncode)