@@ -91,15 +91,37 @@ aws_assume_role_get_credentail() {
9191
9292}
9393
94- aws_assume_role_is_tmp_credential_valid () {
94+ aws_assume_role_unzip_tmp_credential_valid () {
95+ local aws_assume_role=$1
96+ local tmp_credentials_file_zip=" ${tmp_credentials} /${aws_assume_role} .zip"
97+ local assume_role_duration=" $(( ${aws_assume_role_expired_time} - 5 )) "
9598
96- local tmp_credentials_file=" ${tmp_credentials} /${ASSUME_ROLE} "
97- local tmp_credentials_file_zip=" ${tmp_credentials} /${ASSUME_ROLE} .zip"
99+ local expired_tmp_credential=$( find ${tmp_credentials} -name ${aws_assume_role} .zip -mmin +${assume_role_duration} )
100+ # the file aws assume role zip file exists and not empty and not expired
101+ if [ -s " ${tmp_credentials_file_zip} " ] && [ -z " ${expired_tmp_credential} " ]; then
102+ echo " true"
103+ else
104+ echo " false"
105+ fi
106+
107+ }
108+
109+ aws_assume_role_load_current_assume_role_for_new_tab () {
110+
111+ local aws_assume_role=$( cat ${aws_cli_current_assume_role_name} )
112+ local tmp_credentials_file_zip=" ${tmp_credentials} /${aws_assume_role} .zip"
98113 local assume_role_duration=" $(( ${aws_assume_role_expired_time} - 5 )) "
99114
100- local valid_file=$( find ${tmp_credentials} -name ${ASSUME_ROLE} .zip -mmin +${assume_role_duration} )
115+ if [ " true" = " ${aws_cli_load_current_assume_role} " ] &&
116+ # the file current aws assume role exists
117+ [ -s " ${aws_cli_current_assume_role_name} " ] &&
118+ [ " true" = " $( aws_assume_role_unzip_tmp_credential_valid ${aws_assume_role} ) " ]; then
119+ aws_assume_role_set_name ${aws_assume_role}
120+ fi
121+ }
101122
102- if [[ -n " ${valid_file} " ]]; then
123+ aws_assume_role_is_tmp_credential_valid () {
124+ if [[ " true" = " $( aws_assume_role_unzip_tmp_credential_valid ${ASSUME_ROLE} ) " ]]; then
103125 echo -ne " \e]1;AWS-PROFILE[ ${ASSUME_ROLE} ]\a"
104126 aws_assume_role_re_use_current
105127 fi
@@ -108,17 +130,13 @@ aws_assume_role_is_tmp_credential_valid() {
108130
109131aws_call_assume_role () {
110132 # Do later (Validate the variable of ASSUMED_ROLE before calling assume role)
111- unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SECURITY_TOKEN ASSUMED_ROLE
133+ unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN AWS_SECURITY_TOKEN ASSUMED_ROLE AWS_ACCOUNT_ID
112134 tmp_credentials_file=" ${tmp_credentials} /${ASSUME_ROLE} "
113135 tmp_credentials_file_zip=" ${tmp_credentials} /${ASSUME_ROLE} .zip"
114136
115137 assume_role_duration=" $(( ${aws_assume_role_expired_time} - 5 )) "
116138 if [ -f ${tmp_credentials_file_zip} ]; then
117-
118- valid_file=$( find ${tmp_credentials} -name ${ASSUME_ROLE} .zip -mmin +${assume_role_duration} )
119- empty_file=$( find ${tmp_credentials} -name ${ASSUME_ROLE} .zip -empty)
120- # Don't find any file is older than expired-time
121- if [ -z " ${valid_file} " ] && [ -z " ${empty_file} " ]; then
139+ if [ " $( aws_assume_role_unzip_tmp_credential_valid ${ASSUME_ROLE} ) " = " true" ]; then
122140 echo " Re-use the temporary credential of ${ASSUME_ROLE} at ${tmp_credentials_file_zip} "
123141 else
124142 echo " The credential is older than ${aws_assume_role_expired_time} or the credential is empty then we will run assume-role ${ASSUME_ROLE} again"
@@ -132,6 +150,11 @@ aws_call_assume_role() {
132150}
133151
134152aws_assume_role_set_name () {
153+
154+ function aws_assume_role_save_current_assume_role() {
155+ echo " ${ASSUME_ROLE} " > ${1:? ' aws_cli_current_assume_role_name is unset or empty' }
156+ }
157+
135158 aws_assume_role_name=$1
136159 echo You set the assume role name ${aws_assume_role_name:? " The assume role name is unset or empty" }
137160
@@ -153,38 +176,45 @@ aws_assume_role_set_name() {
153176
154177 echo -ne " \e]1;AWS-PROFILE[ ${ASSUME_ROLE} ]\a"
155178 echo " You are using the assume role name ${ASSUME_ROLE} "
179+
180+ aws_assume_role_save_current_assume_role ${aws_cli_current_assume_role_name}
156181}
157182
158183aws_assume_role_set_name_with_hint () {
159- # set -x
160- aws_assume_role_set_name_with_hint_peco
161- # set +x
162- }
163184
164- aws_assume_role_set_name_with_hint_peco () {
165- echo " Please input your assume role name >"
166- local assume_role_list=$( grep -iE " \[*\]" ~ /.aws/config |
167- tr -d " []" | awk -F " " ' {print $2}' )
185+ function peco_aws_asssume_role_list() {
186+ grep -iE " \[*\]" ~ /.aws/config |
187+ tr -d " []" | awk -F " " ' {print $2}'
168188
169- if [[ -n " ${ASSUME_ROLE} " ]]; then
170- assume_role_list=$( echo ${assume_role_list} | grep -v ${ASSUME_ROLE} )
171- assume_role_list=$( echo " ${ASSUME_ROLE} \n${assume_role_list} " )
189+ }
172190
173- fi
191+ function aws_assume_role_insert_current_asssume_role_first() {
192+ assume_role_list=$1
193+ if [[ -n " ${ASSUME_ROLE} " ]]; then
194+ assume_role_list=$( echo ${assume_role_list} | grep -v ${ASSUME_ROLE} )
195+ assume_role_list=$( echo " ${ASSUME_ROLE} \n${assume_role_list} " )
196+
197+ fi
198+
199+ echo ${assume_role_list}
200+ }
174201
175- # local assume_role_name =$(echo "${assume_role_list}" | peco --selection-prefix "Current > ")
176- local assume_role_name=$( echo " ${assume_role_list} " | peco )
202+ local assume_role_list =$( aws_assume_role_insert_current_asssume_role_first " $( peco_aws_asssume_role_list ) " )
203+ local assume_role_name=$( peco_create_menu ' echo ${assume_role_list}' ' --prompt "Please select your assume role name >" ' )
177204 aws_assume_role_set_name $assume_role_name
178205
179206}
180207
181- aws_account_info () {
182- get-account-alias
183-
208+ aws_assume_role_get_aws_account_id () {
184209 local aws_account_id=$( aws_run_commandline_with_retry ' aws sts get-caller-identity --query "Account" --output text' " true" )
185210 export AWS_ACCOUNT_ID=$aws_account_id
186- echo " AccountId ${AWS_ACCOUNT_ID} "
187211
212+ }
213+
214+ aws_account_info () {
215+ get-account-alias
216+ aws_assume_role_get_aws_account_id
217+ echo " AccountId ${AWS_ACCOUNT_ID} "
188218 echo AWS Region ${AWS_REGION:? " The AWS_REGION is unset or empty" }
189219}
190220
0 commit comments