AWS_lambdaの関数URLってなに?
lambdaで作成したスクリプトをhttpsのAPIで、内部又は外部に簡単に公開できる機能です。
2022年4月にリリースされた比較的新しい機能です。
作成済みのlambdaにも利用できます。
従来のlambda
この機能のリリース前は、lambdaで提供したい機能をapi呼び出しで使うには、ApiGatewayとlambdaをセットで作らないといけませんでした。
ApiGatewayの設定項目は、そこそこ量も多く、一見してよくわからず、とにかくApiを作って利用したい方は、最小権限の原則を無視してすべてのhttpメソッドを許可してしまうなど、セキュリティ面で「もやっ」とする利用が行われていたとか、いないとか。
単純にapiを公開して、webhookを作成した方には、この関数URLはおすすめです。
作成してみた
設定->関数URL->作成と進みます。
既にURLが作成されている画面ですが、初めて作成する際は以下の画面になります。
認証タイプにNoneを選択するとエンドポイントはパブリックになり、URLを知っている人は誰でも利用できるようになります。
ひとまず、Noneで進めます。
CORS設定もできますが、今は設定せず進みましょう。
動作確認
import os
def lambda_handler(event, context):
return {
'statusCode': 200,
'body': 'Hello world.'
}
hello worldを返すだけのスニペットですが、本当にエンドポイントは動くでしょうか
$ curl https://c6akyxxxxxxxxxxxxxx.lambda-url.ap-northeast-1.on.aws/ -i
HTTP/1.1 200 OK
Date: Tue, 22 Jul 2025 07:41:44 GMT
Content-Type: application/json
Content-Length: 12
Connection: keep-alive
x-amzn-RequestId: d0e8c246-502b-4632-bf1b-xxxxxxxxxxx
X-Amzn-Trace-Id: Root=1-xxxxxxx;Parent=xxxxx;Sampled=0;
Hello world.
大丈夫そうです。
補足説明
関数の引数であるeventはどのようなデータ構造なのでしょうか。
実際にeventを覗いてと、httpRequestのデータ構造とほぼ同じでした。(当然ですね..)
- headers
- body
- requestContext
- httpMethod
などのキーが含まれていました。
これらのデータを使ってlambda関数内部で処理を記述できます。
POSTメソッドも処理できるので、APIクライアントからデータをもらって処理も当然できます。
まとめ
関数URLを作成し、シンプルなエンドポイントをlambda作成と併せて公開できました。
APIGatewayの作成過程をスキップできるので、lambdaの活用幅が増えそうです。
基本的には、webhook用のシンプルなエンドポイント向けの用途が適しているようです。
今回書いてないことのメモ
関数URL vs APIGateway
AWS APIGatewayを使うべきケースはどんなとき?
CORS設定も適用可能
IAM認証も適用可能
cdkやsamによる作成も可能(後日、書き方を追記します)
参考記事
公式ドキュメントは以下です。

