AWS Lambdaは、Amazonが提供するサーバーレスコンピューティングサービスとして、同社のAPI Gatewayに連携すると、サーバーレスAPIを実現できます。本文では、便利なAPI管理ツールを利用して、AWS Lambda関数(エンドポイント)を呼び出す方法を皆さんに紹介します。
AWS Lambdaとは
AWS Lambdaは、Amazonが提供するサーバーレスコンピューティングサービスです。以下の特徴があります。
- サーバーのプロビジョニングや管理が不要
Lambdaはコードを実行するコンピューティングリソースをAWSが自動でプロビジョニングし、管理します。 - イベントドリブン
HTTPリクエストや、Amazon S3、DynamoDBなどのAWSサービスからのイベントをトリガーとしてコードを実行できます。 - 自動スケーリング
リクエストに応じて自動的にスケーリングされ、リソースの最適化ができます。使用したリソース分だけ課金されます。 - 複数の言語をサポート
Node.js、Python、Java、Go、C#、Ruby、PowerShell などの言語でコードを記述できます。 - 他のAWSサービスと統合
Amazon API Gateway、Amazon SNSなど、他のAWSサービスとの連携が容易です。
サーバー管理の手間がなく、自動スケーリングされるため、マイクロサービスや短期間で集中するバッチ処理など、さまざまなユースケースがあります。イベントドリブン型のアプリケーションの実装に適しています。
AWS LambdaとサーバーレスAPI
AWS LambdaとAmazon API Gatewayを組み合わせることで、サーバーレスAPIを構築できます。具体的な手順は以下の通りです。
AWS Lambdaでコード実装
API用の処理ロジックをNode.js, Python, Java等でLambda関数としてコード実装します。
Amazon API Gatewayの設定
API Gatewayでは、HTTPリクエストを受け付けるためのRESTful APIを定義します。
- リソース(エンドポイント)とHTTPメソッド(GET, POST, PUT等)を設定
- リクエストの受け渡し先となるLambda関数を統合設定
Lambda関数とAPI Gatewayの統合設定
API GatewayからLambda関数を呼び出すための設定を行います。
- Lambda関数へ渡すペイロードやヘッダー情報のマッピング
- Lambda関数の実行ロールの割り当て
HTTPS/認証の設定
必要に応じてHTTPS化や認証機能(API Key, IAM認証等)を設定します。
デプロイとステージの作成
デプロイしたAPIリソースに対してステージを設定し、公開します。
このようにAPI GatewayがAPIリクエストを受け付け、それをLambda関数に振り分けて実行する流れになります。
サーバーレスAPIについて
ということで、サーバーレスAPIとは、従来の専用サーバーやコンテナではなく、クラウドのサーバーレスアーキテクチャ上で構築されるAPIのことを指します。サーバーレスAPIの主な特徴は以下の通りです。
- マネージドサービスの活用
AWS Lambda、Azure Functions、Google Cloud Functionsなどのサーバーレス実行環境で、APIロジックを関数としてデプロイします。 - サーバーレス・フロントエンド
API Gatewayなどを使い、HTTP(S)リクエストを受け付けるエンドポイントを提供します。 - イベントドリブン
HTTPリクエストをトリガーとして関数を実行します。 - 自動スケーリング
リクエスト量に応じて自動的にスケーリングされるため、大量アクセスにも耐えられます。 - サーバーレス・バックエンド
データベースへのアクセスなどの処理はサーバーレスリソースで実施します。 - 従量課金
実際に使用したリソース分だけ課金されるため、コストを最適化できます。
サーバーレスAPIは、従来の仮想マシンやコンテナベースのAPIと比べて、自動スケーリングでオーバープロビジョニングを回避でき、サーバー管理の手間がありません。また、マイクロサービスアーキテクチャにも適しています。サーバーレスAPIのメリットといえば、次のようなものがあります。
- サーバー管理が不要で手軽にAPI構築可能
- 自動スケーリングで大量リクエストにも柔軟に対応
- コードの変更は即時反映が可能
- 従量課金制のため、コストの最適化が期待できる
ただし、コードスタートの課題や、VPC内リソースアクセスの制限など、注意が必要な点もあります。
Apidogで便利にAWS Lambda関数(エンドポイント)を呼び出す
AWS Lambda関数(エンドポイント)を呼び出すために、Apidogという便利なAPI管理ツールを使って行うことができます。
Apidogを使って、AWS LambdaのFunction URLを呼び出す場合、以下の手順を実行します。
ステップ⒈Apidogで新しいリクエストを作成して、HTTPメソッド(GET、POST、PUT、DELETEなど)を選択します。
ステップ⒉URLに、LambdaのFunction URLを入力します。
例: https://abcdefg.lambda-url.us-east-1.on.aws/
ステップ⒊パラメータを追加する場合は、パラメータタブで追加します。
クエリパラメータの例: ?message=HelloWorld
ステップ⒋認証タイプがAWS_IAM
の場合は、Apidogのリクエスト送信画面で、「Auth」タブに切り替え、認証タイプをAWS Signature
に指定し、アクセスキー(Access Key)とシークレットキー(Secret Key)を入力します。

ステップ⒌リクエストボディが必要な場合(POSTなど): Body
タブを選択し、適切な形式(form-data/JSON等)を選択した上、データを入力すれば良いのです。
JSONデータの記載例: { "example": "test" }

ステップ⒍「送信」ボタンを押して、リクエストを送信します。
ご案内:認証タイプがNONE
の場合は、ステップ5をスキップできます。
Apidogは、AWS LambdaのFunction URLへの簡単なリクエストだけでなく、さまざまなHTTPメソッド、ヘッダー、ボディなどを設定できる柔軟性があります。AWS Signature認証もApidog上で設定可能です。
まとめ
本記事では、AWS Lambdaの関数(エンドポイント)の呼び出し方法を取り上げて解説しました。
API管理ツールのApidogを使えば、AWS LambdaのFunction URLを簡単に呼び出すことができます。Apidogでは、AWS Signature認証に完璧に互換し、様々なHTTPメソッド、URL、パラメータ、やリクエストボディなどを柔軟に設定できるため、さまざまなユースケースに対応可能です。
サーバーレスアーキテクチャの活用は、クラウドネイティブなアプリケーション開発の潮流となっています。AWS LambdaとAPI Gatewayを使ったサーバーレスAPIは、その一つの有力な選択肢となるでしょう。Apidogなどの便利なツールを活用することで、APIの呼び出しや管理がよりスムーズになると期待できます。