3.6. AWS認証ファイルの作成¶
作業の目的 [why]¶
CLIで作成したアクセスキーファイルをもとに認証ファイルを作成します。
完了条件/事前条件 [設計者用情報]
完了条件 [after]
主処理は、以下を満たしたときに成功したものとします。
- 完了条件1
- iniファイルが存在する。
- 完了条件2
- configファイル(単体)が存在する。
事前条件 [before]
主処理の実施は、以下の状態であることを前提とします。
- 事前条件1
- アクセスキーファイル用ディレクトリが存在する。
- 事前条件2
- アクセスキーファイルがIAMユーザ"handson-cli-website-https-webMaintUser"のものである。
作業対象 [what]¶
- IAMアクセスキーファイル
標準時間(合計)¶
8分
パラメータ設定¶
パラメータ設定の標準時間: | 2分 |
---|
作業に必要なモノ・情報 [resource]¶
作業開始には、以下が全て揃っていることが必要です。
リソース1: アクセスキーファイル用ディレクトリ
アクセスキーファイルを配置したディレクトリ"${HOME}/.aws/access-key"です。
リソース2: クレデンシャルファイル用ディレクトリ
今回は"${HOME}/.aws/source"をクレデンシャルファイル用ディレクトリとします。
ディレクトリが存在することを確認します。
コマンド:
ls -d ${HOME}/.aws/source
結果(例:存在する場合):
${HOME}/.aws/source
存在しない場合は作成します。
コマンド
mkdir -p ${HOME}/.aws/source
リソース3: IAMユーザ名
- アクセスキーを作成するIAMユーザ名です。
- 今回は"handson-cli-website-https-webMaintUser"とします。
リソース4: デフォルトリージョン
- IAMユーザがデフォルトで利用するリージョンです。
- 今回は"ap-northeast-1"とします。
パラメータの指定¶
作業に必要なパラメータを変数に格納をします。
0.5. アクセスキーファイル名の指定¶
ダウンロードしたアクセスキーファイル名を指定します。
変数の設定:
IAM_ACCESS_KEY_CURRENT='0'
変数の設定:
FILE_ACCESS_KEY="${DIR_ACCESS_KEY}/${IAM_USER_NAME}-token-${IAM_ACCESS_KEY_CURRENT}.json" \ && echo ${FILE_ACCESS_KEY}
結果(例):
${HOME}/.aws/access-key/handson-cli-website-https-webMaintUser-token-0.json
パラメータの保存¶
設定されている変数の保存先となるファイル名を指定します。
変数の設定:
DIR_PARAMETER="${HOME}/tmp/parameter-handson-cli-website-https" FILE_PARAMETER="${DIR_PARAMETER}/$(date +%Y-%m-%d)-awscli-credentials-create.env" \ && echo ${FILE_PARAMETER}
結果(例):
${HOME}/tmp/parameter-handson-cli-website-https/2019-07-14-awscli-credentials-create.env
各変数に正しいパラメータ値が格納されていることを確認しながら保存します。
変数の確認:
cat << EOF > ${FILE_PARAMETER} 0.1. DIR_ACCESS_KEY:"${HOME}/.aws/access-key" DIR_ACCESS_KEY="${DIR_ACCESS_KEY}" 0.2. DIR_CREDENTIAL:"${HOME}/.aws/source" DIR_CREDENTIAL="${DIR_CREDENTIAL}" 0.3. IAM_USER_NAME:"handson-cli-website-https-webMaintUser" IAM_USER_NAME="${IAM_USER_NAME}" 0.4. REGION_AWS_CONFIG:"ap-northeast-1" REGION_AWS_CONFIG="${REGION_AWS_CONFIG}" 0.5. FILE_ACCESS_KEY:"${HOME}/.aws/access-key/handson-cli-website-https-webMaintUser-token-0.json" FILE_ACCESS_KEY="${FILE_ACCESS_KEY}" EOF cat ${FILE_PARAMETER}
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
タスクの実施¶
1. 前処理¶
処理対象の状態確認¶
主処理の実施は、以下の状態であることを前提とします。
前提と異なることが判明した場合、直ちに処理を中止します。
事前条件1: アクセスキーファイル用ディレクトリが存在する。
「アクセスキーファイル用ディレクトリが存在する。」ことを確認します。
コマンド:
ls -d ${DIR_ACCESS_KEY}
結果(例):
${HOME}/.aws/access-key
事前条件2: アクセスキーファイルがIAMユーザ"handson-cli-website-https-webMaintUser"のものである。
「アクセスキーファイルがIAMユーザ"handson-cli-website-https-webMaintUser"のものである。」ことを確認します。
コマンド:
cat ${FILE_ACCESS_KEY} \ | jp.py 'AccessKey.UserName' \ | grep ${IAM_USER_NAME}
結果(例):
"handson-cli-website-https-webMaintUser"
2. 主処理¶
認証情報個別ファイルの作成¶
iniファイル作成
~/.aws/creadentialsファイルに追加できるINI形式で出力します。
変数の設定:
FILE_USER_CREDENTIAL="${DIR_CREDENTIAL}/${IAM_USER_NAME}.ini" \ && echo ${FILE_USER_CREDENTIAL}
結果(例):
${HOME}/.aws/source/handson-cli-website-https-webMaintUser.ini
変数の確認:
cat << ETX # FILE_ACCESS_KEY:"${HOME}/.aws/access-key/handson-cli-website-https-webMaintUser-token-0.json" FILE_ACCESS_KEY="${FILE_ACCESS_KEY}" # FILE_USER_CREDENTIAL:"${HOME}/.aws/source/handson-cli-website-https-webMaintUser.ini" FILE_USER_CREDENTIAL="${FILE_USER_CREDENTIAL}" ETX
コマンド:
echo "[${IAM_USER_NAME}]" > ${FILE_USER_CREDENTIAL} cat "${FILE_ACCESS_KEY}" \ | jp.py 'AccessKey' \ | sed '/[{}]/d' | sed 's/[\" ,]//g' | sed 's/:/=/' \ | sed 's/AccessKeyId/aws_access_key_id/' \ | sed 's/SecretAccessKey/aws_secret_access_key/' \ | grep '^aws_' \ >> ${FILE_USER_CREDENTIAL} \ && cat ${FILE_USER_CREDENTIAL}
結果:
[handson-cli-website-https-webMaintUser] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
configファイル(単体)作成
~/.aws/configファイルに追加できる形式で出力します。
変数の設定:
REGION_AWS_CONFIG="ap-northeast-1" \ && echo ${REGION_AWS_CONFIG}
変数の設定:
FILE_USER_CONFIG="${DIR_CREDENTIAL}/${IAM_USER_NAME}.config" \ && echo ${FILE_USER_CONFIG}
変数の確認:
cat << ETX # IAM_USER_NAME:"handson-cli-website-https-webMaintUser" IAM_USER_NAME="${IAM_USER_NAME}" # REGION_AWS_CONFIG:"ap-northeast-1" REGION_AWS_CONFIG="${REGION_AWS_CONFIG}" # FILE_USER_CONFIG:"${DIR_CREDENTIAL}/handson-cli-website-https-webMaintUser.config" FILE_USER_CONFIG="${FILE_USER_CONFIG}" ETX
コマンド:
echo "[profile ${IAM_USER_NAME}]" > ${FILE_USER_CONFIG} \ && echo "region=${REGION_AWS_CONFIG}" >> ${FILE_USER_CONFIG} \ && echo "" >> ${FILE_USER_CONFIG} \ && cat ${FILE_USER_CONFIG}
結果(例):
[profile handson-cli-website-https-webMaintUser] region=ap-northeast-1
3. 後処理¶
完了条件の確認¶
主処理は、以下を満たしたときに成功したものとします。
完了条件1: iniファイルが存在する。
「iniファイルが存在する。」ことを確認します。
コマンド:
ls ${FILE_USER_CREDENTIAL}
結果(例):
${HOME}/.aws/source/handson-cli-website-https-webMaintUser.ini
完了条件2: configファイル(単体)が存在する。
「configファイル(単体)が存在する。」ことを確認します。
コマンド:
ls ${FILE_USER_CONFIG}
結果(例):
${HOME}/.aws/source/handson-cli-website-https-webMaintUser.config
3.3. 後処理に必要な作業¶
${HOME}/.aws/source/handson-cli-website-https-webMaintUser.iniの内容を~/.aws/credentialsに追記します。
コマンド:
cat ${HOME}/.aws/source/handson-cli-website-https-webMaintUser.ini >> ~/.aws/credentials
${HOME}/.aws/source/handson-cli-website-https-webMaintUser.configの内容を~/.aws/configに追記します。
コマンド:
cat ${HOME}/.aws/source/handson-cli-website-https-webMaintUser.config >> ~/.aws/config
注釈
以下の環境変数を設定することで、プロファイル名"handson-cli-website-https-webMaintUser"の権限でAWSにアクセスできます。
変数の設定:
export AWS_DEFAULT_PROFILE="handson-cli-website-https-webMaintUser"
プロファイルの権限を無効にする場合は、環境変数を削除します。
変数の設定:
export -n AWS_DEFAULT_PROFILE