タグ: GCP

  • GASのJDBCからMySQL8に接続できるようになった

    約一年ぶりに、GASと、Google CloudのCloud SQLの環境を作った。昨年はできなかったGASから、JDBCを介してのMySQL8への接続を試してみたところ、接続できることがわかった。

    下図は、GASからMySQL8に接続して、バージョン情報を取得しているところ。

    これでMySQLのバージョンを気にすることなく、GASから接続する環境を作れる。

  • 2021年12月の時点でも、GASのJDBCからMySQL8.0に接続できない。

    昨年、Google App Scriptから、JDBC経由で、Google CloudのCloud SQL のMySQL 8.0のインスタンスに接続を試して、失敗した。JDBCがMySQL 8.0  に対応しておらず、接続エラーになるというものだった。

    あれから1年がたち、もう一度、試してみたが、Google App ScriptからJDBCを使って、MySQL 8.0のインスタンスに接続することはできなかった。まだ、MySQL 5.7のインスタンスまでしか対応していない。

    MySQL 5.7 のインスタンスには、GASから正常にアクセスできていることも、ついでに確認した。

  • 急にGoogle Cloudが課金されていてビックリした話

    7月の後半から、Google Cloud上で作ったウェブアプリのプロジェクトで課金されていた。もともと無料枠を使っていたので、課金されるはずは・・・ない、と思っていた。実際、今までは課金されていなかった。

    原因を調べたところ、2021年7月24日で、Google App Engineの無料枠に制限するリミット機能が廃止されたようである。これの影響で、1日あたりの無料枠を超えても、エラーにならず課金されていた。

    https://cloud.google.com/appengine/docs/deprecations?hl=ja

    なんというか無料枠でできることだけ、と思っていたら、利用量が増えると課金されるようになったので、非常に使いにくい。性能とかよりも、料金優先の運用を行いたかったのだが。

    いろいろと原因というか課金されていたプロジェクトを調べていたところ、課金されているプロジェクトは、現在使われておらず、かつ紛らわしいプロジェクト名で生きているプロジェクトのように見えていた。AppEngineのインスタンスを起動させ続けるために、定期的にCronでセッションを維持しており、誰もつかっていないのに、使われているかのようにAppEngineのインスタンスが継続されていた。これにより、無料枠を超えていた模様。無料枠の上限がなくなったため、課金されて気が付いた、というわけだ。

    参考: https://www.serversus.work/topics/cn8fierxx2rm2skcxjfm/

    今回の無料枠の上限撤廃を契機に、Google Cloud上にある使っていないプロジェクトは整理してシャットダウンしておいたほうがよい。

  • GASからJDBCでCloud SQLに接続しようとすると接続が確立できない

    GAS(Google Apps Script)から、Cloud SQLに接続をJDBCから行ったのだが、下記のエラーが出て接続できない。

    Exception: データベース接続を確立できませんでした。接続文字列、ユーザー名、パスワードを確認してください。

    接続先の環境は、Cloud SQL(Google Cloud Platform SQL)上で新しく作ったインスタンスで、第2世代で、MySQL8.0のインスタンス。

    GASのソースコードとしては、下記。

    function dbConn() {
      var dbConnectName = "プロジェクト名:us-central1:インスタンス名"; // GCP上で表示される接続名
      var user = "ユーザ名";
      var password = "パスワード";
      var dbName = "DB名";
      
      var conURL = "jdbc:google:mysql://" + dbConnectName + "/" + dbName;
      Logger.log(conURL);
      
      var dbCon = Jdbc.getCloudSqlConnection(conURL, user, password);
      Logger.log(dbCon.getCatalog());
      
      return dbCon;
    }

    いろいろと調べて、JDBCの`Jdbc.getConnection`でも試したが、接続できず。

    原因として、わかったことは、GASから呼び出されるJDBCは、MySQL8.0へのインスタンスへの接続に対応していないということ。MySQL5.7で新しくインスタンスを作り直して、`Jdbc.getCloudSqlConnection`を行ったところ、あっさりと接続できた。

    まさか、JDBCが対応していないとは。

  • Google Cloud SQLでネットワーク接続制限を解除する

    Google Cloud SQLで、接続元のIPアドレスを固定できず、どこからでも接続できる設定にする。基本的にセキュリティがゆるゆるになるので、開発のときか、確認のための一時的な設定にした方がよい。

    1. GCPの管理画面で、Cloud SQLを開く。
    2. サイドメニュから「接続」を選択する。
    3. 接続の「パブリックIP」にチェックを入れる(もしくは入っていることを確認する)。
    4. 「+ネットワークを追加」をクリックする
    5. ネットワークに「0.0.0.0/0」を指定して、完了をクリックする。
    6. 次に「保存」をクリックする(保存しないとネットワークに反映されない)。

    これで、外部からCloud SQLのDBに接続できるようになる。

  • オンプレのVMwareも移動の幅が広がりそうだ

    Google Cloud、VMware実行環境提供のCloudSimpleを買収https://www.itmedia.co.jp/news/articles/1911/19/news074.html

    ネットワーク設計さえ、ちゃんとやればオンプレのVMwareの仮想マシンは、GCPでもAzureでも、AWS(は専用環境が用意されてる)でも、簡単にV2Vというか移動ができるようになると。意外と、VMware形式でVMを作っておけば、大手クラウド間を移動できる世界になりそうだな。VMwareの狙いは、そこなんだろうけど、実現しつつあるのが面白い。

  • G SuiteでGoogle Cloud Platformを使う設定、使わせない設定

    G Suiteのユーザで、Google Cloud Platformを使う設定、および使わせない設定を行うには、G Suiteの管理画面で、「Google Cloud Platform」のサービスをオン/オフする。

    1. G Suiteの管理者で、G Suiteの管理画面にログインする。
    2. 「アプリ」を選択する。
    3. 「その他のGoogleサービス」を選択する。
    4. 「Google Cloud Platform」を選択する。
    5. 組織単位、または全体で、サービスのオン/オフを行う。
  • Cloud ShellからCloudSQLに接続で403エラーになる

    GCP(Google Cloud Platform)で、Cloud Shellから、Cloud SQLに接続しようとすると、403エラーになり、接続できない。GCPでプロジェクトを共有しているユーザごとに、エラーになるユーザと、正常に接続できるユーザがいる(ので、Cloud SQLのサービスの問題ではない)。原因は、CGPのIAMの設定の不備。

    接続がエラーのとき

    zen@cloudshell:~ (devPJ)$ gcloud sql connect devDB --user=conusr
    ERROR: (gcloud.sql.connect) HTTPError 403: The client is not authorized to make this request.
    zen@cloudshell:~ (devPJ)$
    

    接続に成功するとき(MySQLのユーザ認証は別)

    zen@cloudshell:~ (devPJ)$ gcloud sql connect devDB --user=conusr
    Whitelisting your IP for incoming connection for 5 minutes...⠼     
    

    対処

    Clolud Shellから、Cloud SQLに接続するには、GCPのIAMで、「Cloud SQL 編集者」の権限をつける必要がある。閲覧者だと、Cloud Shellからは接続できず、403エラーが発生する。