Pocket

エンジニアの久保です。
2022/4 に AWS Lambda の関数 URL(AWS Lambda FunctionURLs)がリリースされました。この機能を使うと、Lambda を使った WebAPI を作成する際に必要だった Amazon API Gateway が不要になります。
今回はこの関数 URL を AWS SAM(AWS Serverless Application Model)から利用してみました。

作業環境

AWS SAM CLI は次のバージョンを利用しています。

プロジェクトの作成

sam init でプロジェクトを作成します。
今回はおなじみの hello-world テンプレートを利用しています。

このとき作成される SAM のテンプレート template.yml は以下のようになっています。

関数 URL(Function URLs)を有効にする

それでは、関数 URLを 有効にしてみます。
template.yml の Resources → HelloWorldFunction のセクションに FunctionUrlConfig を追加します。

FunctionUrlConfig については、ドキュメントに詳細が書かれています。
今回は特に認証なしでアクセスできるようにしたいので、 AuthType: NONE を設定しています。

また、作成された関数URLを確認できるように、Outputsのセクションで以下のように HelloWorldFunctionUrl を追記します。

デプロイして動作確認

それではデプロイして動作を確認してみましょう。

まずはビルドします。

続いてデプロイします。

デプロイが完了するとデプロイされたスタックが表示されます。

動作確認

それでは実際に動かしてみます。

API Gateway のエンドポイント

hello-world テンプレート に最初から含まれている API Gateway のエンドポイントに接続してみます。

関数 URL(Function URLs)のエンドポイント

次に、今回追加した関数 URL のエンドポイントに接続してみます。

API Gateway のエンドポイントと同様に動作しました!

今回の template.yml の最終結果

参考までに、今回利用した SAM テンプレート template.yml の最終結果を以下に記載します。

まとめ

今回は AWS Lambda の関数 URL(AWS Lambda Function URLs)を AWS SAM から利用する方法を紹介しました。

現在社内で進行しているプロジェクトでは関数 URL を積極的に利用しています。
先述の通り、従来の API Gateway + Lambda で構成される WebAPI の場合、Lambda 関数 URL を使った構成へ変更することで API Gateway が不要になります。
弊社の場合、Lambda 関数 URL を利用することで月に $30 ほど節約できるケースがありました。

API Gateway で提供される機能を必要としていない場合は、関数 URL の利用を検討してみてはいかがでしょうか。

Pocket

Join Us !

ウエディングパークでは、一緒に働く仲間を募集しています!
ご興味ある方は、お気軽にお問合せください(カジュアル面談から可)

採用情報を見る