17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Amplifyでpush前のバックエンドに強制的に戻す方法

Posted at

はじめに

Amplifyで作成したバックエンドは、権限設定などリソースが複雑に絡み合ってくると、誤ったリソースの削除を行ってしまった場合など、$amplify pushのコマンドを入力しても途中でエラーになってしまい、もうどうしようもない、、、ということが起きがちです。

何も知らなかった開発段階では、泣く泣く$amplify deleteをして、一から作り直していたことも有りました、、、。(これが辛いのなんのって。)

本番環境をリリースしてから、そんなスクラップ&ビルドはできませんので、今回はそんなときの対処法を記録として共有します。
(これも暫定的な方法なので、早くamplifyさんこのあたり改善してくれないかな、、、)

対処法の流れ

事実を受け止める

修復する方法ないか出来る限り検証はしたほうがいいですが、素直に自分がやってしまった過ちを受け入れましょう。

過ちを正す

$amplify pushが一切できなくなってしまった要因を見つけだし、動いていた頃のコードに修正します。

新しい出会い

ここでenvコマンドの登場です。
以下の流れで、別のバックエンドの環境を構築し乗り換えます。

$ amplify env add
 Do you want to use an existing environment? No
? Enter a name for the environment testdev // 名前は適当でOK
$ amplify env checkout testdev
$ amplify push

過去との決別

壊れて動かなくなってしまったこれまでの環境に別れを告げます。
ありがとう、、、そしてさようなら、、、

$ amplify env remove dev

このとき以下のようなエラーが出て、お別れに失敗することがあります。

App d1bqk0orw288u not found.

これは、GUIのamplify設定でホスティングの登録した際の紐付けが怒られています。GUIからamplifyを開き、紐付けを解除しましょう。
その後、アプリID(上記の場合はd1bqk0orw288u)をローカルのamplifyフォルダで検索をかけると2箇所出てきますので、その項目を削除します。
再度removeコマンドを打てば、完全にお別れができます。

復縁

やっぱり、君じゃなきゃだめだ、、。

$ amplify env add
 Do you want to use an existing environment? No
? Enter a name for the environment dev
$ amplify env checkout dev
$ amplify push

そしてお別れ

この子のおかげで、また出会うことができました。本当にありがとう。
これで壊れた関係を無事修復することができました。

$ amplify env remove testdev

アフターフォロー

これでバックエンドは完全復活しました!!1から自分で作り直すことを考えれば、めちゃめちゃ早くシンプルに解決できました。
ただ、amplify以外のGUIで設定した箇所については、再度設定し直す必要があります。
以下は参考までに記載しておきます。

Amplifyコンソール

再度gitのブランチと復活したバックエンドを結び直します。

API Gateway

Lambda関数は、同じfunction名で作成されていますが、全く別物になるため、再度functionの紐付けを全て行いましょう。

  • functionの再度紐付け
  • オーソライザーの再設定

CROSのエラーがでることあり。再度CROSの有効化をやってデプロイしたら解消しました。

Cognito

結構GUIで設定してしまっていること多いので、注意が必要です。

  • ソーシャルログイン設定
    • OpenID Connect設定
    • マッピング
  • 検証メール設定
  • Lambdaトリガー(サインアップ前にcreateUserを紐付け)
  • デバイス

DynamoDB

DBも完全に初期化されているため、必要な初期データの流し込みを行います。これ忘れているとエラーいっぱい起きますので、ちゃんと行いましょう。

aws-exports.js

こちらのフォイルも更新されているため、開発メンバーに周知しましょう。

おわりに

できればこれもやりたくはない作業ですが、dev環境であれば、修復ができるようになりました。もしprodでこれがおきたら、、、

必ず開発環境内で検証をしっかりと行っていきましょう!!

引き続き、効率的な開発に向けてamplifyとはより深いお友達になっていきたいと思います!

参考

17
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?