Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GCPと連携してマスターデータ更新
Search
SatohJohn
November 02, 2022
Programming
0
210
GCPと連携してマスターデータ更新
[GDG Osaka] GASによる業務改善勉強会で発表をした内容になります。
https://gdgosaka.connpass.com/event/261885/
SatohJohn
November 02, 2022
Tweet
Share
More Decks by SatohJohn
See All by SatohJohn
Open Feature 面白いぞ
satohjohn
0
39
Workforce Identity を使った 権限管理で Cloud Run を動かしてみた
satohjohn
0
290
Gemini + Vertex AI を使って作業を自動化「していく」
satohjohn
0
69
Cloud_Run_GPU___Gemma_2_を使った_LLM_アプリケーション開発のススメ.pdf
satohjohn
0
25
Firebase Authenticationのセッション管理術
satohjohn
2
2.3k
お客様とすすめる_フロントエンドの技術支援.pdf
satohjohn
1
1.1k
コンテナ環境のKotlinアプリケーション を運用しよう _ Google Cloudを使って
satohjohn
0
170
GCPでのバッチ処理パターンを考えてみる
satohjohn
1
1.2k
Nuxt.js + Google App Engine でのアプリケーション開発の勘所
satohjohn
0
470
Other Decks in Programming
See All in Programming
Coding Experience Cpp vs Csharp - meetup app osaka@9
harukasao
0
130
goにおける コネクションプールの仕組み を軽く掘って見た
aronokuyama
0
140
AIエージェントを活用したアプリ開発手法の模索
kumamotone
1
760
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
350
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.1k
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
130
いまさら聞けない生成AI入門: 「生成AIを高速キャッチアップ」
soh9834
12
3.9k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
800
Kubernetesで実現できるPlatform Engineering の現在地
nwiizo
3
1.8k
Develop Faster With FrankenPHP
dunglas
2
2.8k
Modern Angular:Renovation for Your Applications @angularDays 2025 Munich
manfredsteyer
PRO
0
150
The Weight of Data: Rethinking Cloud-Native Systems for the Age of AI
hollycummins
0
140
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.6k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
12
620
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
It's Worth the Effort
3n
184
28k
The Pragmatic Product Professional
lauravandoore
33
6.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
How GitHub (no longer) Works
holman
314
140k
Gamification - CAS2011
davidbonilla
81
5.2k
Transcript
GCPと連携して マスターデータ更新 [GDG Osaka] GASによる業務改善勉強会 2022/11/02 佐藤慧太
軽い自己紹介 - 佐藤慧太( @SatohJohn ) - フリュー株式会社 ( 渋谷 )
- 社内でGCPの営業として 活動しています
新規事業とかで Spread Sheetでマスターデータ管理 ってよくやりますよね
で、Masterデータをもとに DBを更新するじゃないですか
でも、DBはprivate IPしか許可せず 直接繋げないんです
そんなときに Cloud Functionを通して DBを叩く!
つまり セキュリティの硬いDBに対して Serverless VPCを通した Cloud Functionを通して アクセスする
メリット - 運用メンバー、企画メンバーが書いているスプレッドシートをそのままMasterとして 利用できる - GCPのアプリケーションからFunctionsやCloudRunなどを叩くことができる - 複雑な処理を書ける - 認証通せるので、関数自体は叩かれまくることはなく安全
- GASを叩ける人を決められる (spread sheetの共有とGASを叩く人が違う場合)
デメリット - 1GCPプロジェクトしか紐付けできない - 開発系と本番系とー、ってなるとめんどい。 VPCを色々イジる必要がある。
構成
やりかた
やりかた(GASとGCPを紐付ける1) GASの方でプロジェクトの認証をする (projectIDじゃなくプロジェクト番号なの注意)
やりかた(GASとGCPを紐付ける2) GCP Projectの方でクライアントが自動的に作られる
やりかた(GASとGCPを紐付ける3) OAuth同意画面で公開ステータス「テスト」 ってなっている場合、 テストユーザを追加する
やりかた(Functionを作る) 認証ありでCloud Functionを作成する(ここは自由、ただし私はNode.jsが好きです)
やりかた(GASを作る) // Cloud Functionsとの接続 / Cloud Functionsに対して、HTTPトリガーの発火をする function post(payload) {
const url = "https://hogehoge" const token = ScriptApp.getIdentityToken() UrlFetchApp.fetch({ url, method: 'post', payload: JSON.stringify(payload), contentType: 'application/json', headers: { Authorization: `Bearer ${token}` } }) } ScriptAppのgetIdentityTokenをつかって認証ができる!
実行をしよう
実行をしよう
感じたこと - 思ったよりもかんたんに実装ができるぞ - 今まで、GCPプロジェクト側からSpread Sheetへの参照をしていた - service accountの作成して、spread sheetに参照権限もたせてた
- GCPの「組織」を使ってやると、公開アプリケーションとして配布できるのでなんか 色々できる - と思う
おしまい