AWS Amplify フレームワークの使い方Part12〜ENV編〜

# はじめに
Amplifyさんは本当にどんどん開発しやすい環境になっていきますね。すばらしい。
今回はそんな新たなamplifyコマンドをご紹介。

# この記事の対象者
- 1つのAWSアカウント内で環境ごとのバックエンドを分けたい
-  開発者ごとにバックエンドを用意したい

規模が大きくなってくると環境ごとにAWSアカウントを分けたりすると思いますが、そちらのことは何も考えておりませんのでご了承ください。

# 作成の流れ
## amplifyにenvを追加
いつものコマンドを叩いて、設定を開始します。

```console
$ amplify add env
 Do you want to use an existing environment? No
? Enter a name for the environment dev
```
たったこれだけで、これまで作った環境と全く同じ設定のバックエンド環境の設定ファイルが作られます。

## 環境を構築
作成した環境にチェックアウトして、pushするだけで、全く同じ環境が新たに作成されました！！

```console
$ amplify env checkout dev
$ amplify push
```

## 最新の環境を取得
複数人で開発している場合は、ローカル内のamblifyの情報がずれることが度々あります。
そんな場合は以下のコマンドで、解決です。

```console
$ amplify env pull
```

これで、最新のAmplifyの情報をクラウドから取得できます。
それまでの自分の編集分はちゃんと残っています。pullした箇所と自分が編集した箇所がコンフリクトした場合、どうなるかは未検証です。

## ローカル環境をあわせる
色々触り過ぎでわけわからなくなったときは、以下のコマンドで強制的にローカル環境を上書きします。

```console
$ amplify env pull --restore
もしくは
$ amplify pull
```
基本はrestoreのほうがいいと思いますが、おそらく両方とも動作は同じでないかと思われます。(未検証)

## 不要になったら削除
```console
$ amplify env remove dev
```
# 導入してよかったこと
## 開発環境のバックエンドを本番環境に簡単に反映
基本的には、1つのバックエンド構築のファイルが`amplify/backend`のフォルダ内に存在し、そのデータを元にチェックアウトしている環境にpushすることで、バックエンドが構築されます。

ですので、devにチェックアウトしてでいい感じになったバックエンドをprodに反映させいたい！というときは、そのままprodにチェックアウトしてpushしたらおしまい、という形でとても簡単ですね。

ただ、簡単にできるということは人為的なミスも生じやすいということなので、何かしらの管理出来る状況にはしないといけないとは思っている、、、。

## Amplifyコンソールとの連動
Amplifyコンソールを使ってホスティングしている場合、amplifyの環境を複数作成していると、ブランチごとにどのバックエンドの環境を利用するか選択することができます。
これで気軽に、本番環境と開発環境のバックエンドを分けることができます。

## 気軽にバックエンドを作成して試せる
ちょっと新しいことにチャレンジしてみたいけどな、、、なんてときには、このコマンドで自分専用のバックエンドを作成し、お試しして、よかったら、開発環境に追加なんてことができます。

こんな簡単に、既存の環境を一切汚さずにバックエンドのテストができるなんて素晴らしい！！

## Amplifyでのpushの失敗をリカバーできる
amplifyでうっかりリソースを削除してしまったときほど困ることは有りません。もう元に戻れなくて、イチから作り直しなんてことの経験は何度もあります。
そんなとき、このenvさんを使えば簡単に復活できます。

ちょっと長くなるので、こちらについては別記事でまとめています。
[Amplifyでpush前の状態に強制的に戻す方法](https://japan-port.qiita.com/too/items/ba12da95c2d7dfd04ec8)

# おわりに
この子を知ったことで、開発の幅が一気に広がりました。感謝。

# 参考
[機能ブランチのデプロイとチームのワークフロー(公式)](https://docs.aws.amazon.com/ja_jp/amplify/latest/userguide/multi-environments.html)
# 関連記事
[AWS amplify フレームワークの使い方Part1〜Auth設定編〜](https://qiita.com/too/items/fc961283dcbef3aafdeb)
[AWS Amplify フレームワークの使い方Part2〜Auth実践編〜](https://qiita.com/too/items/54992bb871fc1a2ab101)
[AWS Amplify フレームワークの使い方Part3〜API設定編〜](https://qiita.com/too/items/c0ce14d16772b9f71223)
[AWS Amplify フレームワークの使い方Part4〜API実践編〜](https://qiita.com/too/items/f9078803ea394c35df7d)
[AWS Amplify フレームワークの使い方Part5〜GraphQL Transform @model編〜](https://qiita.com/too/items/ab6b313da9f9e34be4a7)
[AWS Amplify フレームワークの使い方Part6〜GraphQL Transform @auth編〜]
(https://qiita.com/too/items/fae2879ea36f00c3ae10)
[AWS Amplify フレームワークの使い方Part7〜GraphQL Transform @key編〜]
(https://qiita.com/too/items/cb1dfb4f44536a3e9855)
[AWS Amplify フレームワークの使い方Part8〜GraphQL Transform @connection編〜](https://qiita.com/too/items/c77f1e5487d2497b5061)
[AWS Amplify フレームワークの使い方Part9〜Function 基礎編〜](https://qiita.com/too/items/d2732b3ec625011f4567)
[AWS Amplify フレームワークの使い方Part10〜Storage編〜](https://qiita.com/too/items/361bc10b6d27f133e9f8)
[AWS Amplify フレームワークの使い方Part11〜Function 権限管理編〜](https://qiita.com/too/items/b34cbfd7e96a01e33f23)
[AWS Amplify フレームワークの使い方Part13〜Auth 設定更新編〜]
(https://qiita.com/too/items/52f35860bcb5bdf5e667)
[AWS Amplify フレームワークの使い方Part14〜Lambda レイヤー編〜]
(https://qiita.com/too/items/54de781085bd9a3a66d0)