host=/cloudsql/PROJECT_id:REGION:NAME
terraformからIAMを作成する時に Error retrieving IAM policy for project ~ googleapi: Error 403: The caller does not have permission
terraformからIAMを作成するために以下のようなコードを書いた。
resource "google_service_account" "scheduler_invoker" { display_name = "Schedler Invoker" account_id = "scheduler-invoker" } resource "google_project_iam_member" "run_invoker" { role = "roles/run.invoker" member = "serviceAccount:${google_service_account.scraping_scheduler_invoker.email}" project = var.project }
これで apply すると以下のようなエラーが出た。
Request `Create IAM Members roles/run.invoker serviceAccount:~"` returned error: Error retrieving IAM policy for project "~": googleapi: Error 403: The caller does not have permission, forbidden
IAMポリシーをいじるためのロールが terraform の credentials に渡したIAMに存在しない。
IAMに「Project IAM 管理者」を付与すると解決する。
ReactNativeでデバッグ用apkファイルを作成する
プロジェクトルートで
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
cd android
./gradlew assembleDebug
yourProject/android/app/build/outputs/apk/debug/app-debug.apk
にapkファイルが作成される。
TerraformでGCPのCloud SQL(postgres)のtierを指定するときのポイント
TerraformでGCPのCloud SQLをpostgresで立てようと思った。
CPUやメモリなどを含んだマシンタイプを指定する必要があるが、今までは db-f1-micro のようにGCPがデフォルトで提供しているタイプを使用していた。
tier = "db-f1-micro"
これを db-lightweight-1 に変えてapplyしたのだが、変更することができなかった。
これによると、
Postgres supports only shared-core machine types, and custom machine types such as db-custom-2-13312.
とのことで、共有コアのマシンタイプのものしか指定できず、それ以外の場合はカスタムマシンタイプにする必要がある。
「db-custom-CPU数-メモリ量」で表すことはできるが、なんでも数値を入れることができるわけではなく、
CPU の数とメモリの量を選択する際、選択する構成にはいくつかの制限があります。
vCPU は 1 または 2~96 の間の偶数にする必要があります。
メモリは次の条件を満たす必要があります。
vCPU あたり 0.9~6.5 GB 256 MB の倍数 3.75 GB(3,840 MB)以上
この条件を満たしていなければならない。
インスタンスの設定について | Cloud SQL for MySQL | Google Cloud
なのでカスタムマシンタイプを指定する場合の最小構成は db-custom-1-3840 ということになる。
Prismaのデプロイで Error: P3009 migrate found failed migrations in the target database, new migrations will not be applied. が出たので対処した
Cloud SQL に prisma deploy した時に
Error: P3009 migrate found failed migrations in the target database, new migrations will not be applied. ... The `20220515100619_foo` migration started at ...
というエラーが出た。
このエラーが出たマイグレーションは NOT NULL なカラムを追加するものだったのだが、そのテーブルが既にデータを持っていたので失敗してしまっていた。
手動でテーブルからデータを削除して再度デプロイを試みたが失敗した。
解決法
_prisma_migrationsテーブルから該当のマイグレーションの履歴を削除して再度ビルドする。
SELECT id FROM _prisma_migrations where migration_name='20220515100619_foo'; DELETE FROM _prisma_migrations where id='<ID>';
Playgroundが見つからなくて焦った
Playgroundでコード書こうと思ったらどこから始めればいいか忘れてた。
Xcodeメニューの File -> New -> Playground から新規作成できる。
react-native-google-fitを開発用で使えるようにする
ReactNativeを使っているアプリで react-native-google-fit を用いて Google Fit と連携したかったが、開発用で使用可能にするためのプロセスで若干ハマったので備忘録。
まず普通にインストール
yarn add react-native-google-fit
Client ID を取得するのに必要な certificate's SHA-1 fingerprint を表示
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
すると、SHA1: から始まるラインがあるので、そのSHA:1以降の情報をコピーする。
メニューから APIs & Services を選択しページを表示。
上部の + CREATE CREDENTIALS をクリック。
OAuth client IDを選択。
ApplicationはAndroidを選択。
SHA-1 certificate fingerprint を入力する欄があるので先ほどコピーしたものを入力。
CREATE で作成。
OAuth 2.0 Client IDs に作成したものが表紙されていることを確認。
アプリを再度ビルド。
これでGoogle Fit と連携することができた。
react-native-google-fitのリポジトリにはテストユーザーの追加や、新規 debug.keystore の発行などのプロセスも書かれているが、自分は上記の手順でセットアップすることができた。
参照
Get an OAuth 2.0 Client ID | Google Fit | Google Developers
react-native-google-fit/INSTALLATION.md at master · StasDoskalenko/react-native-google-fit · GitHub