GitHub Actionsでterraform CD/CD環境を構築する

概要 terraformでGoogle Cloudのリソースを管理し、GitHub ActionsによるCI/CDを構築するまでの手順をまとめます。 更に以下の要件を実現します。 Credentialを用いず、Workload Identity連携でサービスアカウントの認証をする Pull Requestをオープンした際、terraform plan結果のを自動でコメントする 1. gcloud CLIのセットアップ インストール ログイン 1 $ gcloud auth application-default login 作業するGoogle Cloudプロジェクトの権限を持つアカウントでログインする 2. GCSバケットの作成 tfstateファイルの置き場となるバケットを作成する 3. tfファイルの配置 以下のリソースを定義したtfファイルを配置する 手順2で作成したバケットのimport GitHub Actionsが用いるサービスアカウント GitHub Workload Identity連携の有効化 1 2 3 4 5 6 7 8 . ├── README.md ├── locals.tf ├── main.tf ├── modules │ └── workload_identity │ └── main.tf └── provider.tf locals.tf 1 2 3 4 5 # 定数の定義 locals { project_id = "your-project-name" # UPDATE HERE region = "asia-northeast1" } provider....

July 30, 2024

BigQuery+SendGridでマーケティングオートメーションを構築する

BigQueryとSendGridを組み合わせて、顧客データを基にパーソナライズしたメールを送信する方法を解説します。 送信したメールの効果測定・分析方法についても少し触れます。 1. SendGridテンプレートの作成 Sendgrid公式ドキュメントを参考に、Dyamic templateを作成します。 今回は以下のようなメールを送りたいとします。 A様への今週のおすすめ商品です! 商品B (1000円) 商品C (1500円) 購入はこちらから! https://example.com Dynamic templateは以下のように記述します。 1 2 3 4 5 6 7 8 {{customer_name}}様への今週のおすすめ商品です! {{#each products}} {{this.number}}. {{this.product_name}} ({{this.price}}円) {{/each}} 購入はこちらから! https://example.com このテンプレートに対して、送信対象ごとに以下のようなデータを埋め込む事が目標になります。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { "customer_name": "A", "products": [ { "number": 1, "product_name": "商品B", "price": 1000 }, { "number": 1, "product_name": "商品C", "price": 1500 }, ] } 2....

February 1, 2024