2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS_lambdaの関数URLについて

Posted at

AWS_lambdaの関数URLってなに?

lambdaで作成したスクリプトをhttpsのAPIで、内部又は外部に簡単に公開できる機能です。
2022年4月にリリースされた比較的新しい機能です。
作成済みのlambdaにも利用できます。

従来のlambda

この機能のリリース前は、lambdaで提供したい機能をapi呼び出しで使うには、ApiGatewayとlambdaをセットで作らないといけませんでした。

ApiGatewayの設定項目は、そこそこ量も多く、一見してよくわからず、とにかくApiを作って利用したい方は、最小権限の原則を無視してすべてのhttpメソッドを許可してしまうなど、セキュリティ面で「もやっ」とする利用が行われていたとか、いないとか。

単純にapiを公開して、webhookを作成した方には、この関数URLはおすすめです。

作成してみた

設定->関数URL->作成と進みます。

func_url_photo.png

既にURLが作成されている画面ですが、初めて作成する際は以下の画面になります。

関数URL作成画面.png

認証タイプにNoneを選択するとエンドポイントはパブリックになり、URLを知っている人は誰でも利用できるようになります。

ひとまず、Noneで進めます。
CORS設定もできますが、今は設定せず進みましょう。

動作確認

hello_world.py
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による作成も可能(後日、書き方を追記します)

参考記事

公式ドキュメントは以下です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?