AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA

แž”แž“แŸ’แž‘แžถแž”แŸ‹แž“แžนแž„แž‡แžถแž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŠแŸ†แžกแžพแž„ AWS MFA แž แžพแž™แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แžŠแŸ†แžกแžพแž„ แž“แžทแž„แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ AWS CLI แŸ”

แž‡แžถแžขแž€แžปแžŸแž› แž“แžธแžแžทแžœแžทแž’แžธแž‡แžถแž€แžถแžแž–แŸ’แžœแž€แžทแž…แŸ’แž…แž“แŸแŸ‡แž”แžถแž“แž’แŸ’แžœแžพแžฑแŸ’แž™แžแŸ’แž‰แžปแŸ†แž–แžถแž€แŸ‹แž€แžŽแŸ’แžแžถแž›แž“แŸƒแžแŸ’แž„แŸƒแž’แŸ’แžœแžพแž€แžถแžšแžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ†แŸ” แžŠแžผแž…แŸ’แž“แŸแŸ‡ แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ AWS แžŠแŸ‚แž›แž˜แžทแž“แž˜แžถแž“แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แž•แŸ’แžŸแŸแž„แž‘แŸ€แž ๐Ÿ˜‰ แžŠแžผแž…แž‡แžถแžแŸ’แž›แžฝแž“แžแŸ’แž‰แžปแŸ†แž•แŸ’แž‘แžถแž›แŸ‹ แž˜แžทแž“แžแŸ’แžšแžผแžœแžแŸ’แž‡แŸ‡แžแŸ’แž‡แžถแž™แž–แŸแž›แžœแŸแž›แžถแžŠแŸแž˜แžถแž“แžแž˜แŸ’แž›แŸƒแž›แžพแžšแžฟแž„แžแžผแž…แžแžถแž…แž“แŸ„แŸ‡แž‘แŸ แžแŸ’แž‰แžปแŸ†แž”แžถแž“แžŸแž˜แŸ’แžšแŸแž…แž…แžทแžแŸ’แžแž…แž„แž€แŸ’แžšแž„แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แŸ”

แžŸแžผแž˜แŸ’แž”แžธแžแŸ‚แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แž‚แžŽแž“แžธ sandbox แžขแŸแž˜แžขแŸแž แŸ’แžœแžขแŸ แž‡แžถแž’แž˜แŸ’แž˜แžแžถแž“แŸแŸ‡แž‚แžบแž‡แžถแžแž˜แŸ’แžšแžผแžœแž€แžถแžšแž…แžถแŸ†แž”แžถแž…แŸ‹แŸ” แž“แŸแŸ‡แž‡แžถแžšแž”แŸ€แž”แžŠแŸ‚แž›แžœแžถแž“แŸ…แž‡แžถแž˜แžฝแž™แž™แžพแž„แŸ”

แž€แžถแžšแžŠแŸ†แžกแžพแž„ MFA

  1. แž€แŸ†แžŽแžแŸ‹ แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‘แžผแžšแžŸแŸแž–แŸ’แž‘แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถแŸ”
  2. แž‘แŸ… แž€แžปแž„แžŸแžผแž› AWS
  3. แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแž”แŸแžŽแŸ’แžŽแžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ† -> แž€แŸ†แžŽแžแŸ‹แžงแž”แž€แžšแžŽแŸ MFA
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA
  4. แžงแž”แž€แžšแžŽแŸแž“แžทแž˜แŸ’แž˜แžทแž MFA
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA
  5. แž’แŸ’แžœแžพแžแžถแž˜แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แž“แŸ…แž›แžพแžขแŸแž€แŸ’แžšแž„แŸ‹
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA
  6. แžงแž”แž€แžšแžŽแŸแž“แžทแž˜แŸ’แž˜แžทแžแžšแžฝแž…แžšแžถแž›แŸ‹แž แžพแž™แŸ”
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA

แž€แžถแžšแžŠแŸ†แžกแžพแž„ AWS CLI

https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

แž€แžถแžšแžŠแŸ†แžกแžพแž„แž‘แž˜แŸ’แžšแž„แŸ‹แžŠแŸ‚แž›แž˜แžถแž“แžˆแŸ’แž˜แŸ„แŸ‡

https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

  1. แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแž”แŸแžŽแŸ’แžŽแžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แžšแž”แžŸแŸ‹แžแŸ’แž‰แžปแŸ† -> แž”แž„แŸ’แž€แžพแžแžŸแŸ„แž…แžผแž›
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA
  2. แž…แž˜แŸ’แž›แž„แžŸแŸ„แž‘แŸ…แž€แŸ’แžŠแžถแžšแžแž˜แŸ’แž”แŸ€แžแžแŸ’แž‘แžถแžŸแŸ‹แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ” แžขแŸ’แž“แž€แž“แžนแž„แžแŸ’แžšแžผแžœแž€แžถแžšแžœแžถแž“แŸ…แž‡แŸ†แž แžถแž“แž”แž“แŸ’แž‘แžถแž”แŸ‹
  3. $ aws configure --profile <your profile name>

AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA

  1. แž…แž˜แŸ’แž›แž„แžงแž”แž€แžšแžŽแŸแž“แžทแž˜แŸ’แž˜แžทแž ARN
    AWS CLI แžแžถแž˜แžšแž™แŸˆ MFA
  2. aws sts get-session-token --profile <ะธะผั ะฟั€ะพั„ะธะปั> --serial-number <ARN ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ> --token-code <ะพะดะฝะพั€ะฐะทะพะฒั‹ะน ะฟะฐั€ะพะปัŒ>
    แž–แžถแž€แŸ’แž™แžŸแž˜แŸ’แž„แžถแžแŸ‹แžแŸ‚แž˜แžฝแž™แžŠแž„แžแŸ’แžšแžผแžœแžแŸ‚แž™แž€แž…แŸแž‰แž–แžธแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‘แžผแžšแžŸแŸแž–แŸ’แž‘แžŠแŸ‚แž›แž”แžถแž“แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž˜แžปแž“แŸ”
  3. แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž“แžนแž„แž”แž‰แŸ’แž…แŸแž‰ JSON แžŠแŸ‚แž›แž‡แžถแžœแžถแž›แž“แžธแž˜แžฝแž™แŸ—แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแžแŸ‚แž‡แŸ†แž“แžฝแžŸแž‘แŸ…แž€แŸ’แž“แžปแž„แžขแžแŸแžšแž”แžšแžทแžŸแŸ’แžแžถแž“แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž‚แŸ’แž“แžถ AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN

แžแŸ’แž‰แžปแŸ†แž”แžถแž“แžŸแž˜แŸ’แžšแŸแž…แž…แžทแžแŸ’แžแž’แŸ’แžœแžพแžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž€แž˜แŸ’แž˜ ~/.bash_profile
แžŠแžพแž˜แŸ’แž”แžธแž‰แŸ‚แž€ JSON แžŸแŸ’แž‚แŸ’แžšแžธแž”แž“แŸแŸ‡แž‘แžถแž˜แž‘แžถแžš jq.

#!/usr/bin/env bash

aws_login() {
    session=$(aws sts get-session-token "$@")
    echo "${session}"
    AWS_ACCESS_KEY_ID=$(echo "${session}" | jq -r '.Credentials.AccessKeyId')
    export AWS_ACCESS_KEY_ID
    AWS_SECRET_ACCESS_KEY=$(echo "${session}" | jq -r '.Credentials.SecretAccessKey')
    export AWS_SECRET_ACCESS_KEY
    AWS_SESSION_TOKEN=$(echo "${session}" | jq -r '.Credentials.SessionToken')
    export AWS_SESSION_TOKEN
}

alias aws-login-dev='aws_login --profile <ะธะผั dev ะฟั€ะพั„ะธะปั> --serial-number <ARN ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ> --token-code '
alias aws-login-prod='aws_login --profile <ะธะผั prod ะฟั€ะพั„ะธะปั> --serial-number <ARN ะฒะธั€ั‚ัƒะฐะปัŒะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ> --token-code '

แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹:

$ aws-login-dev <ะพะดะฝะพั€ะฐะทะพะฒั‹ะน ะฟะฐั€ะพะปัŒ>

แžแŸ’แž‰แžปแŸ†แžŸแž„แŸ’แžƒแžนแž˜แžแžถแž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แž“แŸแŸ‡แž“แžนแž„แž‡แžฝแž™แžขแŸ’แž“แž€แž‡แŸ€แžŸแžœแžถแž„แž€แžถแžšแžœแž„แŸ’แžœแŸแž„แžšแž™แŸˆแž–แŸแž›แž™แžผแžšแžแžถแž˜แžšแž™แŸˆแžฏแž€แžŸแžถแžšแž•แŸ’แž›แžผแžœแž€แžถแžš ๐Ÿ˜‰

แž”แŸ’แžšแž—แž–: www.habr.com

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹