momota.txt

hello, hello, hello, how low?

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

API アグリゲーション: Kong

kong-logo

Kong の概要

  • Kong は、オープンソースの API ゲートウェイソフトウェア
  • 低レイテンシー、スケーラブルなアーキテクチャ
  • フロントはNginx、バックエンド DB は PostgreSQL or Cassandra で構成される
  • 複数のマイクロサービス (API) をアグリゲーションし、以下のような機能を統合的に提供する
    • 認証
      • Basic 認証
      • API キー
      • OAuth2
      • JWT
      • HMAC
      • LDAP
    • セキュリティ
      • ACL
      • CORS
      • IP制限
      • ボット検出
      • SSL
    • トラフィック制御
      • レート制限
      • 応答速度制限
      • リクエストサイズ制限
    • 変換
      • リクエスト変換
      • レスポンス変換
      • Correlation ID
    • ロギング
      • TCP、UDP、HTTP、ファイル、Syslog、StatsD、Loggly
    • 分析
      • Datadog、Galileo、Runscope
    • ロードバランシング
    • サーキットブレーカー

最近はあまり流行っていないらしく、Web 上の記事が古かったので、使い方に関するメモ。といってもほぼチュートリアル通り。

古いなと感じたのは、たとえば、マイクロサービスの流行りを受けてか、api という概念が service に置き換えられている感じだった。

環境

  • Azure
  • Kong: 0.14.1

Windows + Chrome Headless Mode + Ruby + Selenium

Selenium と Ruby によりテストの自動化であったり、入力の自動化を進めている。 コマンドラインから実行すればよいことがほとんどで、ブラウザのGUIが起動しなくてもよい。 したがって、GUI が起動しない Google Chrome の Headless モードを使った Selenium スクリプトへ順次移行していこうと思う。

動作の軽量化もちょっとは期待できるかも。 (比較計測はしていない)

以下は、関連記事。

Google Apps Script でサーバレスな為替レート取得クローラをつくる

Google Apps Script (GAS) は、Google が提供する JavaScript プラットフォームで、Google apps (Calendar, Docs, Drive, Gmail, Sheets, and Slides) に対して処理する JavaScript を簡単に書ける。 Excel マクロのすごい版みたいな感覚。

このスクリプトからHTTP GETリクエストを出したり、受け付けたりできる。

今回は、この GAS を使って、無料の Web クローラをサーバレスでつくってみる。