Skip to content

Commit 3b1cac4

Browse files
authored
Merge pull request #28 from linhtrantuan/main
[Add] - ssm portforwarding
2 parents dfae907 + 3e21f62 commit 3b1cac4

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

common/peco.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ peco_aws_list_db_clusters() {
138138
peco_aws_input 'aws rds describe-db-clusters --query "*[].DBClusterIdentifier"' 'true'
139139
}
140140

141+
peco_aws_list_db_endpoint() {
142+
peco_aws_input 'aws rds describe-db-clusters --query "*[].[Endpoint, ReaderEndpoint]"' 'true'
143+
}
144+
141145
peco_aws_list_db_instances() {
142146
peco_aws_input 'aws rds describe-db-instances --query "*[].DBInstanceIdentifier"' 'true'
143147
}

services/ec2.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ local_aws_ec2_instance_id_peco_menu() {
66
echo ${aws_ec2_instance_id}
77
}
88

9+
local_aws_rds_endpoint_peco_menu() {
10+
local aws_rds_endpoint=$(peco_create_menu 'peco_aws_list_db_endpoint')
11+
aws_rds_endpoint=$(echo "${aws_rds_endpoint}" | awk -F "_" '{print $1}')
12+
echo ${aws_rds_endpoint}
13+
}
14+
915
# AWS ec2
1016
# List all ec2 instance(don't care stopped or running instances)
1117
aws_ec2_list_all() {
@@ -122,6 +128,14 @@ aws_ec2_connect_with_hint() {
122128
aws_ssm_connection_ec2 $(local_aws_ec2_instance_id_peco_menu)
123129
}
124130

131+
aws_ec2_connect_forwarding_for_rds_with_hint() {
132+
local ec2_instance_id=$(local_aws_ec2_instance_id_peco_menu)
133+
local rds_endpoint=$(local_aws_rds_endpoint_peco_menu)
134+
echo "Enter your local port forwarding to the instance"
135+
read local_port
136+
aws_ssm_port_forwarding_ec2 $ec2_instance_id $rds_endpoint $local_port
137+
}
138+
125139
aws_ec2_list_eips() {
126140
aws_run_commandline 'aws ec2 describe-addresses'
127141
}

services/ssm.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,21 @@ aws_ssm_connection_ec2() {
2727
fi
2828

2929
}
30+
31+
aws_ssm_port_forwarding_ec2_for_rds() {
32+
aws_ec2_instance_id=$1
33+
aws_rds_endpoint=$2
34+
local_port=$3
35+
aws_commandline_logging "\
36+
aws ssm start-session --target ${aws_ec2_instance_id:?'aws_ec2_instance_id is unset or empty'}
37+
--document-name AWS-StartPortForwardingSessionToRemoteHost \
38+
--parameters host="${aws_rds_endpoint:?'aws_rds_endpoint is unset or empty'}",portNumber="3306",localPortNumber="${local_port:?'local_port is unset or empty'}"
39+
"
40+
41+
if [[ -n "${aws_ec2_instance_id}" || -n "${aws_rds_endpoint}"|| -n "${local_port}" ]]; then
42+
aws ssm start-session --target $aws_ec2_instance_id \
43+
--document-name AWS-StartPortForwardingSessionToRemoteHost \
44+
--parameters host="$aws_rds_endpoint",portNumber="3306",localPortNumber="$local_port"
45+
fi
46+
47+
}

0 commit comments

Comments
 (0)