2
Help us understand the problem. What are the problem?

posted at

updated at

AWS Lambdaの関数URL(Function URLs)のユースケースを真面目に考える

AWS Lambdaに新機能 Function URLs が追加されました。

簡単にいうとAPI Gatewayなしに、HTTPSでのリクエストを受け付けられるようになるものです。

API Gatewayなしで簡単になったよ!わーい!! ではなく、今までできなかった何ができるようになったのかを真面目に考えてみました。

Function URLsの認証

Function URLの認証はIAM認証あり認証なし(パブリックアクセス)の二通りがあります。

IAM認証が使える環境であれば、以前からCLISDKを使ってLambdaを直接呼び出すことができました。

AWSCLI
aws lambda invoke \
  --function-name <value> \
  <outfile>

また、cURLでもバージョン7.75.0から--aws-sigv4 というオプションが追加されており、IAM認証の情報があればCLIやSDKがなくてもhttpsアクセスでLambdaを呼び出すことができます。

curl \
 -XPOST \
 "https://lambda.ap-northeast-1.amazonaws.com/2015-03-31/functions/<function-name>/invocations" \
 -H "Content-Type: application/json" \
 -d '{ "key": "value" }'   \
 --aws-sigv4 "aws:amz:ap-northeast-1:lambda"   \
 --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}"

IAM認証が使える環境であればFunction URLsの登場以前からできることは変わらないということになります。
そのため、Function URLsの存在意義は 「API Gatewayなし」「認証なし」でLambdaを呼び出せるところ だと思います。

API Gatewayの仕様制限の回避

API Gatewayの最大の制限は30秒でタイムアウトだと思います。
これを回避するためにはSQSを介して非同期化するなどの対策が必要でした。

image.png

API Gatewayを介さずにLambdaを呼べるとこの制約がなくなり、 30秒以上かかる処理を同期 で返却できるということになります。

Function URLsのユースケース

以上のことから、Function URLsが活用できる場面は、 認証が不要で30秒以上処理に時間がかかり同期的に結果を返す必要がある ではないかと考えました。🤔🤔
ただ、具体的にどんな場面かが思いつきませんでした。😥😥

AWSのブログでは、API Gatewayの高度な機能を必要としないときという表現がされているため、もしかすると 不特定多数のアクセスがあるような場合のコスト削減 が主なメリットなのかもしれません。

最後にAWSブログで紹介されている具体的なユースケースと私なりの考察を記載して終わりにします。

ユースケース Function URLs利用のメリット
Webhookハンドラ 大量のアクセスあり
認証は独自
処理時間は短い
API Gatewayの利用料削減に期待
フォームバリデータ 大量のアクセスあり
認証なし
処理時間は極端に短い
API Gatewayの利用料削減に期待
モバイル決済処理 大量のアクセスあり
認証は独自
処理時間が30秒を超える可能性あり
30秒以上かかるとAPIはエラーを返却するが内部処理は成功するような不一致ケースが出てしまう。同期で正しくレスポンスを返却することに期待(もしかするとこのユースケースが最有力?)🤔🤔
広告掲載 大量のアクセスあり
認証なし
処理時間は極端に短い
API Gatewayの利用料削減に期待
機械学習による推論 アクセス頻度は低い
処理時間が30秒を超える可能性あり
処理に30秒以上かかる場合の動作改善に期待

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?