目的

  • シェルスクリプトのよくあるシチュエーションとなりますが、キーボードから入力させた値を環境変数にセットするスクリプトサンプルです。
  • 今回のサンプルの用途としては、aws cli を実行するときにAccessKey、SecretKey、Regionをスクリプト内に埋め込むのではなく、キーボードから入力させます。

aws cliの環境変数

前提条件

  • 環境変数には優先順位があります。下記環境変数は、aws configure によってプロファイルに設定した環境変数を上書きします。
  • 環境変数を設定すると、シェルの終了時まで、または変数に別の値を設定するまで使用されます。

環境変数

  • AWS_ACCESS_KEY_ID
    • IAM ユーザーまたはロールに関連付けられる AWS アクセスキーを指定します。
  • AWS_SECRET_ACCESS_KEY
    • アクセスキーに関連付けられるシークレットキーを指定します。
  • AWS_DEFAULT_REGION
    • リクエストを送信する AWS リージョンを指定します。

サンプル

  • echoを使って、環境変数の入力を求めます。echo の”-n” オプションで、改行を出力しません。
  • readによって、キーボードからの入力を変数に代入します。
  • exportを使用し、各環境変数に先ほど準備した変数をセットします。
  • サンプルに使用しているaws コマンドは、DynamoDB table を表示させるコマンドです。bashのforループを使用して、別ファイルに定義するtable名の数だけaws コマンドを実行しています。また、table名だけを取り出したいため、シンプルですが、jqコマンドを使い加工しています。
#!/bin/bash
echo -n "Enter a AccessKey: "
read access_key
echo -n "Enter a SecretKey: "
read secret_key
echo -n "Enter a Region: "
read region

export AWS_ACCESS_KEY_ID=$access_key
export AWS_SECRET_ACCESS_KEY=$secret_key
export AWS_DEFAULT_REGION=$region

for DYNAMODB_TB in `cat table.txt` ; do
    aws dynamodb describe-table --table-name "${DYNAMODB_TB}" | jq -r '.[]|[.TableName]'
done

元記事はこちら

キーボード入力をaws cliの環境変数にセットするスクリプト