Google Cloud Platform - Start up

Page content

GCP 初めて勉強した時の記録

Google Cloud Platform - Start up

ドキュメンテーションに注意

チュートリアル1つやるだけなのにドキュメンテーションが行けていない事例に何度も遭遇したので、注意が必要。書いてあるサンプルコードのとおりにやっても動かないことあるのでちゃんと理解しながら調べ、試し、進めていく必要がある。ちょっと学習ハードル高く感じてしまう。

具体的な事例:

  • SendGrid チュートリアル のコードが BigQuery を操作するが、クライアントライブラリのメソッドが古くて動かない

      .then(([table]) => {
        const fileObj = storage.bucket(file.bucket).file(file.name);
        console.log(`Starting job for ${file.name}`);
        const metadata = {
          autodetect: true,
          sourceFormat: 'NEWLINE_DELIMITED_JSON',
        };
    -   return table.import(fileObj, metadata);
    +   return table.load(fileObj, metadata);
      })
    - .then(([job]) => job.resolve())
    + .then(([job]) => job)
      .then(() => console.log(`Job complete for ${file.name}`))
      .catch(err => {
        console.log(`Job failed for ${file.name}`);
        return Promise.reject(err);
      });
    
    • 参考に 指摘ログ (本当に雑にプルリク送ってしまったので良くない提案の仕方をしてしまった…怒られないかな)
    • 気づいた経緯:
  • Cloud Functions ローカル エミュレータ

    • 日本語: α版提供中 –> 「お、 sls offlineのようにローカルで動かせるようだ。 node.js エミュレータって名前になっているけど他のランタイムはどうなのかな〜」
    • 英語: the emulator is deprecated てなってるじゃねぇか、危ない危ない。
      • 代替機能が functions-framework ってやつらしい。 gcf, local env, cloud run, cloud run on GKE, knative-based env などで動くそうだ。これは後でためそう。
  • そもそも gcf (functions) 自体の概要のページも、日本語はまだ「ベータ版です」と言いやがる。 English は「ベータ版です」みたいな注意書きはちゃんと消えている。

後でためそう

  • テストと CI/CD ページは色々と示唆に富んでいて(・∀・)イイ!!

    • 単体テスト
    • 統合テスト
    • システムテスト それぞれについて特徴と使うツールの例が載っている。単体テストのためのSinonの利用、とか、真面目に検討したい。
  • json lines 形式を初めて知る。 http://jsonlines.org/examples/ 便利かもしれないがちょっとキモい気もする

SendGrid チュートリアルで苦戦した記録

チュートリアル通りで動かなかったおかげで色々勉強になった。

  • BigQuery のクエリを発行して操作してみる: 公式の「標準 SQL クエリ リファレンス」 を読んでやっていく。

    • ベーシックなSQLが普通に動く:
      SELECT *, TIMESTAMP_SECONDS(timestamp) AS time FROM `serverless-mta.serverless_mta_dataset.events` ORDER BY time DESC LIMIT 100
      
  • Cloud Storage から BigQuery のテーブルにデータを移植する関数 (sendgridLoad) がエラーを吐くので、勉強モード

  • Cloud Storage からの JSON データの読み込み というページから Webコンソールでの操作を学んだ。

    • 全jsonをインポートする時の json の指定の仕方に工夫が必要 (このページのその場には説明無し) で、ワイルドカードを使うのとprefixが必要だった: gs://serverless-mta-bucket/*.json
  • Cloud Storage –> BigQuery を Node.js で実装するサンプルコードは同じ入門ガイド内で「タブ」(イメージは以下スクショ)を切り替えれば参照できた!これでチュートリアルコードの誤りに気づけた。 sample-nodejs

課題

このチュートリアル記事、試しのメール送信コマンドが curl 何だけど、 query param に平気で sendgrid api key を直接指定するようになっているので、この辺は使うにあたってカスタマイズしていこう。