t_wの輪郭

再現手順

Amplifyを触ったことがある人を対象としているため、画像を貼ったりせず、事細かには説明しない。適宜補完してほしい。

本番と見なすAmplifyのアプリを作成する

ダミーのウェブアプリを作る
  1. Githubに空のレポジトリを作成する
  2. GithubからレポジトリをCloneする
  3. ローカルの端末でnpx create-react-app amplify_the_destroyerなどと実行して、テスト用に適当なウェブアプリを作成する。ここでnext.jsで作るとややこしいことになるのでやってはいけない。
Amplifyのウェブコンソールでの作業
  1. Amplifyのウェブコンソールから「アプリケーションを構築」を押して、アプリ(名前はto_be_destroyedとする)を作成する。
ローカルの端末での作業
  1. Backend environmentsにstagingがあるので、これをamplify pull --appId {appId} --envName stagingで取得する。
  2. git add .git commit -m "init"git pushを実行して、レポジトリにコードを反映させる。
Amplifyのウェブコンソールでの作業
  1. Hosting environmentsからGithubを選択して、上記レポジトリのmainブランチと連携させる。
  2. 「ビルドの設定」画面で、Environmentを「新しい環境を作成」にし、Environment名は空欄のままにする。
  3. デプロイを開始し、デプロイされるのを待つ。
作業結果

下の画像のようになれば成功だ。Amplifyを使っている人には見慣れた光景かと思う。

この後、ローカルの端末でamplify pull --appId {appId} --envName mainを実行してmainと同期し、その結果をGithubのレポジトリにpushしておく。


本番環境とは切り離された検証環境のつもりでAmplifyで別アプリを作成する。

  1. Amplifyのウェブコンソールから「アプリケーションを構築」を押して、アプリ(名前はdestroyerとする)を作成する。
  2. Hosting environmentsからGithubを選択して、上記レポジトリのmainブランチと連携させる。
  3. 「ビルドの設定」画面で、Environmentを「新しい環境を作成」にし、Environment名は空欄のままにする。
  4. デプロイを開始し、デプロイされるのを待つ

Amplifyのウェブコンソール上でdestroyerを削除して、to_be_destroyedのBackend Environmentsが削除されるのを確認する

  1. Amplifyのウェブコンソールでdestroyerを開き、「アプリの削除」を押して削除する。
  2. destoryerが削除されたら、to_be_destroyedのBackend Environmentsが削除されているのを確認する。

mainが「Deletion completed」となっているのが確認できる。


原因

Amplifyにレポジトリ連携でデプロイする時、team-provider-info.jsonがレポジトリに入っていると、別Appであっても同一のCloudFormationスタックが用いられる。
そのため、Appを削除するとCloudFormationによって他Appと共用となってしまっているバックエンド環境が削除される。


対策(未検証)

  • Amplifyと連携しているレポジトリからteam-provider-info.jsonを消す
  • .gitignoreにteam-provider-info.jsonを追加する
  • CloudFormationのスタック削除保護を有効化する
  • バックアップを設定する

後記

代理店を通じてAWSにBackend Environmentsの復旧を依頼したが、Backend Environmentsに掛かるDynamoDB・S3は復旧できないとのこと。
amplify pullを実行すると、.gitignoreに色々追記されるが、team-provider-info.jsonは除外設定にならない。
本事象は私のプロジェクトの本格運用前に発生した。本格運用が始まった状態でこの問題が発生した場合にはより深刻な影響を及ぼしただろう。
DynamoDBのデータは、DataStoreがDynamoDBと同期していたブラウザのIndexedDBより救出された。
今年の2月に開始された弊プロジェクトでは、この他にも2度ほどAmplifyのバグを踏んでいる。

2023年11月20日日記

2023/11/21 0:11:00

 Misskey.ioにルビ機能が来たので、カタカナ・希哲館訳語変換サービスの改修の報知をした。
 https://misskey.io/notes/9m9ogghzbxld00v2


 今日は仕事ではシステムが吹っ飛んだ件を調査していた。まじで勘弁してほしい。問い合わせが帰ってきて、色々確定したら情報をまとめたい。現状だと確定していないので、「〇〇サービスで✕✕するとデータやユーザーアカウントが全部消える」とか軽率に言うことはできない。
 多分、普段私の投稿を見ている人にはどのサービスなのかはなんとなく察しがついてしまっているだろう。


 K研究室の通話にて、K教授や他の客員研究員の人と話した。
 やはり私は知識の面においてかなりブランクがあることがわかった。大学を離れてからもう6年も経っているし、その間にキャッチアップできる情報にも限りがある。

 大学院での研究で調子を崩してから余裕がなくなって、ずっと実務しかできていなかった。最近になってやっと色々できるようになってきた。ブランクを取り戻さねば。
 実務能力は大学院にいたときより遥かに高くなっているし、デライトという強い味方もある。研究、やっていきたい。
 あと、私は変なことをするときに先行事例の調査が甘いままに、実装や実験に突っ走る傾向があるので、もうちょっと調査の時間を多く取っても良い気がした。あと環境も大きい。今日の通話で「画像と文章のEmbeddingを同じ長さにして学習してやれば文章から画像が検索できますよね」とか言ったら、Multimodal Embeddingがすでにあることを教えてもらった。やっぱ先行研究あるよなぁ。「先行研究が無いなら研究する価値がない」って昔言われたし、研究する価値があるなら先行研究があるのだ。

2023年11月17日日記

2023/11/18 0:02:00

 朝、体が冷え切って目が覚める温度になってきた。そろそろ布団を出さないと体調を悪くしてしまう。


 上司と、私の今年の目標達成率について1 on 1をした。お互いに、「毎日の定例で30分話してるし、話すこと無くね?」みたいな感じだったが、普通に予定していた時間いっぱいまで話した。評価は上司の更に上がするので、まあどうなることやらである。
 設定した目標を完全に忘れていたが、自己評価においては目標達成率は思いの外良かった。ちゃんと、自分が走りそうな方向に目標を置いておいたのが良かった。
 ちなみにこの目標管理は給与とかボーナスには影響しない。という建付け。多分参考にはする。


 仕事で問い合わせを出して、その回答待ちなのを良いことに、すげーダラダラしていた。
 Next.jsSMTPを受ける方法とか検討していた。無理そう。コレができるとシステムでできることの幅が広がるのだが。普通にマネージドサービスを使ったほうが良いんだろう。

 そうこうしていたところ、仕事でクラウド上に作ってるシステムが、全部吹っ飛んでいることが判明した。DBやらファイルやらユーザーアカウントやらが全部消えた。まだ本番運用前で良かった。
 上司と話したところ、週明けに原因調査しようということになった。定時直前に発覚して、上司に相談した上で泣きながら帰宅した。
 何も心当たりのある操作してないんだよなぁ……。クラウドのコンソールにログインするアカウントが不正ログインされた形跡もなかった。クラウドのシステム自体の不具合で消えたんだったら、一発アウトなので別のクラウドに移行しないといけなくなってしまう。
 CI/CD・DB・ストレージ・認証・認可・API生成の全部入りのマネージドサービス(フレームワーク付き)でこの事象が起きちゃったので、まじで影響範囲がでかい。死ぬ。たのむ、俺のミスであってくれ。

 Fediverseで「複雑なマネージドサービスって怖いよね〜〜」という話をしていた。はい。実感。


 布団を出してカバーを付けた。カバーをうまく付けられなくてモタモタしてしまった。疲れで不器用になっている。俺はもうだめだ

あれ

2023/11/21 21:42:00

初期設定がデータを吹っ飛ばすようになっている仕組みなのは困りますね。

このあたりが「AmplifyはPoCに最適」と言われ、本番環境での運用事例が乏しい所以かと思います。

あれ

2023/11/29 13:58:00

やっとこ復旧できた。Amplifyの自爆ボタンは押しても発動しないようにした。

2023年11月19日日記

2023/11/19 22:48:00

 実家からみかんが届いた。5kg。ギリギリ冷蔵庫に入った。5kgともなると流石に食べきれずに腐らせてしまうので、職場で配りたい。明日総務部あたりに頒布していいか打診しよう。
 和歌山では農家からみかんがトリクルダウンしてくる。


 今日は休みの日と位置づけた。最近プログラミングのやり過ぎで、疲労感がある。


 昼。軽く街をぶらついた。散歩ルートがなかなか定まらずにいる。
 ぶらついた後、やや暖かかったのも有って、スタバのテラスで読書をした。そのためにわざわざ本を持ち出しておいた。テラスでの読書は、今年はコレが最後になるだろう。そろそろ寒さが厳しくなりそうだ。


 夕飯。鍋に積まれた白菜の山に蓋を載せながら、俺はいつか寸胴を買うのだろうなと思った。


 月曜が近づき、2023年11月17日日記で書いた開発中のシステムを吹っ飛ばしたままの件が重くのしかかる。憂鬱だ。Gloomy Monday。なにかの手違いで直っていてほしいが、そんなことは起こらないので、なんとかするしか無い。

あれ

2023/11/23 9:04:00

Amplify爆死レポート』をFediverseに流したところ、「わっかるー」と帰ってきた人とFFになった。

その人のタイムラインを遡っていたら、Azureの愚痴が度々書かれており、「AWSからAzure行くぞッ!」と思っていた矢先だったため、「Azureもあかんか……」となっている。逃げ道が無いではないか。

あれ

2023/11/24 10:23:00

爆死必至の地雷原を進む隊員を見守る気持ち。

私は膝に矢を受けてしまったので、しばし頑張れそうにない。

副業の案件でこっそり使うか。
あの案件はシステムが使い捨てだし、データ溜め込まないし、ちょうどよかろう。

あれ

2023/11/22 12:02:00

極めて危険な仕様なので、なんとかしてほしい。CloudFormationのスタックの削除を一定期間は取り消せるとか。