Lambda 関数 URL の作成と管理
関数 URL は、Lambda 関数のための専用 HTTP エンドポイントです。関数 URL の作成と設定には、Lambda コンソールまたは Lambda API を使用します。
ヒント
Lambda には、HTTP エンドポイントを介して関数を呼び出す 2 つの方法として、関数 URL および Amazon API Gateway が用意されています。ユースケースに最適な方法がわからない場合、「HTTP リクエストを使用して Lambda 関数を呼び出す方法を選択する」を参照してください。
関数 URL を作成すると、一意の URL エンドポイントが Lambda により自動的に生成されます。関数 URL を作成した後に、その URL エンドポイントが変更されることはありません。関数 URL のエンドポイントでは、次の形式を使用します。
https://
<url-id>
.lambda-url.<region>.on.aws
注記
関数 URL がサポートされていない AWS リージョン は、アジアパシフィック (ハイデラバード) (ap-south-2
)、アジアパシフィック (メルボルン) (ap-southeast-4
)、アジアパシフィック (マレーシア) (ap-southeast-5
)、カナダ西部 (カルガリー) (ca-west-1
)、欧州 (スペイン) (eu-south-2
)、欧州 (チューリッヒ) (eu-central-2
)、イスラエル (テルアビブ) (il-central-1
)、および中東 (UAE) (me-central-1
) です。
関数 URL はデュアルスタックに対応しており、IPv4 と IPv6 をサポートしています。関数のために URL を設定した後は、ウェブブラウザ、curl、Postman、または任意の HTTP クライアントから HTTP エンドポイントを介して、その関数を呼び出せるようになります。
注記
関数 URL には、パブリックインターネット経由でしかアクセスできません。Lambda 関数は AWS PrivateLink をサポートしていますが、関数 URL ではサポートされません。
Lambda 関数 URL では、セキュリティとアクセスコントロールのために、リソースベースのポリシーを使用します。また、Cross-Origin Resource Sharing (CORS) 設定オプションを、関数 URL に設定することも可能です。
関数 URL は、任意の関数エイリアス、もしくは $LATEST
の未公開な関数バージョンに対して適用できます。関数 URL は、他の関数バージョンに追加することはできません。
次のセクションでは、Lambda コンソール、AWS CLI、および AWS CloudFormation テンプレートを使用して関数 URL を作成し、管理する方法を説明します。
トピック
関数 URL の作成 (コンソール)
コンソールを使用して関数 URL を作成するには、以下の手順に従います。
-
Lambda コンソールの [関数ページ]
を開きます。 -
関数 URL を作成する関数の名前を選択します。
-
[Configuration] (設定) タブを開き、次に [Function URL] (関数 URL) をクリックします。
-
[Create function URL] (関数 URL を作成) をクリックします。
-
[Auth Type] (認証タイプ) で、[AWS_IAM] または [NONE] (無し) を選択します。関数 URL での認証の詳細については、「アクセスコントロール」を参照してください。
-
(オプション) [Cross-Origin Resource Sharing (CORS)] をクリックした後に、関数 URL の CORS 設定を作成します。CORS の詳細については、クロスオリジンリソース共有 (CORS) を参照してください。
-
[Save] を選択します。
これにより、未公開関数の $LATEST
バージョン用として関数 URL が作成されます。関数 URL は、コンソールの [Function overview] (関数の概要) セクションに表示されます。
-
Lambda コンソールの [関数ページ]
を開きます。 -
関数 URL を作成するエイリアスを持つ関数の名前を選択します。
-
[Aliases] (エイリアス) タブを開き、関数 URL を作成するエイリアスの名前を選択します。
-
[Configuration] (設定) タブを開き、次に [Function URL] (関数 URL) をクリックします。
-
[Create function URL] (関数 URL を作成) をクリックします。
-
[Auth Type] (認証タイプ) で、[AWS_IAM] または [NONE] (無し) を選択します。関数 URL での認証の詳細については、「アクセスコントロール」を参照してください。
-
(オプション) [Cross-Origin Resource Sharing (CORS)] をクリックした後に、関数 URL の CORS 設定を作成します。CORS の詳細については、クロスオリジンリソース共有 (CORS) を参照してください。
-
[Save] を選択します。
これにより、関数エイリアス用に関数 URL が作成されます。関数 URL は、コンソール上で、エイリアスの [Function overview] (関数の概要) セクションに表示されます。
関数 URL を使用して新しい関数を作成するには (コンソール)
-
Lambda コンソールの [関数ページ]
を開きます。 -
[Create function (関数の作成)] を選択します。
-
[基本的な情報] で、以下を実行します。
-
[Function name] (関数名) に関数の名前を入力します (例:
my-function
)。 -
[Runtime] (ランタイム) で、希望する言語のランタイム (Node.js 18.x など) を選択します。
-
[Architecture] (アーキテクチャ) では、「x86_64」または「arm64」のいずれかを選択します。
-
[Permissions] (アクセス許可) を展開し、新しい実行ロールを作成するか、既存のロールを使用するかを選択します。
-
-
[Advanced settings] (詳細設定) を展開し、[Function URL] (関数 URL) を選択します。
-
[Auth Type] (認証タイプ) で、[AWS_IAM] または [NONE] (無し) を選択します。関数 URL での認証の詳細については、「アクセスコントロール」を参照してください。
-
(オプション) [Configure cross-origin resource sharing (CORS)] (Cross-Origin Resource Sharing (CORS) の設定) をクリックします。関数の作成時にこのオプションを選択すると、関数 URL はデフォルトで、すべてのオリジンからのリクエストを許可します。関数 URL の CORS 設定は、関数の作成が完了した後に編集できます。CORS の詳細については、クロスオリジンリソース共有 (CORS) を参照してください。
-
[Create function (関数の作成)] を選択します。
これにより、未公開の関数バージョン $LATEST
で、関数 URL を持つ新しい関数が作成されます。関数 URL は、コンソールの [Function overview] (関数の概要) セクションに表示されます。
関数 URL の作成 (AWS CLI)
AWS Command Line Interface (AWS CLI) を使用して、既存の Lambda 関数の関数 URL を作成するには、次のコマンドを実行します。
aws lambda create-function-url-config \ --function-name
my-function
\ --qualifierprod
\ // optional --auth-typeAWS_IAM
--cors-config{AllowOrigins="https://example.com"}
// optional
これにより、my-function
関数の prod
修飾子に関数 URL が追加されます。これらの構成パラメータの詳細については、API リファレンスの「CreateFunctionUrlConfig」を参照してください。
注記
AWS CLI を介して関数 URL を作成するには、対象の関数が既に存在している必要があります。
CloudFormation テンプレートへの関数 URL の追加
AWS::Lambda::Url
リソースを AWS CloudFormation テンプレートに追加するには、次の構文を使用します。
JSON
{ "Type" : "AWS::Lambda::Url", "Properties" : { "AuthType" : String, "Cors" : Cors, "Qualifier" : String, "TargetFunctionArn" : String } }
YAML
Type: AWS::Lambda::Url Properties: AuthType: String Cors: Cors Qualifier: String TargetFunctionArn: String
パラメータ
(必須)
AuthType
– 関数 URL で使用する認証のタイプを定義します。これに使用できる値は、AWS_IAM
またはNONE
です。アクセスを認証されたユーザーのみに制限するには、AWS_IAM
に設定します。IAM 認証をバイパスし、任意のユーザーが関数にリクエストを送信できるようにするには、NONE
をセットします。-
(オプション)
Cors
– 関数 URL のための CORS 設定を定義します。CloudFormation 内のAWS::Lambda::Url
リソースにCors
を追加するには、次の構文を使用します。例 AWS::Lambda::Url.Cors (JSON)
{ "AllowCredentials" : Boolean, "AllowHeaders" : [ String, ... ], "AllowMethods" : [ String, ... ], "AllowOrigins" : [ String, ... ], "ExposeHeaders" : [ String, ... ], "MaxAge" : Integer }
例 AWS::Lambda::Url.Cors (YAML)
AllowCredentials: Boolean AllowHeaders: - String AllowMethods: - String AllowOrigins: - String ExposeHeaders: - String MaxAge: Integer
(オプション)
Qualifier
– エイリアス名。(必須)
TargetFunctionArn
– Lambda 関数の名前、または Amazon リソースネーム (ARN)。名前として使用できる値には次のようなものがあります。関数名 –
my-function
関数 ARN –
arn:aws:lambda:us-west-2:123456789012:function:my-function
部分的な ARN –
123456789012:function:my-function
クロスオリジンリソース共有 (CORS)
さまざまなオリジンによる、関数 URL へのアクセス方法を定義するには、Cross-Origin Resource Sharing (CORS)
CORS ヘッダー | CORS 設定プロパティ | 値の例 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Lambda コンソールまたは AWS CLI を使用して、関数 URL のために CORS を設定すると、Lambda は関数 URL を介して、すべてのレスポンスに CORS ヘッダーを自動的に追加するようになります。あるいは、手動で CORS ヘッダーを関数レスポンスに追加することも可能です。ヘッダーが競合している場合、期待される動作はリクエストのタイプによって異なります。
-
OPTIONS リクエストなどのプリフライトリクエストでは、関数 URL に設定されている CORS ヘッダーが優先されます。Lambda は、レスポンスでこれらの CORS ヘッダーのみを返します。
-
GET または POST リクエストなどのプリフライトリクエストでは、Lambda は関数 URL に設定されている CORS ヘッダーと、関数によって返される CORS ヘッダーの両方を返します。これにより、レスポンスで CORS ヘッダーが重複する可能性があります。「
The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed
」のようなエラーが表示されることがあります。
一般に、関数のレスポンスで CORS ヘッダーを手動で送信するのではなく、関数 URL ですべての CORS 設定を構成することをお勧めします。
関数 URL のスロットリング
スロットリングは、関数がリクエストを処理するレートを制限します。これは、関数からダウンストリームリソースに過剰な負荷がかからないようにしたり、リクエストの急増に対応するなど、多くの状況で役立ちます。
予約済み同時実行数を設定することで、関数 URL を介して Lambda 関数が処理するリクエストのレートをスロットリングできます。予約済み同時実行数は、関数を同時に呼び出せる最大数を制限します。関数に対する 1 秒あたりの最大リクエストレート (RPS) は、設定された予約済み同時実行数の 10 倍に相当します。例えば、関数の予約済み同時実行数を 100 に設定すると、最大 RPS は 1,000 になります。
関数の同時実行数が、予約済み同時実行数を超えるたびに、関数 URL は HTTP ステータスコードの 429
を返します。設定された予約済み同時実行数を基に、それを 10 倍した最大の RPS 値を超えるリクエストを関数が受信した場合は、ユーザーに対しても HTTP の 429
エラーが表示されます。予約済み同時実行数の詳細については、「関数に対する予約済み同時実行数の設定」を参照してください。
関数 URL の非アクティブ化
緊急時には、関数 URL へのすべてのトラフィックを拒否する必要が生じることがあります。関数 URL を非アクティブ化するには、予約済み同時実行数を 0 に設定します。これにより、関数 URL へのすべてのリクエストがスロットリングされ、HTTP ステータスレスポンスには 429
が返されます。関数 URL を再アクティブ化するには、予約済み同時実行数を 1 以上の値に設定するか、この設定全体を削除します。
関数 URL の削除
関数の URL を削除すると、元に戻すことはできません。新しい関数 URL を作成すると、異なる URL アドレスになります。
注記
認証タイプ NONE
で関数 URL を削除した場合、Lambda では、関連するリソースベースのポリシーが自動的に削除されません。このポリシーを削除する場合は、手動で削除する必要があります。
-
Lambda コンソールの [関数ページ]
を開きます。 -
関数の名前を選択します。
-
[設定] タブを開き、次に [関数 URL] をクリックします。
-
[削除] を選択します。
-
フィールドに [delete] (削除) という単語を入力して、削除を確認します。
-
[削除] を選択します。
注記
関数 URL を持つ関数を削除すると、Lambda により関数 URL が非同期的に削除されます。同じアカウントで同じ名前の新しい関数をすぐに作成した場合、元の関数 URL は削除されず、新しい関数にマッピングされる可能性があります。