amplify-cliをインストールしてローカルでAmplifyコマンドを実行出来る様にする

aws-cli等を経由してローカルのPCでAmplifyを利用した開発の環境を構築する方法をまとめます。
この記事ではaws-cliとamplify-cliをインストールしてローカルでaws,amplify系のコマンドを実行出来る様にするまでの手順をまとめました。


# 環境

| 名前 | バージョン |
| :--- | :---: |
| Mac OS | 12.2.1 |

# aws-cliのインストール

ローカル環境でawsのサービスを利用する為に`aws-cli`をインストールします。

aws-cliのv2系はGUIでインストーラーをダウンロードするのが手っ取り早いです。
v1系で差支えなければ`pip`経由でインストール出来ます。

## pyenvのインストール

pipを利用する為に`pyenv`をインストールします。

```Shell-session
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

~ $ pyenv --version
pyenv 2.2.0-5-g54889eb8
```

~/.bash_profileの設定

```Shell-session
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
```

~/.bashrcの設定

```Shell-session
# pyenv
eval "$(pyenv init -)"
```

読み込み

```Shell
$ source ~/.bash_profile
```

## インストールバージョンのリストの確認

```Shell
$ pyenv versions
* system (set by $HOME/.pyenv/version)

$ pyenv install --list
```

### 指定したバージョンのインストール

```Shell
$ pyenv install 3.9.7
```

```Shell
$ pyenv global 3.9.7
$ pyenv local 3.9.7

$ python --version
Python 3.9.7
$ which python
$HOME/.pyenv/shims/python
```

## pipでaws-cliのインストール

```Shell-session
$ pip install awscli

$ aws --version
aws-cli/1.21.7 Python/3.9.7 Darwin/19.6.0 botocore/1.22.7
```

これでaws-cliを利用出来る様になります。



## .awsの確認

*既にAWSコンソール上でプロファイルが作成済みである事想定です。

*`.aws`ディレクトリ未作成作成の場合はディレクトリの作成とパーミッションを付与する必要があります。

```Shell-session
$ cd ~/
$ mkdir .aws
$ chmod 766 .aws
$ cd ~/.aws
$ touch credentials
```

下記の様な形でプロファイルの設定を記載します。

```Shell-session
$ cat ~/.aws/credentials
[default]
aws_access_key_id=xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxx

[profile_name]
aws_access_key_id=xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key=xxxxxxxxxxxxxxxxxxxx

$ cat ~/.aws/config
[default]
region=xxxxxxxxxxxxxxxxxxxx
output=json

[profile profile_name]
region=xxxxxxxxxxxxxxxxxxxx
```


### プロファイルの確認

```Shell-session
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************XXXX shared-credentials-file
secret_key     ****************XXXX shared-credentials-file
    region           xx-xxxxxxxxx-1      config-file    ~/.aws/config
```

プロファイル名の指定

```Shell-session
$ aws configure list --profile profile_name
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile          　　profile_name           manual    --profile
access_key     ****************XXXX shared-credentials-file
secret_key     ****************XXXX shared-credentials-file
    region           xx-xxxxxxxxx-1      config-file    ~/.aws/config
```

## プロファイルの切り替え

複数のプロファイルを有している場合、`~/.bash_profile`に下記を追記する事でデフォルトのプロファイルを設定する事が出来ます。

```Shell-session
$ vim ~/.bash_profile

# aws-cli
export AWS_PROFILE=profile_name

$ source ~/.bash_profile
```

### オプションの指定無しでプロファイルの確認

```Shell-session
$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile          　　profile_name           manual    --profile
access_key     ****************XXXX shared-credentials-file
secret_key     ****************XXXX shared-credentials-file
    region           xx-xxxxxxxxx-1      config-file    ~/.aws/config
```

---

# amplify-cliの設定

ローカルでamplifyを利用する為に`amplify-cli`をインストールする必要があります。

### amplify-cliのインストール

```Shell-session
$ npm install -g @aws-amplify/cli

$ amplify -v
6.3.1
```

# configureの設定(AWSアカウントの紐付け)



Amplify用のプロファイルが未作成の場合は`amplify configure`コマンドでAWSのマネジメントコンソールを開きつつ新しいIAMユーザーを作成することが出来ます。

下記のコマンドを実行後、マネジメントコンソールが開かれる為

```Shell
$ amplify configure
```

`ユーザー詳細の設定`、`AWSアクセスの種類の設定`、`アクセス権限の設定`、`タグの設定`を行います。

- AWSアクセスの種類→`プログラムによるアクセス`のみを選択する。
- アクセス権限の設定→`AdministratorAccess`や`AdministratorAccess-Amplify`を設定する。
- タグは任意

作成後にaccess_keyなどをローカルに設定してプロファイル情報を保存します。

`amplify configure`コマンドを実行中の場合、引き続き対話形式でキーの設定を入力する事で`.aws/config`、`.aws/credentials`を更新する事が出来ます。

```Shell-session
$ amplify configure
Follow these steps to set up access to your AWS account:

Sign in to your AWS administrator account:
https://console.aws.amazon.com/
Press Enter to continue

Specify the AWS Region
? region:  ap-northeast-1
Specify the username of the new IAM user:
? user name:  amplify-test-user
Complete the user creation using the AWS console
xxxxxxxxxx
Press Enter to continue

Enter the access key of the newly created user:
? accessKeyId:  ********************
? secretAccessKey:  ****************************************
This would update/create the AWS Profile in your local machine
? Profile Name:  profile_name

Successfully set up the new user.
```

---

これでローカルでawsコマンドやamplifyコマンドを実行出来る様になりました。

次回はamplifyコマンドを利用して既存のプロジェクトにamplifyのリソースを紐づけて行きます。