はじめに
AWSのサーバーレスアーキテクチャの公式ハンズオンをやってみました。詳細な手順は以下のリンクをご確認ください。
このハンズオンは、大体30分~40分程度で完了します。
概要
使用したサービス:
- AWS Amplify
- AWS IAM
- Amazon API Gateway
- AWS Lambda
- Amazon DynamoDB
記事の目的
この記事の目的は、ハンズオンを通してサーバーレスアーキテクチャの基礎を理解し、各サービスの基本設定を学ぶことです。
※細かい手順等は記載していません。あくまでも全体的な流れのみです。
手順
フロントエンドの作成
AWS Amplifyというサービスを使用して、「Hello World」のみを表示するindex.htmlをデプロイします。Amplifyはフロントエンドの開発を簡単にしてくれるサービスで、今回初めて使用しましたが、作成したhtmlファイルを数クリックでデプロイできました。
関数の作成
次に、AWS Lambdaを使って関数を作成します。Lambdaは、AWSが提供するサーバーレスコンピューティングサービスで、プログラミングの関数やコードをAWSに保管し、サーバーを用意せずに関数をいつでも使用できます。
このステップでは、Pythonで名前と苗字をJSONで受け取り、レスポンスを返す関数を作成しています。このハンズオンでは、Python以外にもJavaScriptとJavaのサンプルコードが用意されています。
APIの作成
次に、Amazon API Gatewayを使ってAPIを作成します。API Gatewayは、先ほど作成したAmplifyのフロントエンドとLambda関数をつなげるためのサービスです。ここでは、APIを作成し、POSTメソッドを使ってLambdaに値を渡します。これでAPI Gatewayを使ってLambdaを呼び出すことができます。
データベースの作成
次に、Amazon DynamoDBを使ってデータベースを作成します。DynamoDBはNoSQL型のデータベースで、読み書きが高速であり、サーバーレスで自動的にスケーリングすることが特徴です。
ここでは、DynamoDBを作成し、先ほど作成したLambdaからアクセスできるようにIAMポリシーを作成してLambdaに割り当てます。LambdaにIAMポリシーが割り当てられたら、Lambdaのコードを書き換えてDynamoDBにデータを書き込みます。DynamoDBのコンソール画面からテストデータが登録されていれば成功です。
WebページからLambdaの呼び出し
最後に、これまで構築してきたものを連携させて、WebページからLambdaを呼び出し、DynamoDBにデータを登録します。
index.htmlを書き換えて、API Gatewayにリクエストを送るように設定します。この際、index.htmlにAPI Gatewayの呼び出しURLを記載する必要があります。ARNではないので注意してください。
Webページで入力した名前と苗字が画面上に表示されることを確認したら、マネジメントコンソールからDynamoDBを確認してみましょう。先ほど入力した名前が登録されているはずです。
クリーンアップ
ハンズオンが終わったら、構築した環境を削除して、課金が発生しないようにしましょう。
まとめ
サーバーレスのサービスは、自動的にスケーリングが行われ、管理する部分も少ないため、手軽に始められると感じました。次のステップとして、フロントエンドの静的ファイルをAmazon S3から配信したり、DynamoDBの代わりにAmazon RDSを使用してみるなど、様々なアプローチが可能です。このハンズオンを通じて、AWSのサーバーレスアーキテクチャの基本を理解し、各サービスの設定方法を学ぶことができました。