2018年5月18日金曜日

【AWS Lambda】関数作成2

株式会社ジェニシス 技術開発事業部の遠藤 太志郎(Tacy)です。

最近、AWSをフル活用して社内システムを作ったので、そのノウハウのご紹介を行っています。

現在はAWS Lambdaの使い方を紹介中です。

コンソール画面

前回からの続きでコンソール画面を見ていきたいと思います。

画面の上の方から行きます。



一番上に「アクション」とかボタンが並んでいますが、この辺りは作った関数をキックしたりする部分です。
これについては後続の記事で書きますので、次に進みます。

デザイナー

デザイナーは、Lambda関数を頂点に、それ以外のAWSサービスを紐づけるための機能です。

初期状態では以下二つがぶら下がっています。

  • Amazon CloudWatch Logs
  • Amazon DynamoDB


Amazon CloudWatch Logs

Amazon CloudWatch Logsは、Lambdaのログを出力するサービスです。

通常のシステムの場合、ログはログファイルに吐き出してローテーションするものですが、Lambdaのようなサーバレスのサービスの場合、無意識に使えるディスクスペースは基本ありません。
なので「ディスクスペースに吐き出す」みたいな簡単な処理に工夫が必要になってきます。

ディスクスペースの代わりにログを吐き出す先、それがAmazon CloudWatch Logsです。

イメージとしては、恐らくNoSQL型のDBにログを保存しているのだろうと思います。
そしてCloudWatchの画面でそれを参照する、というカラクリです。

CloudWatchの画面イメージはこちら。


CloudWatchにログを出力するための実装方法は後日の記事にします。

Amazon DynamoDB

Amazon DynamoDBは、アマゾン自慢のNoSQLです。

【AWS Lambda】帳票出力API開発 その2~RDBMSを使うな~

で書きましたとおり、Lambdaと通常のRDBMSの組み合わせは基本、無いです。
代わりにNoSQLを使用します。

Lambda最大の制約はココ、NoSQLを使うしか無いう点でしょう。

でも性能的には最強なんです。
最近、私はずっと「既存システムをNoSQLに置き換えることは出来ないか?」ということばかり考えています。

例えば、掲示板とかならイケるんですよ。

5ちゃんねる(旧2ちゃんねる)という掲示板がありますけど、あれってサーバ側にはテキストファイルが置いてあるだけでDBは使ってませんからね。

テキスト出力だけでやっている処理はNoSQLに置き換え可能です。

また、PukiWikiという有名なWikiツールがありますけど、あれもテキスト出力だけで実現しています。

LamdaとDynamoDBで実現するNoSQL・サーバレス型のWiki&掲示板というのは負荷の激烈増減というサービスの性質を考えると相性最強のはず。

何とかして自分で開発出来ないかと考えています。


トリガー

さて、最初からぶら下がっている二つは上記のとおりとして、気になるのは左側の「トリガー」です。

これは「何をキッカケとして、Lambda関数をキックするか?」ということを決定するための機能です。

例えば、


  • API Gateway:HTTPリクエストをトリガーとしてのキック


などですね。

以下のラインナップはあります。


  • API Gateway
  • AWS IoT
  • Alexa Skills Kit
  • Alexa Smart Home
  • CloudWatch Events
  • CloudWatch Logs
  • CodeCommit
  • Cognito Sync Trigger
  • DynamoDB
  • Kinesis
  • S3
  • SNS


すいません。
私が作ったシステムだと「API Gateway」か検証していなくて他は未検証なのですが、断片的に調査した情報だと以下の機能だと理解しています。

AWS IoT

AWS IoTというサービスと連動するもの。
例えば「目覚まし時計を叩いたら起動」とか、そういう用途が可能と思われます。

Alexa Skills Kit・Alexa Smart Home

噂のAI製品「Alexa」と連動するもの。

例えば「Alexa! 会議室は空いているか!?」とか話しかけると起動し、Lamdaの処理を経由して会議室予約システムとかと照合し、最終的には「C会議室が開いています」みたいな返事をするとか、
そういう用途が可能になると予想。

CloudWatch Events・CloudWatch Logs

ログ回り。
例えば「ログの中にFATAL」という文字が出現したらキックし、社員に緊急出勤させるような処理のためのもの。

CodeCommit

AWS CodeCommitというGitHubみたいなサービスがあるそうです。
プッシュ通知とか出せるのでしょう。

Cognito

Cognitoはシングルサインオンを管轄する機能です。
「ユーザがログインしたら起動」とか出来るものと予想。

DynamoDB

DynamoDBは上記のとおりのNoSQL。
テーブルの更新を察知することが出来ます。

RDBMSにも「トリガー」という機能がありますが、あれと似たような機能のようです。

Kinesis

Amazon Kinesis Data Streamsというストリーミング処理と連携。

例えば「動画の15分の所でCMを挟む」とかの用途と予想。

S3

S3はAWSの最初期からある伝統のディスクストレージ。

「特定フォルダにファイルがアップロードされたらキック」

SNS

SNS? FeceBookみたいな? と思ったら違いました

Amazon Simple Notification Serviceという、プッシュ通知を行ってくれるサービスがあるそうで。
プッシュ通知の中身をLambdaを使って構築しているのかな?



以上のとおり、沢山あります。

これらから分かるとおり、LambdaはAWS製品を使う上での基幹部分に位置する超重要サービスだと言えます。

AWSに関わっていくなら、Lambdaへの理解は必要不可欠と言って良いでしょう。


続く

引き続きLambdaの関数設定について調査していきます。

0 件のコメント:

コメントを投稿