Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions aliases
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ alias _bma_stack_diff_template='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma _bma_sta
alias _bma_stack_name_arg='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma _bma_stack_name_arg'
alias _bma_stack_params_arg='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma _bma_stack_params_arg'
alias _bma_stack_template_arg='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma _bma_stack_template_arg'
alias ad-apps='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma ad-apps'
alias ad-user-groups='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma ad-user-groups'
alias ad-users='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma ad-users'
alias asg-capacity='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma asg-capacity'
alias asg-desired-size-set='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma asg-desired-size-set'
Expand Down Expand Up @@ -73,6 +75,7 @@ alias elbv2-subnets='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma elbv2-subnets'
alias elbv2-target-groups='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma elbv2-target-groups'
alias elbv2s='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma elbv2s'
alias front-door-waf-policies='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma front-door-waf-policies'
alias front-door-waf-policy='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma front-door-waf-policy'
alias front-door-waf-policy-rule-delete='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma front-door-waf-policy-rule-delete'
alias front-door-waf-policy-rule-match-condition-values='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma front-door-waf-policy-rule-match-condition-values'
alias front-door-waf-policy-rule-match-conditions='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma front-door-waf-policy-rule-match-conditions'
Expand All @@ -96,6 +99,7 @@ alias instance-ssh='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-ssh'
alias instance-ssh-details='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-ssh-details'
alias instance-ssm='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-ssm'
alias instance-ssm-port-forward='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-ssm-port-forward'
alias instance-ssm-port-forward-remote-host='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-ssm-port-forward-remote-host'
alias instance-stack='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-stack'
alias instance-start='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-start'
alias instance-state='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma instance-state'
Expand Down Expand Up @@ -140,9 +144,12 @@ alias rds-db-clusters='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma rds-db-clusters'
alias rds-db-instances='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma rds-db-instances'
alias region-each='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma region-each'
alias regions='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma regions'
alias resource-export='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resource-export'
alias resource-group='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resource-group'
alias resource-group-export='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resource-group-export'
alias resource-group-unset='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resource-group-unset'
alias resource-groups='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resource-groups'
alias resourceids='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resourceids'
alias resources='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma resources'
alias service-principals='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma service-principals'
alias skim-stdin='${BMA_HOME:-$HOME/.bash-my-aws}/bin/bma skim-stdin'
Expand Down
1 change: 1 addition & 0 deletions bash_completion.sh
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ complete -F _bma_instances_completion instance-ssh
complete -F _bma_instances_completion instance-ssh-details
complete -F _bma_instances_completion instance-ssm
complete -F _bma_instances_completion instance-ssm-port-forward
complete -F _bma_instances_completion instance-ssm-port-forward-remote-host
complete -F _bma_instances_completion instance-stack
complete -F _bma_instances_completion instance-start
complete -F _bma_instances_completion instance-state
Expand Down
57 changes: 57 additions & 0 deletions docs/command-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -618,6 +618,26 @@ Create tunnel from localhost to remote EC2 instance
USAGE: instance-ssm-port-forward local_port_number port_number instance-id [instance-id]


### instance-ssm-port-forward-remote-host

Start a port forwarding session to a remote host through an EC2 instance.
The remote host isn't required to be managed by AWS Systems Manager as long as
it is accessible from the EC2 instance. [Reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-remote-port-forwarding)

USAGE: instance-ssm-port-forward-remote-host local_port_number port_number host instance-id [instance-id]

EXAMPLE:
$ instance-ssm-port-forward-remote-host 3306 3306 database.ap-southeast-2.rds.amazonaws.com i-xxxx
Starting session with SessionId: dina-00000000000000000
Port 3306 opened for sessionId dina-00000000000000000.
Waiting for connections...

$ instances jumphost | instance-ssm-port-forward-remote-host 3306 3306 database.ap-southeast-2.rds.amazonaws.com
Starting session with SessionId: dina-00000000000000000
Port 3306 opened for sessionId dina-00000000000000000.
Waiting for connections...


### instance-stack

List CloudFormation stack EC2 Instance(s) belong to (if any)
Expand Down Expand Up @@ -912,6 +932,10 @@ Create arguments from output of az-cache-items() (if present)
resource-group


### function
resource-group-export


### function
resource-group-unset

Expand All @@ -920,6 +944,14 @@ Create arguments from output of az-cache-items() (if present)
resources


### function
resourceids


### function
resource-export


### function
service-principals

Expand Down Expand Up @@ -949,6 +981,10 @@ Ported from BMA
front-door-waf-policy-rules


### function
front-door-waf-policy


### function
front-door-waf-policy-rule-match-conditions

Expand All @@ -963,6 +999,27 @@ Ported from BMA

### function
ad-users
Usage: ad-users REMOTE_STARTS_WITH_FILTER LOCAL_FILTER

REMOTE_STARTS_WITH_FILTER: filters on start of userPrincipalName
LOCAL_FILTER: grep results


### function
ad-user-groups
List groups for AD User(s)

USAGE: ad-user-groups USER USER # object ID or principal name of the user

$ ad-users [email protected] | ad-user-groups


### function
ad-apps
Usage: ad-users REMOTE_FILTER LOCAL_FILTER

REMOTE_FILTER: filters on start of userPrincipalName
LOCAL_FILTER: grep results


## cert-commands
Expand Down
7 changes: 7 additions & 0 deletions functions
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ _bma_stack_diff_template
_bma_stack_name_arg
_bma_stack_params_arg
_bma_stack_template_arg
ad-apps
ad-user-groups
ad-users
asg-capacity
asg-desired-size-set
Expand Down Expand Up @@ -73,6 +75,7 @@ elbv2-subnets
elbv2-target-groups
elbv2s
front-door-waf-policies
front-door-waf-policy
front-door-waf-policy-rule-delete
front-door-waf-policy-rule-match-condition-values
front-door-waf-policy-rule-match-conditions
Expand All @@ -96,6 +99,7 @@ instance-ssh
instance-ssh-details
instance-ssm
instance-ssm-port-forward
instance-ssm-port-forward-remote-host
instance-stack
instance-start
instance-state
Expand Down Expand Up @@ -141,9 +145,12 @@ rds-db-instances
region
region-each
regions
resource-export
resource-group
resource-group-export
resource-group-unset
resource-groups
resourceids
resources
service-principals
skim-stdin
Expand Down
39 changes: 39 additions & 0 deletions lib/instance-functions
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,45 @@ instance-ssm-port-forward() {
done
}

instance-ssm-port-forward-remote-host() {

# Start a port forwarding session to a remote host through an EC2 instance.
# The remote host isn't required to be managed by AWS Systems Manager as long as
# it is accessible from the EC2 instance. [Reference](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-remote-port-forwarding)
#
# USAGE: instance-ssm-port-forward-remote-host local_port_number port_number host instance-id [instance-id]
#
# EXAMPLE:
# $ instance-ssm-port-forward-remote-host 3306 3306 database.ap-southeast-2.rds.amazonaws.com i-xxxx
# Starting session with SessionId: dina-00000000000000000
# Port 3306 opened for sessionId dina-00000000000000000.
# Waiting for connections...
#
# $ instances jumphost | instance-ssm-port-forward-remote-host 3306 3306 database.ap-southeast-2.rds.amazonaws.com
# Starting session with SessionId: dina-00000000000000000
# Port 3306 opened for sessionId dina-00000000000000000.
# Waiting for connections...

local local_port_number=$1
local port_number=$2
local host=$3
shift 3
local instance_ids=$(skim-stdin "$@")
if [[ -z $local_port_number || -z $port_number || -z $host || -z $instance_ids ]] ; then
echo "Usage: $FUNCNAME local_port_number port_number host instance-id [instance-id]"
return 1
fi

exec </dev/tty # reattach keyboard to STDIN

for instance_id in $instance_ids; do
aws ssm start-session \
--target "$instance_id" \
--document-name AWS-StartPortForwardingSessionToRemoteHost \
--parameters "localPortNumber=${local_port_number},portNumber=${port_number},host=${host}"
done
}

instance-stack() {

# List CloudFormation stack EC2 Instance(s) belong to (if any)
Expand Down