AWS Amplifyの開発に必要な環境の準備手順

# はじめに

AWS Amplifyで開発する際、AWS CLIやAmplify CLIを使うことが多いと思います。

そこで、Ubuntu 22.04にAmplify CLIをインストールした手順を、備忘録もかねて、ここにまとめます。
Amplifyで開発するために、いろいろと準備が必要ですが、初めての方は、ここで躓く可能性もあると思いますので、そのような方に役に立てれば幸いです。

なお、Amplifyでの開発の仕方については、本記事では触れませんので、ご注意ください。
（その記事についても、今後書いていきたいと思います。）

Amplifyの準備では、実行する環境によって挙動が変わるので、そのあたりについても記載します。
また、Amplify用に、「AdministratorAccess-Amplify」のポリシーが与えられたIAMユーザーが必要となります。
このユーザーを新たに作成することも可能ですし、あらかじめユーザーがあれば、そのユーザーを使用することもできますので、そのあたりについても触れます。

# 前提

OSは、Ubuntu 22.04 Serverを、標準でインストールした状態とします。
※WindowsのWSL2で立てることも、VMWareやVirtualBox等の仮想OSとして立てることも可能です。

また、本記事の手順を実行するには、gitが必要となります。

# Amplify CLI
## Node.jsのインストール

Amplify CLIはNode.jsで作られているので、Node.js、npmの環境が必要になります。

インストール方法については、こちらも手前味噌ですが、nvmを使ってUbuntuに複数バージョンのNode.jsの環境をインストールする手順を下記Qiita記事に書いてありますので、ご参照頂ければと思います。

[Ubuntu 22.04にNode.jsを複数インストールして切り替える方法（nvm）](https://qiita.com/murakami77/items/0dfebd3a1671190a32b6)

## aws-amplify/cliをインストール

Amplify CLIをインストールする方法として、npmでグローバル領域にインストールする方法が見つかります。
グローバル領域に入れても問題ない場合は、その方法でも問題ないのですが、グローバル領域を汚したくない場合は、curlコマンドでダウンロードして、インストールする方法があります。

### curlコマンドでダウンロード・インストールする場合

Amazon公式の
[Get started - Installation - AWS Amplify Docs](https://docs.amplify.aws/cli/start/install/)
のページで、「cURL (Mac and Linux)」を開くと、実行するコマンドが記載されています。

なお、このコマンドを実行すると、.bashrcのファイルが更新されますので、実行前にバックアップを取っておく必要がある場合は、

```bash
/bin/cp -a ~/.bashrc ~/.bashrc.`date '+%Y%m%d-%H%M%S'`.bk
```

などのように、日時をファイル名にいれたバックアップのファイルを作っておくといいでしょう。

続いて、「Get started - Installation」のページに書いてあるように、

```bash
curl -sL https://aws-amplify.github.io/amplify-cli/install | bash && $SHELL
```

を実行することで、ダウンロード、インストールしてくれます。
※ダウンロードするファイルが200MB以上あるので、時間がかかります。


### npmでグローバルにインストールする場合

npmのグローバル領域を使っても問題ない場合は、

```bash
npm install -g @aws-amplify/cli
```

でインストールします。

なお、前述のようにnvmを使ってNode.jsをインストールした場合は、上記手順で問題ないと思いますが、例えばapt等でNode.jsをインストールした場合などは、権限がなくてエラーになるかもしれません。
その場合は、sudoをつけるなどして実行してみてください。

# Amplify Configure

Amplifyのコマンドを実行する際のユーザーを設定する必要があります。

WSL2や、Windowsのコマンドプロンプト、Macのターミナル、LinuxのデスクトップOSのターミナルなどで実行する場合、ブラウザが起動し、AWSのマネジメントコンソールが開くことがあります。

一方、Linux等へSSH等でリモートで操作している場合は、ブラウザの起動はなく、CLI上で操作していきます。

## ブラウザが開くケースでの手順
### 設定の開始

このケースでは、あらかじめ既定のブラウザでAWSマネジメントコンソールにログインした状態にしておくと、スムーズになるかと思います。

次に、下記のコマンドを実行します。

```bash
amplify configure
```

### ブラウザが開いた時の操作

ブラウザが自動的に開いたら、ターミナルで「Press Enter to continue」のように表示されるため、Enterキーを押します。

続いて、「Specify the AWS Region」と、リージョンを選ぶリストが表示されるので、使用するリージョンを選択してEnterキーを押します。

続いて、ブラウザで新しいタブで、
- IAM Management Console
- Get started
が開きます。

IAM Management Consoleのタブを開くと、IAMユーザー作成の画面が開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232077/b82c6fbe-aed2-1d00-a53e-1d4310e1ce4b.png)

新規でAmplify用のユーザーを作成する場合は、この画面で作成し、Credentialsをダウンロードします。

既存のユーザーのCredentialsがある場合は、この画面は閉じます。

なお、ここで使うユーザーには、「AdministratorAccess-Amplify」のポリシーが必要となります。

### ブラウザを閉じた後のターミナルでの操作

ブラウザを閉じたら、元のターミナルに戻ります。
「Press Enter to continue」と表示されているので、Enterキーを押します。

アクセスキーID、シークレットの入力を求められるので、先ほど作成したユーザー、あるいは、あらかじめ登録したユーザーのCredentialsの情報を入力します。

入力後、プロファイルの名前の入力を求められます。
複数のAWSアカウントを使用している環境では、自分で覚えやすいプロファイル名を入力します。

AWSアカウントは1つだけ、という状況であれば、何も入力せずにEnterキーを押してもいいかと思います。
ただ、将来的にAWSの複数のアカウントを使っていくことになる場合もあると思いますので、私個人としては、プロファイル名を決めておいた方がいいかと思います。

## CLI上で操作するケースでの手順
### 設定の開始

このケースでは、あらかじめ既定のブラウザでAWSマネジメントコンソールにログインした状態にしておくと、スムーズになるかと思います。

次に、下記のコマンドを実行します。

```bash
amplify configure
```

```txt
Unable to open https://console.aws.amazon.com/: spawn xdg-open ENOENT
Have you installed `xdg-utils` on your machine?
```

と確認されるので、そのままEnterキーを押して続けます。

ここから先は、上に書いた、[ブラウザを閉じた後のターミナルでの操作](###ブラウザを閉じた後のターミナルでの操作)の手順で設定します。

# 【補足】AWS CLI

AmplifyのCLIを使うだけであれば必要ないかもしれませんが、Amplifyで作られた機能を保守・運用したり、他の機能を使うこともあると思いますので、この機会に、AWS CLIもインストールしておくことをお勧めします。

## Pythonをインストール

AWS CLIはPythonで作られているので、Python 3.xの環境が必要になります。

インストール方法については、手前味噌で大変恐縮ですが、Ubuntuに複数バージョンのPythonをPPAでインストールする手順を下記Qiita記事に書いてありますので、ご参照頂ければと思います。

[Ubuntu 22.04にPython3.xを複数インストールして切り替える方法（PPA・apt）](https://qiita.com/murakami77/items/b612734ff209cbb22afb)

## pipでパッケージをインストール

venvを作成して適用（activate）した状態で、pipで「awscli」をインストールします。

```bash
python -m pip install awscli
```

# さいごに

以上で、Amplifyの開発に必要な環境がそろいました。
ここからが本番、Amplifyでの開発を楽しみましょう！