Open7

GCP関連

richwomanbtcrichwomanbtc

google_iap_brand

brand(IAP同意画面)をterraformで管理する際、application titleとか変えるとstateをimportしてもforce-replacementしようとする。ただ、google cloud側のAPIがDELETEやPATCHに対応していないのでalready existsと言われて怒られる。なので管理するのはちょっとむずかしいかもapplication_titleとsupport_emailを変えなければいい
https://github.com/hashicorp/terraform-provider-google/issues/6100

richwomanbtcrichwomanbtc

google_iap_brandのsupport_emailにはgoogle workspaceあるいはcloud identityのメールアドレスを指定する必要がある。
しかし、CI等で実行する際にはサービスアカウントを使うことになる。サービスアカウントのメールアドレスは使えないので、groupを作って、サービスアカウントをそのオーナーのgroupにする。
そうすると、groupのメールアドレスをsupport_emailとして利用することができる。

richwomanbtcrichwomanbtc

ローカルでterraform applyしたいときなどはGOOGLE_IMPERSONATE_SERVICE_ACCOUNT=<servicea ccount email>の環境変数を指定するとサービスアカウントの権限を借用できる。
ただし、roles/iam.serviceAccountTokenCreatorの権限が必要

richwomanbtcrichwomanbtc

cloud functionsとかcloud runとかで国とか地域のipアクセス制限を回避したいときにはVPCコネクタを設定する
VPCコネクタを設定しない場合にはcloud functionsとかのリージョンによらずglobalのipのプールから適当にpick upするのでipアドレス制限がある場合に引っかかったりする。(未検証。ただ、asia-northeast1を指定してもusのipアドレス制限に引っかかったりする。)
VPCコネクタを設定するとVPC networkに接続できる。subnetworkはVPC connector用のip addressの範囲。
ただしVPC networkに接続しても、GCP外にアクセスできないので、Cloud NATで静的ipを予約する必要がある。なので、例えばCloud NATのリージョンをus以外にすれば、usのipアドレス制限を回避できる。

richwomanbtcrichwomanbtc

cloud runでpython imageを動かそうとすると5秒くらいかかる。コールドスタート時は15秒くらい
cloud functionsは1秒以内に動いていそう

richwomanbtcrichwomanbtc

パーティション分割テーブルの特定のパーティションのデータを洗替えするにはパーティションデコレータを使ってパーティションを指定し、write_dispositionをWRITE_TRUNCATEを指定してload jobを実行する