生涯未熟

生涯未熟

プログラミングをちょこちょこと。

GCPプロジェクトが削除されたら何が起こるのかメモ

過去に書いた記事ですが、 Google Cloud Platform Advent Calendar 2021 の13日目の記事としました。
(1日だけ空いてるのが気持ち悪かったので・・・)

概要

開発に使っていたGCPプロジェクトが誤削除される事態があったので、後学のために何が起こるのかメモする。

[2021/10/26 追記]
社の人が誤削除の原因がよく分かる記事を貼っていたので共有

839.hateblo.jp

[2021/11/5 追記] 復元後、何故かMemorystore for Redisがコンソール画面から詳細を見れないようになっていた。(画面が真っ白になる)
サポートケースに投げたところ、復元時にRedisが内部的に上手く立ち上がらなかったらしくGoogleの方に直してもらった。

プロジェクトの復元

ユーザー操作によって削除されたGCPプロジェクトは削除対象としてマークされ、削除保留中のリソースに分類されます。

f:id:syossan:20211025215918p:plain

そして、こちらの画面右上にもある通りマークされてから30日間までは復元可能となっています。 復元を押下するとこんな感じのダイアログが表示されるので、「復元」を押下するとプロジェクトが復元されます。

f:id:syossan:20211025220115p:plain

しかし、ダイアログにも書いてある通り

  • 請求情報の紐付けが解除される → 課金が必要な機能が使えなくなります
  • 一部のリソースは個々の対応が必要になります

前者は単純に再紐付けすれば解決するのですが、厄介なのは後者です。

参考: cloud.google.com

一部のリソースの対応

一部のリソースとは何か?という部分ですが、自分が見た限りは以下でした

それ以外はDBやCloud Storageなどは無事でした。
DBは最初インスタンスが停止した状態になっていますが暫くすると立ち上がりますので放置で大丈夫です。

まとめ

とりあえず慌てず騒がずに復元しましょう。復元されたら請求紐付け。
もしかしたら今回遭遇したリソース対応以外にもあるかもしれないので、使用しているGCPサービスは全部正常か確認しましょう。

レビュー待ちのPR列挙くんを作った

GitHub Actionsでレビュー待ちのPR列挙くんを作った。こんな感じのイメージ。

f:id:syossan:20210807205801p:plain

コード

【2021/08/10 追記】

そういえばこの状態だとApprovedのPRも列挙してしまうので、弾きたい場合は各々のPRにrequest飛ばして( github.pulls.get )、response内の mergeable_state がcleanかどうか?とかで判定するといいかなと👀

Firebase Authenticationの電話番号認証でOTP Autofillを体験したかったけど敗北した

前段

Firebase Authentication、便利ですよね。各種主要な認証をポチポチっと様々なプラットフォームで実現できる、素晴らしい。
ただ、電話番号認証でOTPのAutofillをやる際には🤔となったのでメモ書き。

やったこと

きっかけとして何がやりたかったかというと、電話番号認証で認証コードがSMSで届いたら入力フォームにタップ一発でシュッとコードが入って欲しかった。
どんな挙動かというとこちらの記事内のGIFを見るとわかります。

akaki.io

で、これを実現しようと思うと以下のようなコードを書く必要がある。

<input autocomplete="one-time-code"/>

これだけ。スンバラシイ。
意気揚々とiOS/Androidで挙動確認してみたところ、iOS x Safariは想定通りにうま〜く動いてくれました。やったぜ。
ただし、Android x Chromeで試したところなんとまぁ動かない。

首をひねりながら調べていたところ、先程のサイトをよく読むと「Androidでは日本語のメッセージでの発動を確認できなかった」と・・・
Firebase Authenticationから届いてるメッセージはたしかに日本語で、それが原因かいなと対応策を探すことに。


暫く調べているとこんな記事が👀

qiita.com

Android: 日本語SMSメッセージでは自動では行われない様子。スクリプトで対応。

ここでWebOTP APIの存在を知ることに。コード書けばいいのね〜と書いて試してみました。
ちなみに navigator.credentials.getlocalhostHTTPS の場合のみしか動かないのでご注意を。

stackoverflow.com

で、やってみましたがこりゃまた動かない。どのように動かないかというと navigator.credentials.get で取れてくるべきOTPが取れずtimeoutエラー・・・
またまたなんでじゃと首を傾げていましたが、そもそもFirebase Authenticationから降ってくるメッセージってWebOTP APIの形式に合っているのか?と疑問に。
ちなみに欲しい形式は以下に載ってるように

Your OTP is: 123456.

@web-otp.glitch.me #12345

な感じ。

web.dev

どうなってるのかFirebaseのGitHub探った方が早いかなと調べたところ、こんな感じのissueが。

github.com

あー・・・これはサポートされてませんね・・・
というわけでFirebase Authentication側で対応してくれないことには実現できないのかーと敗北しました😇

※もし「いや!出来るよ!」という方がいらっしゃいましたらコメントに書いてもらえると助かります・・・🙇

GitHubのREADME.mdにある画像をPurgeするGitHub Actionsを公開したよ

社内でGitHub Actionsを拵えた時に、掲題のGitHub ActionsがMarketPlaceに意外と無かったので作って公開したよ。

github.com

それ何?

GitHubのREADME.mdに貼った画像はセキュリティの観点やらでOSSのcamoを使ってホスティングされているんですよね。

docs.github.com

で、ここでキャッシュが効いているので画像に対して明確にPURGEをリクエストしないと画像が切り替わらない問題があります。
例えば、今回拵えたもので言うとGitHub Actionsによるデプロイ作業によってREADME.mdにある画像をよしなに切り替えた後に、このPURGEを行いたかったわけです。

走らせるshell scriptについてはmpyw氏の以下の記事を大いに参考にさせて頂きました。

qiita.com

もし困ってる人がいたら使ってみて下さいー。

GitHubのprivate repositoryにあるREADME.mdをHTML形式で取得する

久々に書き留めたいネタが出来たのでメモ。
掲題の通りなのだが、何故こんなことがしたかったかというとprivate repositoryにあるREADME.mdの画像をPURGEしたかったから。

やり方

$ curl -H 'Authorization: token [github token]' -H 'Accept: application/vnd.github.v3.html' -sL https://api.github.com/repos/[owner]/[repo_name]/readme

これでいける。
で、取得してきた内容から camo.githubusercontent.com の画像URLを抜き出してPURGEする。
shell scriptでやる場合はこちらのrepoが参考になりました。

github.com

ここのcurlを使った部分を↑のようにすれば良い。
簡単なことだがめちゃくちゃ詰まったのでメモメモ。