@@ -78,6 +78,11 @@ show_help() {
7878 echo " show-key Show current API key (masked)"
7979 echo " remove-key Remove stored API key"
8080 echo " "
81+ echo " AWS CLOUDWATCH MANAGEMENT:"
82+ echo " add-aws-credentials <access_key> <secret_key> [region] Add AWS credentials for CloudWatch datasource"
83+ echo " show-aws-credentials Show current AWS credentials (masked)"
84+ echo " remove-aws-credentials Remove stored AWS credentials"
85+ echo " "
8186 echo " GRAFANA PASSWORD MANAGEMENT:"
8287 echo " generate-grafana-password Generate secure password for Grafana"
8388 echo " show-grafana-credentials Show current Grafana credentials"
@@ -119,6 +124,11 @@ show_help() {
119124 echo " $0 test-instance prod-db # Test connection to 'prod-db' instance"
120125 echo " $0 remove-instance old-db # Remove 'old-db' instance"
121126 echo " "
127+ echo " AWS CLOUDWATCH EXAMPLES:"
128+ echo " $0 add-aws-credentials AKIAIOSFODNN7EXAMPLE wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY us-east-1"
129+ echo " $0 show-aws-credentials # Display masked AWS credentials"
130+ echo " $0 remove-aws-credentials # Disable CloudWatch datasource"
131+ echo " "
122132 echo " WORKFLOW:"
123133 echo " QUICKSTART (RECOMMENDED):"
124134 echo " • Run '$0 quickstart' for complete production setup (install + configure + start)"
@@ -681,6 +691,94 @@ get_api_key() {
681691 fi
682692}
683693
694+ # Add AWS credentials to configuration
695+ add_aws_credentials () {
696+ local access_key=" $1 "
697+ local secret_key=" $2 "
698+ local region=" ${3:- us-east-1} "
699+
700+ if [ -z " $access_key " ] || [ -z " $secret_key " ]; then
701+ log_error " Please provide both AWS access key and secret key"
702+ echo " Usage: $0 add-aws-credentials <access_key> <secret_key> [region]"
703+ echo " region defaults to us-east-1 if not specified"
704+ exit 1
705+ fi
706+
707+ # Create config file if it doesn't exist
708+ touch " $SCRIPT_DIR /.pgwatch-config"
709+
710+ # Remove existing AWS credentials if present
711+ if [ -f " $SCRIPT_DIR /.pgwatch-config" ]; then
712+ grep -v " ^aws_access_key=" " $SCRIPT_DIR /.pgwatch-config" | grep -v " ^aws_secret_key=" | grep -v " ^aws_region=" > " $SCRIPT_DIR /.pgwatch-config.tmp" || true
713+ mv " $SCRIPT_DIR /.pgwatch-config.tmp" " $SCRIPT_DIR /.pgwatch-config"
714+ fi
715+
716+ # Add the new AWS credentials
717+ echo " aws_access_key=$access_key " >> " $SCRIPT_DIR /.pgwatch-config"
718+ echo " aws_secret_key=$secret_key " >> " $SCRIPT_DIR /.pgwatch-config"
719+ echo " aws_region=$region " >> " $SCRIPT_DIR /.pgwatch-config"
720+
721+ log_success " AWS credentials added successfully"
722+ log_info " CloudWatch datasource will be enabled on next restart"
723+ log_info " Region: $region "
724+ }
725+
726+ # Show AWS credentials (masked for security)
727+ show_aws_credentials () {
728+ if [ -f " $SCRIPT_DIR /.pgwatch-config" ]; then
729+ local access_key=$( grep " ^aws_access_key=" " $SCRIPT_DIR /.pgwatch-config" 2> /dev/null | cut -d' =' -f2)
730+ local region=$( grep " ^aws_region=" " $SCRIPT_DIR /.pgwatch-config" 2> /dev/null | cut -d' =' -f2)
731+
732+ if [ -n " $access_key " ]; then
733+ local masked_key=" ${access_key: 0: 4} $( printf ' %*s' $(( ${# access_key} - 8 )) ' ' | tr ' ' ' *' ) ${access_key: -4} "
734+ log_info " CloudWatch Configuration:"
735+ echo " AWS Access Key: $masked_key "
736+ echo " AWS Region: ${region:- us-east-1} "
737+ log_success " CloudWatch datasource is configured"
738+ else
739+ log_warning " No AWS credentials configured"
740+ log_info " CloudWatch datasource is disabled"
741+ fi
742+ else
743+ log_warning " No AWS credentials configured"
744+ log_info " CloudWatch datasource is disabled"
745+ fi
746+ }
747+
748+ # Remove AWS credentials from configuration
749+ remove_aws_credentials () {
750+ if [ -f " $SCRIPT_DIR /.pgwatch-config" ]; then
751+ grep -v " ^aws_access_key=" " $SCRIPT_DIR /.pgwatch-config" | grep -v " ^aws_secret_key=" | grep -v " ^aws_region=" > " $SCRIPT_DIR /.pgwatch-config.tmp" || true
752+ mv " $SCRIPT_DIR /.pgwatch-config.tmp" " $SCRIPT_DIR /.pgwatch-config"
753+ log_success " AWS credentials removed successfully"
754+ log_info " CloudWatch datasource will be disabled on next restart"
755+ else
756+ log_warning " No AWS credentials configured"
757+ fi
758+ }
759+
760+ # Get AWS credentials from configuration
761+ get_aws_access_key () {
762+ if [ -f " $SCRIPT_DIR /.pgwatch-config" ]; then
763+ grep " ^aws_access_key=" " $SCRIPT_DIR /.pgwatch-config" 2> /dev/null | cut -d' =' -f2
764+ fi
765+ }
766+
767+ get_aws_secret_key () {
768+ if [ -f " $SCRIPT_DIR /.pgwatch-config" ]; then
769+ grep " ^aws_secret_key=" " $SCRIPT_DIR /.pgwatch-config" 2> /dev/null | cut -d' =' -f2
770+ fi
771+ }
772+
773+ get_aws_region () {
774+ if [ -f " $SCRIPT_DIR /.pgwatch-config" ]; then
775+ local region=$( grep " ^aws_region=" " $SCRIPT_DIR /.pgwatch-config" 2> /dev/null | cut -d' =' -f2)
776+ echo " ${region:- us-east-1} "
777+ else
778+ echo " us-east-1"
779+ fi
780+ }
781+
684782# Detect project directory
685783detect_project_dir () {
686784 # Check if we're already in the project directory
@@ -2075,6 +2173,15 @@ main() {
20752173 " remove-key" )
20762174 remove_api_key
20772175 ;;
2176+ " add-aws-credentials" )
2177+ add_aws_credentials " $2 " " $3 " " $4 "
2178+ ;;
2179+ " show-aws-credentials" )
2180+ show_aws_credentials
2181+ ;;
2182+ " remove-aws-credentials" )
2183+ remove_aws_credentials
2184+ ;;
20782185 " generate-grafana-password" )
20792186 generate_grafana_password
20802187 ;;
0 commit comments