@@ -78,6 +78,11 @@ show_help() {
7878echo " show-key Show current API key (masked)"
7979echo " remove-key Remove stored API key"
8080echo " "
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 " "
8186echo " GRAFANA PASSWORD MANAGEMENT:"
8287echo " generate-grafana-password Generate secure password for Grafana"
8388echo " show-grafana-credentials Show current Grafana credentials"
@@ -119,6 +124,11 @@ show_help() {
119124echo " $0 test-instance prod-db # Test connection to 'prod-db' instance"
120125echo " $0 remove-instance old-db # Remove 'old-db' instance"
121126echo " "
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 " "
122132echo " WORKFLOW:"
123133echo " QUICKSTART (RECOMMENDED):"
124134echo " • Run '$0 quickstart' for complete production setup (install + configure + start)"
@@ -681,6 +691,94 @@ get_api_key() {
681691fi
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 ;;