LoginSignup
0
2

More than 5 years have passed since last update.

[JAWS-UG CLI] IAM #68 IAMアクセスキーの作成

Last updated at Posted at 2017-02-06

前提条件

IAMへの権限

  • IAMに対してフル権限があること。

AWS CLIのバージョン

以下のバージョンで動作確認済

  • AWS CLI 1.11.34
コマンド
aws --version

結果(例):

     aws-cli/1.11.34 Python/2.7.10 Darwin/15.6.0 botocore/1.4.91

バージョンが古い場合は最新版に更新しましょう。

コマンド
sudo -H pip install -U awscli

0. 準備

プロファイルの確認

プロファイルが想定のものになっていることを確認します。

変数の確認:

プロファイルが想定のものになっていることを確認します。

コマンド
aws configure list

結果(例)

           Name                    Value             Type    Location
           ----                    -----             ----    --------
        profile         iamFull-prjZ-mbp13        env    AWS_DEFAULT_PROFILE
     access_key     ****************XXXX shared-credentials-file
     secret_key     ****************XXXX shared-credentials-file
         region                         ap-northeast-1  env    AWS_DEFAULT_REGION

AssumeRoleを利用している場合はprofileが ''と表示されます。
それ以外のときにprofileが '' と表示される場合は、以下を実
行してください。

変数の設定
export AWS_DEFAULT_PROFILE=<IAMユーザ名>

1. 事前作業

IAMユーザにアクセスキーが存在しないことを確認します。

コマンド
aws iam list-access-keys \
        --user-name ${IAM_USER_NAME}

結果(例):

  {
    "AccessKeyMetadata": []
  }

2. アクセスキーの作成

アクセスキーを作成します。

変数の確認
cat << ETX

        IAM_USER_NAME:  ${IAM_USER_NAME}

ETX
コマンド
aws iam create-access-key \
        --user-name ${IAM_USER_NAME} \
        > ${IAM_USER_NAME}.json \
          && cat ${IAM_USER_NAME}.json

結果(例):

  {
    "AccessKey": {
      "UserName": "sample-user",
      "Status": "Active",
      "CreateDate": "2017-02-06T01:23:45.678Z",
      "SecretAccessKey": ""XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,
      "AccessKeyId": "AKIAXXXXXXXXXXXXXXXX"
    }
  }

3. 事後作業

3.1. アクセスキーの確認

IAMユーザにアクセスキーが存在することを確認します。

コマンド
aws iam list-access-keys \
        --user-name ${IAM_USER_NAME}

結果(例):

  {
    "AccessKeyMetadata": [
      {
          "UserName": "sample-user",
          "Status": "Active",
          "CreateDate": "2017-02-06T01:23:45Z",
          "AccessKeyId": "AKIAXXXXXXXXXXXXXXXX"
      }
    ]
  }

3.2. 認証情報の作成

CLIからアクセスキーを認証情報として使えるように、保存したキー情報を加工します。

sourceディレクトリ作成

コマンド
mkdir -p ~/.aws/source
結果
      (戻り値なし)

rcファイル作成

コマンド
cat ${IAM_USER_NAME}.json \
      | 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_' \
      > ~/.aws/source/${IAM_USER_NAME}.rc \
        && cat ~/.aws/source/${IAM_USER_NAME}.rc
結果
      aws_access_key_id=AKIAIOSFODNN7EXAMPLE
      aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

configファイル(単体)作成

変数の設定
REGION_AWS_CONFIG="${AWS_DEFAULT_REGION}"
変数の設定
FILE_USER_CONFIG="${HOME}/.aws/source/${IAM_USER_NAME}.config"

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 user-project-sample]
      region=ap-northeast-1

~/.aws/credentials作成

バックアップ
cp ~/.aws/credentials ~/.aws/credentials.old
コマンド
file="${HOME}/.aws/credentials"
if [ -e ${file} ]; then mv ${file} ${file}.bak; fi
for i in $(ls ${HOME}/.aws/source/*.rc); do \
        name=$(echo $i | sed 's/^.*\///' | sed 's/\.rc$//') \
        && echo "[$name]" >> ${file} \
        && cat $i >> ${file} \
        && echo "" >> ${file} ;done \
        && cat ${file}
結果
      [user-project-sample]
      aws_access_key_id=AKIAIOSFODNN7EXAMPLE
      aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

~/.aws/config作成

バックアップ
cp ~/.aws/config ~/.aws/config.old
コマンド
cat ${HOME}/.aws/source/*.config > ${HOME}/.aws/config \
        && cat ${HOME}/.aws/config
結果
      [profile user-project-sample]
      region=ap-northeast-1

3.3. ユーザの切り替え

現在のユーザの確認

変数の確認
aws configure list | grep profile
結果(例)
      profile       taro-prjZ-mbp13              env    AWS_DEFAULT_PROFILE

切替後ユーザの確認

変数の確認
cat << ETX

        new:     IAM_USER_NAME:       ${IAM_USER_NAME}

ETX

ユーザの切り替え

コマンド
export AWS_DEFAULT_PROFILE=${IAM_USER_NAME}
  echo ${AWS_DEFAULT_PROFILE}

コマンドテスト

コマンド
aws s3 ls
結果(例)
      2015-09-25 06:08:59 example-bucket
コマンド
aws iam list-roles
結果(例)
      {
        "Roles": []
      }

3.4. 認証ファイルの削除

コマンド
rm ${IAM_USER_NAME}.json

3.5. ユーザの戻し

コマンド
export AWS_DEFAULT_PROFILE='元のIAMユーザ'
echo ${AWS_DEFAULT_PROFILE}

完了

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2