寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

GCP(Google Cloud Platform)

GCP のメタサーバから Project ID を取得する(Cloud Runでも)

GCPでアプリケーションを動かす場合、Project ID のパラメータをプログラム内から利用したい場合があります。 環境変数で渡す、というのも方法として悪くないと思いますが、 GCP環境で動いている場合にはメタサーバからProject IDを取得することができます。…

Cloud Run 上でデフォルトで設定されている環境変数

Cloud Run (go) 上で設定されている環境変数、たびたび何が設定されていたっけ?と調べることが数回あったので、 忘れないようにメモしておくことにした。 設定されている環境変数 goの os.Environ を叩いて取得できるものは以下。 コンテナは gcloud run de…

Permission 'iam.serviceaccounts.actAs' denied on service account ~~ のように言われたとき

従来、GCPの特定のサービスでは、ユーザがサービスアカウントを偽装する権限がなくても、サービスアカウントをリソースにアタッチすることができましたが、 App Engine CloudComposer Cloud Data Fusion Dataflow Dataproc においては偽装する権限を付与する…

GAEのカスタムドメインのTLS1.0/1.1を無効化する

GAEでカスタムドメインを利用しており、TLS1.0/1.1 を無効化したいという人もいるかと思います。 今回はその流れをサラッと書いていこうと思います。 なぜ TLS1.0/1.1を無効化するのか 私の説明より こちら の素晴らしい記事を読むのが良さそうです。(手抜…

Terraformやコマンドで作成したCloud LoggingのLog RouterがPub/Subに送られない

ちょっと前にTerraformでLog Routerを作成し、Pub/Subにログを送ろうとするとうまく送れず、 Web UIで作成するとうまく送れるということがありました。 雰囲気問題点がわかった気がするのでメモしておきます。(2021/02/08現在の情報です) 問題点 Web UIか…

GAE/go のデプロイが遅くなったと思ったときに読む記事

タイトルの通り、GAEのデプロイにCloud Buildが裏側で利用されるようになり、 なにやらキャッシュとかうまいことやってくれようとしています。 しかし、そのキャッシュの作成なのか、展開なのか、若干その扱いが内部的にうまく行ってないようで、 デプロイを…

Spanner で NOT Nullのカラムを追加したい

Spanner は RDB のようにかっちりとスキーマを定義する DB なので、 Datastore などのように、プロパティをふわっと追加してデータ投入などできません。 RDB と同じように DDL を利用してカラム追加して利用しますが、 NOT NULL のカラムの追加ができないと…

今日 (2019/09/10) 現在のGAE/goをUPDATEする際の注意点、俺まとめ

Appengine/goが過渡期とでもいいましょうか、 日々変化も目まぐるしく、いろいろ気をつけるべき点もありそうなので雑にまとめました。 ご参考まで。(2019/09/10現在) GAE/go 1.9 は終わり 画像のとおりです。 警告: Go 1.9 ランタイム バージョンは非推奨…

gcloud コマンドで TaskQueue(TQ)/Cloud Tasksを操作する

皆さんTQつかってますか。 ちゃんと使うとめちゃくちゃ便利なTQ(Cloud Tasks)ですが、コマンドでサクッと作ったり消したりしたい(特に消したい)というのがあったので記事にしました。 TQを作成する 以下のようなコマンドでTQを作成します。 gcloud --pro…

コンテナでgcloudコマンドを実行するとERROR: gcloud crashed (UnicodeDecodeError): 'ascii' codec can't decode byte 0xe8 in position 1: ordinal not in range(128) みたいなエラーが出る

タイトルの通りで、 コンテナ環境で gcloud コマンドを実行した際 ERROR: gcloud crashed (UnicodeDecodeError): 'ascii' codec can't decode byte 0xe8 in position 1: ordinal not in range(128) のようなエラーが発生してうまく実行できない。 なぜ glcou…

自分がよく利用するDockerのコンテナ(メモ)

CI/CDをする際によく利用する、GCPを利用するなら特に知っていたほうが良さそうなコンテナたちをメモ。 GoogleCloudPlatform/cloud-builders GitHub - GoogleCloudPlatform/cloud-builders: Supported builder images for Google Cloud Build この辺りが含ま…

GCP Update 2019/03/06

直近のGCPのアップデートはこんな感じ - BigQuery sandbox: beta - Kubernetes Engine – node auto-repair: GA - Kubernetes Engine – node auto-upgrades: GA - Compute Engine – guest attributes: beta - Kubernetes Engine – Application-layer Secrets …

GCP 2019/02/19 の UPDATE

UPDATEがあった項目は以下 Cloud Firestore: GA App Engine flexible environment – WebSockets support: beta Internal load balancer – service discovery: GA Private Google Access for on-premises hosts: GA Apigee Developer Portal – SmartDocs, acc…

CloudSQL へローカルから接続できない(という人のために)

GCP で MySQL や PostgreSQL のような RDB をマネージドで利用したい場合に CloudSQL を選択することが多いと思います。 ポチポチっと押せばすぐにインスタンスが出来上がるし、gcloud コマンドや、Cloud Shell を利用することで用意に接続ができるので、ふ…

GAE(Appengine)のハンドラの例にある `_ah` ってなに?

こんにちは。chidakiyo です。 皆さんappengine使ってますか? _ahはどういうサンプルに出てくる? appengineのサンプルで、 ハンドラのパスに _ah というパスが含まれていることがあると思います。 例えば、warmupするための こちら の例を見てみましょう。…

GCP 2018/12/17 の UPDATE

Cloud Security Command Center: beta セキュリティの脆弱性を探してくれるやーつ https://cloud.google.com/security-command-center/ Cloud Functions – per-function identities: beta 機能ごとにIAM設定できるので細かく設定できるとかなんとか https://…

Appengine (Node.js/Standard) 環境でHeadless Chromeを利用してサイトのスクリーンショットを取得する

過去に2回ほどGAE/Nodeの記事 これ と これ を書きましたが、もともとはこのHeadless ChromeをAppengine上で利用したかったのでそれを試したかったため。 Headless Chromeを利用することで、Webページのスクリーンショットだったり、JavaScriptが動いていな…

Building a Node.js App on App Engine なぞってみる

この記事は Building a Node.js App on App Engine をなぞってみた話です。 前回の記事 をふまえて、Node.jsのappを作成してGAEにdeployしようという記事です。 1. Creating a Google Cloud Platform project GCPにプロジェクトを作りましょう。 あと、appen…

Appengine Node.js Standard Environmentをデプロイしてみる(quickstart)

まず初回はquickstartに倣ってデプロイしてみるだけ。 ほぼ こちら のクイックスタートのままやってみようと思う。 事前に必要なもの(というかもう設定済みなので) GCPのアカウント作成(gmailアドレスあればすぐ) GCPのプロジェクト作成(適当にGCPコン…

Appengineで初回1回だけ実行したい(設定の初期化)ときはwarmupを利用する

Appengine (GAE) はリクエストのイベントでインスタンスが起動されるので、通常のアプリケーションを実装した際に初回1回だけ実行する処理というのが普通に実装するとなかなか難しい。 特にDB(Datastore)アクセスなどが必要な場合にはrequestが無いとappen…

BigQueryのStandardSQLで日付(date, datetime, timestamp)を変換する方法

BigQueryで日付周りの操作が意外とややこしかったりするので、普段使いそうな操作をまとめます。 日付を日本時間に変換する BQ内の日付データは世界中から利用することを想定し UTC で登録されているため、日本時間(JST)と比較すると9時間ずれます。 その…

Cloud Shell で Java (JDK) の1.8を利用する方法

Google Cloud Shellは標準で Java (JDK) 1.7が利用されるようになっている。 1.8を利用するにはインストールするしか無いのか、、と思ったけどどうやらalternativesで別バージョンに切り替えられそう。 1.8を利用する場合 sudo update-java-alternatives -s …

Google Appengine Flexible Environment のインスタンスリソースのデフォルト値

Google Appengine Flexible Environment のインスタンスリソースのデフォルト値を調べたので 項目 デフォルト値 備考 cpu 1 core 2~32の指定が出来る。 memory 0.6 GB アプリケーションから要求されるメモリの量であり、一部のプロセスのオーバーヘッドに必…

Google Cloud Datastoreの制約

- トランザクション内で使えるのはAncestorを指定したクエリだけ - 1つのトランザクション内でアクセスできるエンティティグループは25個まで - 1つのエンティティグループに対する更新は1秒1トランザクションまで そう、これこれ。 参考サイト mitomemel.ha…

GCE(Google Compute Engine)でAerospike環境を作る場合Cloud Launcherで作れる

まずは まずはというか、件名の通り。 メニューからCloud Launcherを選択し、Aerospikeを選択する。 あとはCompute Engine上で起動ボタンを押下。 求められる入力項目 デプロイ名 Zone Cluster node count Machine type Data disk type Data disk size その…