いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「API Gatewayを使わずにLambdaをHTTPで呼び出したい」とお悩みではありませんか?
Lambda関数を手軽にWeb APIとして公開したい方へ。
Lambda Function URLsを使えば、追加のサービスなしでLambdaに専用のHTTPSエンドポイントを割り当てられます。



API Gatewayの設定が要らないぶん、かなりシンプルです。
ということで、本記事ではLambda Function URLsでHTTPエンドポイントを公開する方法を解説します。



すぐ読み終わるので、ぜひ最後まで読んでくださいませ。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【AWS】Lambda Function URLsでHTTPエンドポイントを公開する方法
早速ですが、Lambda Function URLsでHTTPエンドポイントを公開する手順を解説します。
Lambda Function URLsとは
Lambda Function URLsは、Lambda関数に固定のHTTPSエンドポイントを割り当てる機能です。
エンドポイントはhttps://<url-id>.lambda-url.<region>.on.aws という形式で発行されます。
API GatewayやApplication Load Balancerを挟まずに、Lambda関数を直接HTTPで呼び出せます。
認証方式はIAM認証(AWS_IAM)と認証なし(NONE)の2種類から選べます。
単一の関数で完結する小規模なAPIやWebhookの受け口に向いています。



複雑なルーティングや使用量プランが必要なら、API Gatewayを選ぶほうが無難です。
事前に用意するもの
実行ロールを付与したLambda関数を1つ用意します。
ランタイムはPython 3.13を例にします。
AWS CLIを使う場合は、認証情報を設定済みのプロファイルが必要です。
Function URLを作成する
Function URLを作成する方法を、マネジメントコンソール・AWS CLI・boto3の順に解説します。
Lambda関数の画面を開き、「設定」タブの「関数URL」から「関数URLを作成」を選びます。
認証タイプでNONE を選ぶと、誰でもアクセスできる公開エンドポイントになります。
「CORSを設定」にチェックを入れると、ブラウザからの呼び出しに必要なヘッダーをLambda側で付与できます。
コマンドラインからは create-function-url-config で作成します。
aws lambda create-function-url-config \
--function-name my-http-func \
--auth-type NONE \
--cors '{"AllowOrigins":["*"],"AllowMethods":["GET","POST"],"AllowHeaders":["content-type"]}'認証タイプをNONE にした場合は、呼び出しを許可するリソースベースポリシーの追加も必要です。
aws lambda add-permission \
--function-name my-http-func \
--statement-id FunctionURLAllowPublicAccess \
--action lambda:InvokeFunctionUrl \
--principal "*" \
--function-url-auth-type NONEPythonからはlambda クライアントのcreate_function_url_config を呼び出します。
import boto3
client = boto3.client("lambda", region_name="ap-northeast-1")
resp = client.create_function_url_config(
FunctionName="my-http-func",
AuthType="NONE",
Cors={
"AllowOrigins": ["*"],
"AllowMethods": ["GET", "POST"],
"AllowHeaders": ["content-type"],
"MaxAge": 3600,
},
)
client.add_permission(
FunctionName="my-http-func",
StatementId="FunctionURLAllowPublicAccess",
Action="lambda:InvokeFunctionUrl",
Principal="*",
FunctionUrlAuthType="NONE",
)
print(resp["FunctionUrl"])


add_permissionを忘れると、公開設定でも403が返ってくるので注意です。
Lambda関数でリクエストを処理する
Function URLへのリクエストは、API Gateway HTTP APIと同じペイロード形式バージョン2.0でLambdaに渡されます。
HTTPメソッドはevent["requestContext"]["http"]["method"] 、パスはevent["rawPath"] で取得できます。
クエリ文字列はevent["queryStringParameters"] 、リクエストボディはevent["body"] に入ります。
レスポンスはstatusCode ・headers ・body を持つ辞書を返す形式です。
import json
def handler(event, context):
method = event["requestContext"]["http"]["method"]
path = event["rawPath"]
if method == "GET" and path == "/hello":
params = event.get("queryStringParameters") or {}
name = params.get("name", "world")
return {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps({"message": f"Hello, {name}!"}),
}
if method == "POST" and path == "/echo":
payload = json.loads(event.get("body") or "{}")
return {
"statusCode": 200,
"headers": {"Content-Type": "application/json"},
"body": json.dumps({"received": payload}),
}
return {"statusCode": 404, "body": "Not Found"}動作確認はcurlでエンドポイントを叩くだけです。
curl "https://<url-id>.lambda-url.ap-northeast-1.on.aws/hello?name=izumi"CORSと認証を設定する
ブラウザのJavaScriptから呼び出す場合は、Function URLのCORS設定でオリジンを許可します。
AllowOrigins に本番ドメインを指定し、ワイルドカードの* は開発時だけに留めるのが安全です。
Lambda側でCORS用ヘッダーを手動で返す必要はなく、Function URLの設定でプリフライトへ自動応答します。
認証タイプをAWS_IAM にすると、呼び出し側はSigV4署名付きリクエストを送る必要があります。
社内ツールなど呼び出し元を限定したい場合はAWS_IAM 、一般公開のWebhookならNONE を選びます。



認証なしで公開するときは、Lambda側でトークン検証やレート制限を自前で入れておくと安心です。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
Function URLとAPI Gatewayはどちらを使うべきですか?
単一関数のシンプルなAPIやWebhookならFunction URLsが手軽です。
複数ルートの管理・使用量プラン・APIキー・WAF連携が必要ならAPI Gatewayが向いています。
Function URLにカスタムドメインを割り当てられますか?
Function URL自体にカスタムドメインを直接設定する機能はありません。
CloudFrontをFunction URLの前段に置き、CloudFront側で独自ドメインとTLS証明書を設定する構成が一般的です。
レスポンスをストリーミングできますか?
InvokeModeをRESPONSE_STREAM にすると、生成しながら順次レスポンスを返せます。
大きな生成結果や逐次表示したいケースで、体感の待ち時間を短くできます。
認証なしのFunction URLは誰でも叩けてしまいますか?
認証タイプがNONE の場合、URLを知っていれば誰でも呼び出せます。
Lambda側での入力検証、DynamoDB等を使ったレート制限、CloudFrontとWAFの併用で保護します。
まとめ
今回は、Lambda Function URLsでHTTPエンドポイントを公開する方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。








