Help us understand the problem. What is going on with this article?

AWSハンズオン実践メモ 〜サーバーレスアーキテクチャで翻訳 Web API を構築する〜

はじめに

AWS公式のハンズオンシリーズの中から、翻訳 Web API の構築を通して、サーバーレスアーキテクチャの基本を学ぶハンズオンを実施しました。

本記事は自身のハンズオン学習メモとして投稿します。

目次

ハンズオンの目的

  • AWS Lambda, Amazon API Gateway, Amazon DynamoDB の基本を学ぶ
  • 上記のサービスを組み合わせて、サーバーレスな Web API を作成する

翻訳 Web API の構築を通して、サーバーレスアーキテクチャの基本を学んでいただきます。サーバーレスアーキテクチャの特徴とその中核となる AWS サービスの概要をお伝えした上で、実際に手を動かしてその理解を深めることができます。主に取り扱う AWS サービスは AWS Lambda、Amazon API Gateway、Amazon DynamoDB の3つです。

20200706.png
(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 をデプロイ

以下のようにクエリ部分にリクエストを入力し送信すると、翻訳結果が返却される。

20200714_translate.png

Amazon DynamoDB ハンズオン① - Amazon DynamoDB テーブルを作成する

  • DynamoDB のテーブルを作る
    • Partition Key として timestamp を指定
    • テーブル作成
    • データを⼿動で入力

Amazon DynamoDB ハンズオン② - AWS Lambda から Amazon DynamoDB に Item を Put する

  • 翻訳履歴を DynamoDB にストアするように修正
    • Python SDK のドキュメントを⾒ながらDynamoDB にストアするように Lambda 関数を修正
    • IAM ロール設定を修正
    • API を叩いて確認

以下のように翻訳結果がdynamoDBに蓄積される。

20200714_dynamodb.png

作成した AWS リソースの削除

粛々と削除。特筆すべきことはなし。

おわりに

Lambda、API Gateway、DynamoDBを触った事がなかったので、いい経験になった。

今回初めてサーバレスアーキテクチャを体験したが、基盤レイヤーを考慮せずにアプリケーション部分のみに集中できるのはやはり便利だと感じた。

Lambdaで軽い処理を入れる、等は今後仕事でも使う機会が多いと思うので、実装に必要となるコーディングスキルも併せて身につけていかなければならないなと感じた。

kuwadev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away