ぽくつなです

GCP

Google Cloud 認定 Professional Data Engineer 取りました

やったー Google Cloud の主催する Google Cloud Innovators Gym Japan (G.I.G) というプログラムに参加して取りました。 Google Cloud を利用する企業を対象とした招待制のプログラムで、参加すると関連する Coursera コースへのアクセス、試験を受けるため…

Google Cloud 版 Dataform と周辺リソースの図

GCP 版 Dataform がついに GA になりましたね。同時に定期実行の仕組みも出て、一通りの機能が揃った感がある。いまこそ買収以前の SaaS 版(Legacy 版)から GCP 版に移行する時!! しかし GitHub リポジトリと連携する場合、登場人物が多くて難しくなっている…

なぜ今も Google App Engine を選ぶのか

Google Cloud で何かアプリケーションを動かしたい時、いつも App Engine (GAE) を第一の選択肢として挙げています。 なのにみ〜んな Cloud Run に行ってしまう。なぜなのか?? 確かに Cloud Run のほうが新しくて公式に露出が多いし、GAE はこういうランディ…

2022-10 の Cloud Storage 料金改定に伴い GCR から Artifact Registry へ移行する

Google Cloud で運用しているサービスの Cloud Storage 費用が10月の料金改定から爆増していた。 Cloud Storage 費用(オレンジ部分)が増加 料金改定のタイミングで Cloud Storage のマルチリージョンからマルチリージョン内のリージョンへの転送費用が無料じ…

gcloud の configurations を切り替える

前回の記事では --project を毎回渡せという主張を展開していたけど切り替える話。 blog.pokutuna.com gcloud コマンドには構成を管理するサブコマンド gcloud config configurations がある。管理するプロジェクトが多くない場合は、カレントプロジェクトを…

gcloud にカレントプロジェクトを設定しない派

GCP

gcloud CLI にカレントプロジェクトをなるべく持たせないようにして暮らしている。 gcloud はデフォルトでカレントプロジェクトのリソースを操作する。操作するプロジェクトが 1 つなら良いけど、仕事でも遊びでもいくつもの GCP プロジェクトを扱っているの…

GCP IAM ロールの持つ権限を比較するテク

メンバーやサービスアカウントの権限を考える際に、ロールの持つ権限を比較したいことがしばしばある。そういう時は gcloud と diff を使うことで比較できるという素朴なテク。 ロールと権限 ロール(role)は roles/{roleName}, roles/{service}.{roleName} …

3/17 Born Digital Summit 2022 で発表します

来週 2022-03-17(木) の Google Cloud オンラインイベント 16:20- 『はてな広告配信システムのクラウドネイティブ化への道のり』で発表します。 データセンター環境で運用していた広告配信システムを GCP へ移転する話です。 派手なメッセージな感じではなく…

GCP の Application Default Credentials を使った認証

公式ドキュメントで説明されているけど、同僚に何度か説明する機会があったり、作る必要のないサービスアカウントキーを目にすることも多いのでまとめておく。 認証情報が登場しないアプリケーションコード 例えば以下のコードで Secret Manager に保存した…

GKE Autopilot で節約のために asia.gcr.io を使う

追記: 2022-10 移行、無料条件が変わったので Artifact Registry を使うのがよいです blog.pokutuna.com GKE Autopilot に移行してみたところ、意外と費用がかかっていた。 調べたところ、Cloud Storage の egress が支配的で、GCR からのコンテナイメージ転…

Cloud Functions で標準出力に書かれた JSON 文字列がそのまま jsonPayload に入るようになった

タイトルままの話。 GCP では各プロダクトで出力したログが Cloud Logging に集約されて、横断的に見たり検索したりできて大変便利。フィルタして BigQuery に流し込めるのも最高オブ最高。仕事が楽になるっていうのはこういうことやで。 ただ、プロダクトご…

Next.js を Google App Engine にデプロイする

GAE 便利さに気づいてからめちゃくちゃ気に入っている。 最近開発が活発な Cloud Run や、Firebase のバックエンド実行環境でもある Cloud Functions が話題に登りがちだけど、2nd gen になってからの GAE はめちゃめちゃいいです。 トラフィック分割などの…

.gcloudignore で全部無視して必要なものだけ指定する

App Engine や Cloud Function や Firebase プロジェクトのデプロイ時などでしばしばやる。 TypeScirpt などトランスパイルが必要な言語をデプロイする際に、実行に必要ないファイルをたくさんアップロードしていることがある。 .gcloudignore で全部 ignore…

BigQuery スケジュールされたクエリを設定する際の動作確認コマンド

Scheduling queries または Scheduled queries と呼ばれているもの、日本語だといまいちしっくりこない名前。定期的にクエリを実行して結果を宛先テーブルへ書き込んでくれる。メールで通知したり Pub/Sub イベントを投げたりもできる。 クエリのスケジュー…

Cloud Functions でログをグルーピングする

または Cloud Functions で httpRequest ログを書く方法。 Cloud Logging (もう Stackdriver ブランドなくなりましたね)の好きな機能に、リクエスト内のログをまとめて表示する機能がある。アプリケーション内での一連のログをまとめて追えてとても便利。 me…

Cloud Functions PubSub トリガはデフォルトでは再送しない

タイトルそのまま 以下のように Cloud Functions をデプロイすることで、トピックへメッセージが来るたびに function を起動してくれる。 $ gcloud functions deploy --trigger-topic=TOPIC_NAME 裏では gcf-{function}-{topic} という設定のサブスクプショ…

Could not load the default credentials エラーについて

Cloud Functions でしばしば見るエラー、Firebase Functions も中身は同じなので起きる。 なにやらちゃんと動いていないぞ... と Stackdriver Logging を見にいくと、こういうエラーメッセージが書かれている。 Error: Could not load the default credentia…

Firestore のエクスポートデータを timetamp パーティショニングして BigQuery に取り込む

Firestore または Datastore の中身を柔軟に検索したい場合、エクスポートしたデータを BigQuery へロードすることで実現できる。 コンソール上に UI も提供されていて簡単だけど、パーティショニング選択肢が "取り込み時間" しかない。 コンソール上のパー…

Cloud Build の waitFor の挙動

Google Cloud Buildにおいて、 ビルドステップの順序の構成 | Cloud Build のドキュメント | Google Cloud waitFor の値が指定されない場合、ビルドステップは、ビルド リクエスト内の先行するすべてのビルドステップが正常に完了するまで待機した後に実行さ…

Nature Remo センサー値を Mackerel へ送り侵入警報を作る

このまえ Nature Remo を買ったので作った、似たようなことは既に誰もがやっているけど 構成 Cloud Scheduler -> Cloud Pub/Sub -> Cloud Functions Cloud Scheduler が定期的(ここでは5分おき)に Pub/Sub へメッセージを投げる Pub/Sub を Subscribe した C…