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

  • 0
    Like
  • 0
    Comment

    前提条件

    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}
    

    完了