momota.txt

hello, hello, hello, how low?

Google Apps Script で LINE ボットを作る

Google Apps Script (GAS) は、Google が提供する JavaScript プラットフォームで、Google apps (Calendar, Docs, Drive, Gmail, Sheets, and Slides) に対して処理する JavaScript を簡単に書ける。

GAS から HTTP GETリクエストを出したり、受け付けたりできるので、この仕組みを使って、無料で LINE ボットをつくってみる。

LINE ボットは、LINE Messaging API を利用すると簡単に作ることが可能。

line bot diagram

出所: Messaging APIの概要 | LINE Developers

ねこの画像をランダムに表示する Slack Command

心の平穏のために、猫の画像をランダムに表示してくれる Slack command /neko を作った。

Slack で /neko と打つと、Cloud Functions にリクエストが飛び、Functions が TheCatAPI からランダムに猫画像 URL を取得するもの。

slack neko command

使ったもの 用途
Google Cloud Functions バックエンド
Python 3.7 Functionsの実装言語
Serverless framework 1.40.0 GCPへのデプロイ

Google Cloud Functions で Slack (Slash) Commands をつくる

Slack commands を Google Cloud Functions で実装する。

Slack commands は slack 上で /command arguments 形式で入力すると何かしらの応答を返す仕組み。/ から始まるのでSlack Slash command とも呼ばれるようだ。 詳細は公式 API ページを参照: Slash Commands | Slack

過去につくった Slack Bot が動かなくなったので、GCP を利用して作り直そうというのが背景。

クラウドへのデプロイについては serverless framework を利用した。

今回は、slack で /ping というコマンドを実行したら、pong と返すような slack command を作る。 できあがりは以下のような感じ。

slack command screenshot

[参加レポート]Google Cloud Kubernetes Day

  • 2019/03/26(火)、渋谷で行われた Google Cloud Kubernetes Day への参加レポート。
  • 会場の約半数が k8s をすでに利用、サービスメッシュは1割程度という感じで、プロダクション環境での採用をやっていかないとまずいという雰囲気だった。
  • ハッシュタグ: #gc_k8sday
  • 資料が公開されたらリンクを張ったりアップデートする予定。

Serverless Framework による AWS Lambda ローカル開発

serverless framework logo

Serverless Framework を使うことにより、FaaS (AWS Lambda, GCP Cloud Functions, Azure functions, など) の開発をローカルで実施できる。 ローカル環境で自分の好きなエディタ・IDEで開発やテストが可能になるし、デプロイも容易になる。

AWS には AWS SAM もあるが、他のクラウドプロバイダでも開発物やノウハウが使い回せることが期待できるので、3rd パーティ製の Serverless Framework を選ぶ。

本稿では、Serverless Framework の導入と、Hello Worldアプリ (AWS Lambda) のデプロイについて書く。

環境

1
2
3
4
5
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

Kong でアクセス制御

kong diagram

Kong を利用して、各 API に対して上記のようなアクセスを制御する。

  • Consumer aaa は API a に対してアクセスできる。しかし、API b にはアクセスできない。
  • Consumer bbb は API b に対してアクセスできる。しかし、API a にはアクセスできない。

Kong のプラグイン key-authacl により実装する。

各設定をまとめると以下。

ユーザ service route (kong path) api key consumer group
aaa aaa-api /aaa aaaaaaaaa aaa aaa-group
bbb bbb-api /bbb bbbbbbbbb bbb bbb-group