はじめに
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とはより深いお友達になっていきたいと思います!
参考