terraformでbrandのimport
terraformでbrand(同意画面の設定)をimportした際にエラーとなったのでメモ。
terraform import google_iap_brand.project_brand <brand_name>
これでimportすると以下のエラー
Error: Saw <brand_name> when the name is expected to have shape projects/{{project}}/brands/{{name}}
というわけでそれに従ってフォーマットを変えて実行
terraform import google_iap_brand.project_brand projects/<project_id>/brands/<brand_name>
すると以下のエラー
Error when reading or editing IapBrand "projects/<project_id>/brands/<brand_name>": googleapi: Error 400: Unable to parse project number and brand. Use following format: projects/{ProjectNumber|ProjectId}/brands/{brand}
エラーに書かれた形になってると思ったのだがエラーが出てるので違うらしい。{brand}の部分がbrand名ではないということか。
で、少しググっていると以下のissueを発見
https://github.com/hashicorp/terraform-provider-google/issues/6100#issuecomment-613717470
そこに書かれた形式でやったら成功
terraform import google_iap_brand.project_brand projects/<project_id>/brands/<project_id>
単純にproject_idでよかったらしい
gcpのloadbalancerにてパスの振り分けでcdnにアクセスした際に404
loadbalancerではurlに応じてbackendを振りわけることが可能で、例えば以下のような設定ができる。
https://example.com/app/* -> app serverとなるcloudrunのインスタンスへ https://example.com/web/* -> cloud storageへ
以下のurlにアクセスしたとき
https://example.com/web/aaa/bbb.txt
cloud storageにアクセスがいくが、取得されるファイルはwebという名前のbucket内にあるディレクトリaaa直下のbbb.txtというファイルである。
loadbalancer側の設定としては上記に書いたように /web/*
ならこちら、のような形の設定を行っているため、*
の部分が展開されてbackend側で使われると勝手にイメージしていたが間違いだった。
意図していた通りに*の部分だけをbackend側に渡したい場合、詳細設定に含まれる"パスの接頭辞の書き換えとして /
を指定しておけばOK。
Cloud Load Balancingでマッチしたパスを特定のサービスに振り分ける
terraformでの設定なら path_prefix_rewrite
を設定しておけばよい。