最近、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 件のコメント:
コメントを投稿