Lambda 関数 URL の作成と管理
関数 URL は、Lambda 関数のための専用 HTTP エンドポイントです。関数 URL の作成と設定には、Lambda コンソールまたは Lambda API を使用します。関数 URL を作成すると、一意の URL エンドポイントが Lambda により自動的に生成されます。関数 URL を作成した後に、その URL エンドポイントが変更されることはありません。関数 URL のエンドポイントでは、次の形式を使用します。
https://
<url-id>
.lambda-url.<region>.on.aws
注記
関数 URL は次のリージョンではサポートされていません: アジアパシフィック (ハイデラバード) (ap-south-2
)、欧州 (スペイン) (eu-south-2
)、および中東 (UAE) (me-central-1
)。
次のセクションでは、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 コンソールの関数ページ
を開きます。 -
[機能の作成]を選択します。
-
[基本的な情報] で、以下を実行します。
-
[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) を参照してください。
-
[機能の作成]を選択します。
これにより、未公開の関数バージョン $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 ヘッダーを関数レスポンスに追加することも可能です。競合するヘッダーがある場合、関数 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 アドレスになります。
-
Lambda コンソールの関数ページ
を開きます。 -
関数の名前を選択します。
-
[設定] タブを開き、次に [関数 URL] をクリックします。
-
[Delete] (削除) をクリックします。
-
フィールドに [delete] (削除) という単語を入力して、削除を確認します。
-
[Delete] (削除) をクリックします。
注記
認証タイプ NONE
で関数 URL を削除した場合、Lambda では、関連するリソースベースのポリシーが自動的に削除されません。このポリシーを削除する場合は、手動で削除する必要があります。