はじめに
AWS公式のハンズオンシリーズの中から、翻訳 Web API の構築を通して、サーバーレスアーキテクチャの基本を学ぶハンズオンを実施しました。
本記事は自身のハンズオン学習メモとして投稿します。
目次
ハンズオンの目的
- AWS Lambda, Amazon API Gateway, Amazon DynamoDB の基本を学ぶ
- 上記のサービスを組み合わせて、サーバーレスな Web API を作成する
翻訳 Web API の構築を通して、サーバーレスアーキテクチャの基本を学んでいただきます。サーバーレスアーキテクチャの特徴とその中核となる AWS サービスの概要をお伝えした上で、実際に手を動かしてその理解を深めることができます。主に取り扱う AWS サービスは AWS Lambda、Amazon API Gateway、Amazon DynamoDB の3つです。
(https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/ より引用)
本編
AWS Lambda ハンズオン① - AWS Lambda を単体で利用する
- Lambda Functionを作成
- IAMロールを自動生成し、付与
- メモリとタイムアウト値を変更
- テストを実行
- log取得のコードを追加
AWS Lambda ハンズオン② - AWS Lambda から他の AWS サービスを呼び出す
- Python SDK のドキュメントを⾒ながら、Amazon Translate の呼び出しを実装
- IAM ロールを修正
- レスポンスとして、JSON 形式で英語訳を返すようにする
- Lambda 関数をテスト実⾏
Amazon API Gateway ハンズオン① - Amazon API Gateway を単体で利用する
- Mock データを返す API を作成
- 新規に API を作成
- sample リソースを作成し、GETメソッドを作成
- 統合タイプとして Mock を選択(まだ Lambda 関数との連携は⾏わず、固定の JSON を返す)
- dev ステージにデプロイする
- API を試しに実⾏
Amazon API Gateway ハンズオン② - Amazon API Gateway と AWS Lambda を連携する
- ⼊⼒した⽇本語を英語に翻訳するAPIを作成
- /translate リソースを作成し、GET メソッドを作成
- 統合タイプとして Lambda 関数を選択
- プロキシ統合を設定し、Input / Output をパススルーする
- メソッドリクエストでクエリパラメータの設定
- Lambda 関数を修正
- Lambda 関数をテスト実⾏
- API をデプロイ
以下のようにクエリ部分にリクエストを入力し送信すると、翻訳結果が返却される。
Amazon DynamoDB ハンズオン① - Amazon DynamoDB テーブルを作成する
- DynamoDB のテーブルを作る
- Partition Key として timestamp を指定
- テーブル作成
- データを⼿動で入力
Amazon DynamoDB ハンズオン② - AWS Lambda から Amazon DynamoDB に Item を Put する
- 翻訳履歴を DynamoDB にストアするように修正
- Python SDK のドキュメントを⾒ながらDynamoDB にストアするように Lambda 関数を修正
- IAM ロール設定を修正
- API を叩いて確認
以下のように翻訳結果がdynamoDBに蓄積される。
作成した AWS リソースの削除
粛々と削除。特筆すべきことはなし。
おわりに
Lambda、API Gateway、DynamoDBを触った事がなかったので、いい経験になった。
今回初めてサーバレスアーキテクチャを体験したが、基盤レイヤーを考慮せずにアプリケーション部分のみに集中できるのはやはり便利だと感じた。
Lambdaで軽い処理を入れる、等は今後仕事でも使う機会が多いと思うので、実装に必要となるコーディングスキルも併せて身につけていかなければならないなと感じた。