AWS-CLIの設定（マルチアカウント）


# AWS CLIのインストール
## AWS CLIのインストール(Mac)
```shell
$ sudo pip install awscli

or

$ brew install awscli
```
## インストールの確認
```shell
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.1.21 Python/3.7.4 Darwin/20.5.0 exe/x86_64 prompt/off 
```

# AWS CLIの設定
## 事前準備

使用するAWSアカウント毎にアクセスキーとシークレットを取得しておく
ここでは３つのAWSアカウントが存在するとする

1. サンドボックス環境用アカウント
1. ベータ環境用アカウント
1.  本番環境用アカウント


## プロファイルの登録
### サンドボックスアカウント用プロファイル
```
$ aws configure --profile sandbox
AWS Access Key ID [None]: xxxxxxxxxx
AWS Secret Access Key [None]:xxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
```
### ベータ環境アカウント用プロファイル
```
$ aws configure --profile beta
AWS Access Key ID [None]: yyyyyyyyyy
AWS Secret Access Key [None]: yyyyyyyyyy
Default region name [None]: ap-northeast-1
Default output format [None]: json
```
### 本番環境アカウント用プロファイル
```
$ aws configure --profile production
AWS Access Key ID [None]: zzzzzzzzzz
AWS Secret Access Key [None]: zzzzzzzzzz
Default region name [None]:  ap-northeast-1
Default output format [None]: json
```

## 登録済設定の確認
### クレデンシャル設定の確認
```
$ more ~/.aws/credentials
[default]
aws_access_key_id = dddddddddd
aws_secret_access_key = dddddddddd
[sandbox]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxx
[beta]
aws_access_key_id = yyyyyyyyyy
aws_secret_access_key = yyyyyyyyyy
[production]
aws_access_key_id = zzzzzzzzzz
aws_secret_access_key = zzzzzzzzzz
```
### コンフィグの確認
```
$ more ~/.aws/config
[default]
output=json
region = ap-northeast-1
[profile sandbox]
region = ap-northeast-1
output = json
[profile beta]
region = ap-northeast-1
output = json
[profile production]
region =  ap-northeast-1
output = json
```
## 現行設定の確認
```
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************dddd shared-credentials-file    
secret_key     ****************dddd shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config
```
## プロファイルを指定して実行
--profileオプションでプロファイルを指定して実行

```shell
$ aws s3 ls --profile sandbox
```
## プロファイルの切り替え
```
$ export AWS_DEFAULT_PROFILE=sandbox
```
### 確認
```
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                  sandbox           manual    --profile
access_key     ****************xxxx shared-credentials-file    
secret_key     ****************xxxx shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config
```
## プロファイルの切り替え(AWSPを使用)
[AWSP - AWS Profile Switcher](https://github.com/itouuuuuuuuu/awsp)をインストールしてプロファイルを切り替えるようにする
### AWSPのインストール

```shell
$ npm install -g awsp
```
.bashrc (or .bash_profile)に以下を追記

```
alias awsp="source _awsp"
```
設定を反映

```
$ source ~/.bashrc
```
### AWSPでプロファイルの切り替え
betaに変更してみる

```
$ awsp
AWS Profile Switcher
? Choose a profile (Use arrow keys)
  default 
  sandbox 
❯ beta 
  production 
```
### 確認
betaになっている

```
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                     beta           manual    --profile
access_key     ****************yyyy shared-credentials-file    
secret_key     ****************yyyy shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config
```

### サンドボックスに戻しておく
```
$ awsp
AWS Profile Switcher
? Choose a profile sandbox
Hello Prompt! 38 11:20:39 ~ $ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                  sandbox           manual    --profile
access_key     ****************xxxx shared-credentials-file    
secret_key     ****************xxxx shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config
```

# 設定の削除
~/.aws/credentialsと、~/.aws/configを直接編集。当該箇所を削除して保存