AWS Lambdaでのサーバーレスの始め方
ここからは実際にサーバーレス技術に触れてみましょう。今回はAWSのLambdaを使用して、デプロイができるまでの導入部分を解説します。
LambdaにはServerless Frameworkというツールがあります。これは環境変数の設定やヘッダー認証、API Gatewayなど、さまざまな設定が可能な便利なツールです。今回はこれを利用してデプロイを行います。
1. Node.jsのインストール
まず、Serverless FrameworkはNode.jsで動作するため、公式サイトからNode.jsをインストールします。
2. Serverless Frameworkのインストール
続いて、以下のコマンドを実行してServerless Frameworkをインストールします。
npm install -g serverless
3. IAMユーザーの作成
Lambdaをデプロイするためには、AWSマネジメントコンソール上からIAMユーザーを作成します。これはデプロイを行うアカウントの役割を果たします。もしまだAWSのアカウントがない場合は、作成してからコンソールにログインしてください。
IAMサービス画面へ移動し、画面左側からアクセス管理のユーザーページを開き、ユーザーの作成を行います。
ユーザー名を設定したら、デプロイに必要な権限をIAMユーザーに付与するためのポリシーを設定します。AdministratorAccess権限を付与しても問題ありませんが、それに抵抗感がある方は公式ドキュメントに記載されている最小限のポリシーに従って設定しましょう。
4. 認証情報の登録
IAMユーザーの作成後、作成したユーザーの設定ページに移動し、概要欄からアクセスキーを作成します。ユースケースはコマンドラインインターフェイスを選択します。作成が完了すると、アクセスキーとシークレットアクセスキーが表示されます。これら2つのキーを使用して、ローカル環境からIAMユーザーを利用できるように認証情報を登録します。デプロイを行うローカルマシン上で、以下のコマンドを実行します。
serverless config credentials --provider aws --key {アクセスキー} --secret {シークレットアクセスキー} --profile {HOGEHOGE}
--profileは今回登録する認証情報の名前です。わかりやすい名前をつけておきましょう。このprofileを指定して、開発環境や本番環境などへのデプロイも可能です。
5. プロジェクトの作成
次に、以下のコマンドを実行してプロジェクトの雛形を作成します。
sls create -t aws-nodejs
-tオプションでテンプレートの種類を選べます。必要に応じてaws-pythonなど他の言語を選択してください。
このコマンドを実行すると、handler.jsとserverless.ymlの2ファイルが作成されます。serverless.ymlファイルはサーバーレスの各種環境設定を行うもので、この中でAPI GatewayやIAMの設定、トリガーや認証周りなどさまざまな設定が可能です。
API GatewayはLambda関数をHTTPトリガーで叩くために必要なサービスです。単純な構成であればLambda関数のみでもHTTPトリガーを設定できますが、API Gatewayを使用することでより柔軟な実装が可能です。
sls createで作成した雛形は最低限の記述で動作しますが、ここではAPI Gatewayの設定も追加してみます。以下のようにserverless.ymlを編集します。
functions:
hello:
handler: handler.hello
events:
- http:
path: /
method: GET
functions:以下はLambda関数に関する設定を行います。events:以下はHTTPトリガーの設定で、この設定がAPI Gatewayに反映され、Lambdaと連携します。
6. デプロイ
ここまで来たら、いよいよデプロイをしてみましょう。以下のコマンドを実行します。
sls deploy
これを実行するだけで、serverless.ymlに記載された情報に基づき、Lambdaとその周辺環境がデプロイされます。以上でLambdaを利用した開発のための環境が整いました。あとはLambda関数の実装を行えば、サーバーレス環境で動作するシステムが完成します。
まとめ
今回の記事では、AIシステム開発を迅速に始めるための便利なサーバーレス技術について解説しました。ここで紹介したサーバーレス技術は、AIシステム開発だけでなく、他のさまざまな開発にも度々用いられるものとなっていますので、ぜひ活用してみてください。
次回の記事では、AWS Lambda、Serverless Framework、およびAWS SagemakerのServerless Inferenceといったサービスを活用しながら、弊社が実際に開発した「車ナンバー隠しBOT」というLINE BOTの実装について紹介します。
