くりにっき

フルスタックキュアエンジニアです

GCP

Cloud Functionsのデプロイ時に使われるArtifact Registryで古いタグを削除する

GCP

前提 手順1. Cloud Functionsが作ったArtifact RegistryのリポジトリをTerraformにimportする 手順2. Artifact RegistryにCleanup Policyを適用する 他のソリューション 前提 Google Cloudの Cloud Functions の第2世代ではデプロイする時には自動的に Artif…

Herokuにあった個人アプリを軒並み対応した

背景 やったこと1. 廃止 やったこと2. GCPに移行 ユースケース図 URLベースで見たユースケース図 実行環境で見たユースケース図 実際にGCPに移行したアプリ達 Cloud Run Cloud Functions AppEngine GCP移行した全てに共通してること やったこと3. CircleCIに…

Keyless Terraformに特化したTerraformテンプレートリポジトリを作った(AWS, GCP対応)

tl;dr; 前置き モチベーション テンプレートリポジトリについて 頑張った点:Terraformを実行するための初期設定をCloud FormationやDeployment Managerで行うようにした tl;dr; github.com github.com 前置き 9月くらいにGitHub ActionsでOpenID Connector…

至極の難問AWS & GCPクイズ

社内勉強会で発表したら好評だったので公開 注意 問題1 問題2 問題3 問題4 問題5 おまけ:発表中の社内の反応 余談 1年前の僕 2ヶ月前の僕 関連クイズ 注意 全問解けても仕事の役にはたちません ググるのは禁止 問題1 Q: 正しい組み合わせはどれか? AWS: Cl…

Cloud FunctionsにRubyのスクリプトをデプロイする時の裏側

前置き 注意点 Cloud Functionsのデプロイ方法 デプロイ時のログの場所 Cloud Functionsのデプロイで使われるビルド環境 Cloud Functionsのデプロイ時の処理 前置き 個人ツールをCloud Functionsで動かしてるのですがある日突然デプロイできなくなりました。…

Cloud FunctionsでRubyを使う時はdevelopmentやtestのgemはインストールされない

前置き 検証コード Gemfile app.rb ローカルでの実行結果 Cloud Functions上での動作確認結果 前置き Cloud Functionsにデプロイする時には gcloud functions deploy を使います。 そこで bundle install も自動で実行されるのだけど、その時に --without de…

gcp-secretmanagerenvを作った

gcp-secretmanagerenvについて 作った経緯 使い方 gcp-secretmanagerenvについて GCPのSecret Managerのラッパみたいなやつで、 gcp-kmsenv のSecret Manager版です。 github.com 作った経緯 本番環境(GCP)ではSecret Managerを使うのでいいんだけど、ロー…

Cloud Functions CI/CD俺的ベストプラクティス

AWS Lambda CI/CD俺的ベストプラクティス - くりにっき のCloud Functions版です sue445.hatenablog.com 最近Cloud Functions使うことがあってCI面からフレームワークなどを検討しました。AWS Lambdaほどガッツリ使ってないので比較対象が少ないのはご愛嬌 T…

gcp-kmsenvを作った

github.com モチベーション 使い方 FAQ Q. Secret Manager使えばいいのでは? モチベーション condo3 で app.yaml 内に Cloud KMS で暗号化した秘匿値を埋め込みやすくするために作ったモジュールをライブラリ化しました。 とはいえGoogle App Engine専用と…

Cloud Runでは/_ah/で始まるパスは使えない

GCP

タイトルが全て 事象 Cloud RunにDockerコンテナをデプロイしたが、gcloud run deploy --allow-unauthenticated *1 で全公開にしてるにも関わらず /_ah/health (コンテナ内で動いてるアプリのヘルスチェック用のエンドポイント)を呼ぼうとして401エラーに…