Last active
April 7, 2016 08:28
-
-
Save giseongeom/e22a313fba41985430b1 to your computer and use it in GitHub Desktop.
aws-select - AWS region, profile (AccessKeyId, SecretAccessKey) 정보를 환경변수로 설정하는 스크립트 (as bash function)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| function aws-select { | |
| # Changelog | |
| # 0.1 (2016.01.11): initial release | |
| # 0.2 (2016.01.15) | |
| # aws-credential.txt no longer needed. only $HOME/.aws/credentials required. | |
| # hide parts of secret key displayed | |
| local _func_version='0.3-build-20160407' | |
| local _AWS_CRED_LISTFILE="$HOME/.aws/credentials" | |
| local _AWS_RZ_SELECTION="" | |
| local _AWS_PROFILE_SELECTION="" | |
| local _CRED_PROFILE_NAME_LIST="" | |
| _CRED_PROFILE_NAME_LIST=$(grep "\[.*\]" $_AWS_CRED_LISTFILE | tr '\r\n' ' ' | tr -d '\[' | tr -d '\]') | |
| local _CRED_LIST="" | |
| for _my_cred_username in $_CRED_PROFILE_NAME_LIST; | |
| do | |
| local _cred_list_tmp_access_key=$(grep -A1 -i $_my_cred_username $_AWS_CRED_LISTFILE | tail -1 | cut -f3 -d" " | tr -d '\r\n') | |
| local _cred_list_tmp_secret_key=$(grep -A2 -i $_my_cred_username $_AWS_CRED_LISTFILE | tail -1 | cut -f3 -d" " | tr -d '\r\n') | |
| _CRED_LIST+=" "$_my_cred_username,$_cred_list_tmp_access_key,$_cred_list_tmp_secret_key | |
| done | |
| local _REGION_LIST=" | |
| tokyo,ap-northeast-1 | |
| seoul,ap-northeast-2 | |
| n.virgina,us-east-1 | |
| n.california,us-west-1 | |
| oregon,us-west-2 | |
| singapore,ap-southeast-1 | |
| sydney,ap-southeast-2 | |
| saopaulo,sa-east-1 | |
| ireland,eu-west-1 | |
| frankfurt,eu-central-1 | |
| " | |
| local _USAGE=" | |
| ------------------------------------------------------------------------------------- | |
| # | |
| # Usage: $FUNCNAME [ -l | -p PROFILE | -r REGION ] | |
| # Options: | |
| # -l List the Region names and AWS Credential currently stored. | |
| # -p PROFILE Set the AWS Default Credential, using the given AWS profile. | |
| # -r REGION Set the AWS Default Region, using the given city name. | |
| # | |
| # Version: $_func_version | |
| ------------------------------------------------------------------------------------- | |
| " | |
| case "$1" in | |
| "-l") | |
| if [ -z "$2" ]; then | |
| echo | |
| for myregion in $_REGION_LIST; | |
| do | |
| local region_name="${myregion%,*}" | |
| local region_code="${myregion#*,}" | |
| echo " AWS Region: $region_name [${region_code}]" | |
| done | |
| echo | |
| for mycred in $_CRED_LIST; | |
| do | |
| local profile_name="${mycred%%,*}" | |
| local cred_access_key_id_tmp="${mycred%,*}" | |
| local cred_access_key_id="${cred_access_key_id_tmp##*,}" | |
| local cred_secret_key_tmp="${mycred##*,}" | |
| local cred_secret_key='**********'${cred_secret_key_tmp:35:45} | |
| echo " AWS Profile: $profile_name" | |
| echo " AccessKeyId: $cred_access_key_id" | |
| echo " SecretAccessKey: $cred_secret_key" | |
| done | |
| echo | |
| else | |
| echo | |
| echo 'Please enter correct argument' | |
| echo "$_USAGE" | |
| fi | |
| ;; | |
| "-r") | |
| if [ -n "$2" ] && [ -z "$3" ]; then | |
| # Convert case into lowercase | |
| _AWS_RZ_SELECTION=$(echo "$2" | tr '[:upper:]' '[:lower:]') | |
| for myregion in $_REGION_LIST; | |
| do | |
| local region_name="${myregion%,*}" | |
| local region_code="${myregion#*,}" | |
| if [ "$_AWS_RZ_SELECTION" == "$region_name" ]; then | |
| local _AWS_RZ_SELECTION_STATUS=1 | |
| local _AWS_RZ_SELECTION_NAME="$region_name" | |
| local _AWS_RZ_SELECTION_CODE="$region_code" | |
| fi | |
| done | |
| # | |
| if [ -z "$_AWS_RZ_SELECTION_STATUS" ]; then | |
| echo | |
| echo --------------------------------------------------------------------- | |
| echo "$_AWS_RZ_SELECTION is incorrect. Please enter correct region name" | |
| echo --------------------------------------------------------------------- | |
| echo | |
| fi | |
| # | |
| if [ -n "$_AWS_RZ_SELECTION_STATUS" ]; then | |
| export AWS_DEFAULT_REGION_SELECTED="$_AWS_RZ_SELECTION_NAME" | |
| export AWS_DEFAULT_REGION="$_AWS_RZ_SELECTION_CODE" | |
| echo | |
| echo --------------------------------------------------------------------- | |
| echo "AWS_DEFAULT_REGION: $_AWS_RZ_SELECTION_NAME [$_AWS_RZ_SELECTION_CODE]" | |
| echo --------------------------------------------------------------------- | |
| echo | |
| fi | |
| elif [ -n "$3" ]; then | |
| echo | |
| echo 'Please enter correct argument' | |
| echo "$_USAGE" | |
| else | |
| echo | |
| echo '*REGION* is required' | |
| echo "$_USAGE" | |
| fi | |
| ;; | |
| "-p") | |
| if [ -n "$2" ] && [ -z "$3" ]; then | |
| _AWS_PROFILE_SELECTION=$(echo "$2" | tr '[:upper:]' '[:lower:]') | |
| for mycred in $_CRED_LIST; | |
| do | |
| local profile_name="${mycred%%,*}" | |
| local cred_access_key_id_tmp="${mycred%,*}" | |
| local cred_access_key_id="${cred_access_key_id_tmp##*,}" | |
| local cred_secret_key="${mycred##*,}" | |
| local cred_secret_key_tmp="${mycred##*,}" | |
| local cred_secret_key_display='**********'${cred_secret_key_tmp:35:45} | |
| if [ "$_AWS_PROFILE_SELECTION" == "$profile_name" ]; then | |
| local _AWS_PROFILE_SELECTION_STATUS=1 | |
| local _AWS_PROFILE_SELECTION_ACCESS_KEY="$cred_access_key_id" | |
| local _AWS_PROFILE_SELECTION_SECRET_KEY="$cred_secret_key" | |
| fi | |
| done | |
| if [ -z "$_AWS_PROFILE_SELECTION_STATUS" ]; then | |
| echo | |
| echo --------------------------------------------------------------------- | |
| echo "$_AWS_PROFILE_SELECTION is incorrect. Please enter correct profile name" | |
| echo --------------------------------------------------------------------- | |
| echo | |
| fi | |
| if [ -n "$_AWS_PROFILE_SELECTION_STATUS" ]; then | |
| export AWS_SELECTED_PROFILE="$_AWS_PROFILE_SELECTION" | |
| export AWS_ACCESS_KEY_ID="$_AWS_PROFILE_SELECTION_ACCESS_KEY" | |
| export AWS_SECRET_ACCESS_KEY="$_AWS_PROFILE_SELECTION_SECRET_KEY" | |
| echo | |
| echo --------------------------------------------------------------------- | |
| echo "AWS_ACCESS_KEY_ID: $_AWS_PROFILE_SELECTION_ACCESS_KEY [$_AWS_PROFILE_SELECTION]" | |
| echo AWS_SECRET_ACCESS_KEY: \*\*\*\*\*\*\*\*\*\*${_AWS_PROFILE_SELECTION_SECRET_KEY: -5} | |
| echo --------------------------------------------------------------------- | |
| echo | |
| fi | |
| elif [ -n "$3" ]; then | |
| echo | |
| echo 'Please enter correct argument' | |
| echo "$_USAGE" | |
| else | |
| echo | |
| echo '*PROFILE* is required' | |
| echo "$_USAGE" | |
| fi | |
| ;; | |
| *) | |
| if [ -n "$AWS_DEFAULT_REGION" ]; then | |
| if [ -n "$AWS_DEFAULT_REGION_SELECTED" ]; then | |
| echo | |
| echo "AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION_SELECTED [$AWS_DEFAULT_REGION]" | |
| else | |
| echo "AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION" | |
| fi | |
| fi | |
| if [[ -n "$AWS_ACCESS_KEY_ID" ]] && [[ -n "$AWS_SECRET_ACCESS_KEY" ]]; then | |
| # Generate secret key string for display usage | |
| local cred_secret_key_display='**********'${AWS_SECRET_ACCESS_KEY:35:45} | |
| if [ -n "$AWS_SELECTED_PROFILE" ]; then | |
| echo "AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID [$AWS_SELECTED_PROFILE]" | |
| echo "AWS_SECRET_ACCESS_KEY: $cred_secret_key_display" | |
| else | |
| echo "AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID" | |
| echo "AWS_SECRET_ACCESS_KEY: $cred_secret_key_display" | |
| fi | |
| fi | |
| echo "$_USAGE" | |
| ;; | |
| esac | |
| return 0 | |
| } | |
| function aws-ami-delete { | |
| # Changelog | |
| # 0.1 (2016.01.13): initial release | |
| local _USAGE=" | |
| ------------------------------------------------------------------------------------- | |
| # | |
| # Usage: $FUNCNAME [ -d | -l ] AMI_ID (ami-xxxxxxxx) | |
| # Options: | |
| # -l List snapshot and detailed inforamtion about AMI_ID | |
| # -d Delete AMI and related snapshot | |
| # | |
| ------------------------------------------------------------------------------------- | |
| " | |
| case "$1" in | |
| "-l") | |
| if [[ -n "$AWS_DEFAULT_REGION" ]] && [[ -n "$AWS_ACCESS_KEY_ID" ]] && [[ -n "$AWS_SECRET_ACCESS_KEY" ]] && [[ -n "$2" ]] && [[ "$2" =~ ^[Aa][Mm][Ii]-* ]] && [[ -z "$3" ]]; then | |
| local _myaws_ami_id="$2" | |
| # list | |
| aws ec2 describe-images --image-ids "$_myaws_ami_id" --query 'Images[].[Name,Platform,VirtualizationType,CreationDate,ImageId,BlockDeviceMappings[].Ebs[].SnapshotId]' --output table | |
| else | |
| echo 'Please enter correct argument' | |
| echo | |
| echo "$_USAGE" | |
| fi | |
| ;; | |
| "-d") | |
| if [[ -n "$AWS_DEFAULT_REGION" ]] && [[ -n "$AWS_ACCESS_KEY_ID" ]] && [[ -n "$AWS_SECRET_ACCESS_KEY" ]] && [[ -n "$2" ]] && [[ "$2" =~ ^[Aa][Mm][Ii]-* ]] && [[ -z "$3" ]]; then | |
| local _myaws_ami_id="$2" | |
| local _myaws_ami_snapshot_id=$(aws ec2 describe-images --image-ids $_myaws_ami_id --query 'Images[].BlockDeviceMappings[].Ebs[].SnapshotId' --output text) | |
| # | |
| echo -n "Deleting ${_myaws_ami_id}..." | |
| aws ec2 deregister-image --image-id $_myaws_ami_id | |
| echo 'done' | |
| # | |
| echo -n "Deleting ${_myaws_ami_snapshot_id}..." | |
| aws ec2 delete-snapshot --snapshot-id $_myaws_ami_snapshot_id | |
| echo 'done' | |
| else | |
| echo 'Please enter correct argument' | |
| echo | |
| echo "$_USAGE" | |
| fi | |
| ;; | |
| *) | |
| echo "$_USAGE" | |
| ;; | |
| esac | |
| return 0 | |
| } |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
실행에 필요한 것들
환경 설정
실행
-l옵션으로 실행하면 region 목록 및 $HOME.aws\credential 정보를 표시