私が使ったAWSサービス
~サーバーレスアーキテクチャの
実装例~
マネージメントサービス株式会社
デジタルビジネスイノベーションセンター
風間玲央
始めに
今年の5月から入社3年目にして初めて、AWSを使ってプログラムを作るようになりました。
今までインフラや、ドキュメント作成の仕事をしてきたため、本格的なアプリ開発は初めてです。
今までに、以下のサービスを使いました。
2
以降、実際に作ったものと、AWSのサービスを紹介していきます。
AWS Lambda Amazon DynamoDB Amazon API
Gateway
Alexa skillAmazon Translate
作ったもの
3
Slack Bot
毎週月曜日~金曜日に天気予
報とRSSを配信しています。
以下の記事を参考にしました。
【Slack】自作執事botの紹介 - SST
エンジニアブログ
4
ユーザーとのやり取り
Slack Botのいるチャンネルで、メ
ンションをつけてメッセージを送
ると、応答します。
雑談、天気の確認、乗換案内・
ルート案内、知識の検索ができ
ます。
雑談はTalk APIというチャットボッ
ト用のAPIを、そのほかは
SUNABAという対話ボット開発環
境をAPIとして使っています。
5
ボタンを表示
メニューボタンも表示できます。
6
Slack Botその2(翻訳bot )
デフォルト設定では、入力された
言語を自動判定して日本語を英
語に、その他の対応言語(※)を
日本語に翻訳します 。
以下の記事を参考にしました。
Amazon Translateを使ってSlack
で翻訳コマンドを作成
※漢字のみだと区別できないた
め、中国語を除きます。
7
カスタム翻訳
メニューを表示して翻訳元言語
と翻訳先言語を切り替えることも
できます。
自動判定でないため、中国語も
翻訳できます。
8
Slack Bot の構成
9
AWS Lambda
Amazon DynamoDB
Amazon API
Gateway
Talk API/
SUNABA
雑談/タスクAPIの
情報を取得・更新
リクエスト
Slackで
メッセージ送信
リクエスト
Slack API
ボットから
メッセージ送信
リクエスト
レスポンス
リクエスト
レスポンス
翻訳botの構成
10
AWS Lambda
Amazon DynamoDB
Amazon API
Gateway
翻訳元/翻訳先言語の
設定情報を取得・更新
リクエスト
Slackで
メッセージ送信
リクエスト
ボットから
メッセージ送信
リクエスト
レスポンス
リクエスト
レスポンス
Amazon Translate
APIを切り替えることで、
様々な処理ができます。
Slack API
Alexa受付スキル
Alexaに社員番号を話しかけると、Googleスプレッ
ドシートを更新します。
以下の記事のスキルを基に作っています。
【Alexa】Connpass用の受付スキルを作ってみた
#Alexa #AlexaDevs
詳細は以下のリポジトリにまとめました。
https://github.com/forshoes-admin/Alexa-
reception
11
受付スキルの構成
12
Echo Alexa skill AWS Lambda(Alexa
skill内部で使用)
リクエスト
スキルの呼び出し
Google
スプレッ
ドシート
Google
Apps
Script
シートを編集
・値を取得
応答を送信Alexaが応答
ユーザーが発話
レスポンス
これまで紹介してきたプログラムの構成には、
共通点があります。
13
共通点は…サーバーレスアーキテクチャであること
常にサーバーを起動して待機するのではなく、「メッセージの送信」(Slack Botの場合)、「発
話」(Alexaスキルの場合)等をきっかけにプログラムが動きます1。
サーバーを直接使わないため、ネットワークの知識が必要なく、プログラムの呼び出しごとに
課金されるため、費用を抑えることができます1。
14
AWS Lambda
Amazon DynamoDBAmazon API
Gateway
AWS Lambdaの特徴2
コードを書いてアップロードするだけで、コードを実行可能!
サーバー構築・管理の必要なし!
コードが実行されるごとに、コードが呼び出された回数に対して課金!
動いていないときは料金が発生しない!
15
AWS Lambda
Amazon API Gatewayの特徴①
まず、APIとは:他のプログラムから呼び出して使えるプログラムのこと。
APIをWeb上で公開するためには通常、HTTPリクエストを受け付けるサーバーが必要です。
16
リクエスト
レスポンス
リクエスト
レスポンス
APIサーバー
Amazon API Gatewayの特徴②
Amazon API Gatewayは文字通り、APIの入り口。
サーバーレスでAPIを利用できる!
Slack Botでは、Slackのイベント(メッセージ送信・ボタンクリック等)があったら、API Gatewayに
リクエストが送信され、AWS Lambdaにリクエストを送信してコードを実行します。
17
Amazon API
Gateway
AWS Lambda
Slackで
メッセージ送信
リクエスト リクエスト
コードを実行
Amazon DynamoDBの特徴
サーバーレス!
データベース用のサーバーを構築・管理する必要なし!
ドキュメントデータベース(JSON形式のデータ(ドキュメント)をそのまま格納できるデータベース
3)⇒プログラムと連携しやすい。
18
Amazon DynamoDB
DBサーバー
DBを利用するプログラム
まとめ
サーバーレスアーキテクチャなら、サーバーを構築・管理する必要なし!
ソースコードの実行環境も、APIの実行環境も、データベースもサーバーレスなら簡単に実現で
きる!
⇒AWS Lambda、Amazon API Gateway、Amazon DynamoDBを利用
本格的なアプリ開発は初めての私でも、(ネットの記事を参考にして)アプリが開発できました。
19
参考記事等
1:サーバレスアーキテクチャとは何か?~AWS LambdaとAPI Gatewayによる簡単なAPIの実装を試す
(https://codezine.jp/article/detail/10332)
2:AWS Lambda(イベント発生時にコードを実行)(https://aws.amazon.com/jp/lambda/)
3:RDBエンジニアのための10分でわかるDocumentDB
(https://www.nttpc.co.jp/technology/documentdb.html)
AWSサービスのアイコンは、以下よりダウンロードしています。
AWS シンプルアイコン - AWS アーキテクチャーセンター
(https://aws.amazon.com/jp/architecture/icons/)
20

20190906_私が使ったAWSサービス