Lambda 関数 URL の作成と管理 - AWS Lambda

Lambda 関数 URL の作成と管理

関数 URL は、Lambda 関数のための専用 HTTP エンドポイントです。関数 URL の作成と設定には、Lambda コンソールまたは Lambda API を使用します。関数 URL を作成すると、一意の URL エンドポイントが Lambda により自動的に生成されます。関数 URL のエンドポイントでは、次の形式を使用します。

https://<url-id>.lambda-url.<region>.on.aws

Lambda は、エンドポイントの <url-id> 部分を、AWS アカウント ID を含むさまざまな要因に基づいて生成します。このプロセスは決定的であるため、<url-id> からは、任意のユーザーがそのアカウントの ID を取得できます。

関数 URL の作成 (コンソール)

コンソールを使用して関数 URL を作成するには、以下の手順に従います。

  1. Lambda コンソールの [Functions] (関数) ページを開きます。

  2. 関数 URL を作成する関数の名前を選択します。

  3. [Configuration] (設定) タブを開き、次に [Function URL] (関数 URL) をクリックします。

  4. [Create function URL] (関数 URL を作成) をクリックします。

  5. [Auth Type] (認証タイプ) で、[AWS_IAM] または [NONE] (無し) を選択します。関数 URL での認証の詳細については、「セキュリティと認証モデル」を参照してください。

  6. (オプション) [Cross-Origin Resource Sharing(CORS)] をクリックした後に、関数 URL の CORS 設定を作成します。CORS の詳細については、Cross-Origin Resource Sharing (CORS) を参照してください。

  7. [Save] を選択します。

これにより、未公開関数の $LATEST バージョン用として関数 URL が作成されます。関数 URL は、コンソールの [Function overview] (関数の概要) セクションに表示されます。

  1. Lambda コンソールの [Functions] (関数) ページを開きます。

  2. 関数 URL を作成するエイリアスを持つ関数の名前を選択します。

  3. [Aliases] (エイリアス) タブを開き、関数 URL を作成するエイリアスの名前を選択します。

  4. [Configuration] (設定) タブを開き、次に [Function URL] (関数 URL) をクリックします。

  5. [Create function URL] (関数 URL を作成) をクリックします。

  6. [Auth Type] (認証タイプ) で、[AWS_IAM] または [NONE] (無し) を選択します。関数 URL での認証の詳細については、「セキュリティと認証モデル」を参照してください。

  7. (オプション) [Cross-Origin Resource Sharing(CORS)] をクリックした後に、関数 URL の CORS 設定を作成します。CORS の詳細については、Cross-Origin Resource Sharing (CORS) を参照してください。

  8. [Save] を選択します。

これにより、関数エイリアス用に関数 URL が作成されます。関数 URL は、コンソール上で、エイリアスの [Function overview] (関数の概要) セクションに表示されます。

関数 URL を使用して新しい関数を作成するには (コンソール)

  1. Lambda コンソールの [Functions] (関数) ページを開きます。

  2. [Create function] (関数の作成) を選択します。

  3. 基本的な情報 で、以下の作業を行います。

    1. [Function name] (関数名) に関数の名前を入力します (例: my-function)。

    2. [Runtime] (ランタイム) で、好みの言語用のランタイム (Node.js 14.x など) を選択します。

    3. [Architecture] (アーキテクチャ) では、「x86_64」または「arm64」のいずれかを選択します。

    4. [Permissions] (アクセス許可) を展開し、新しい実行ロールを作成するか、既存のロールを使用するかを選択します。

  4. [Advanced settings] (詳細設定) を展開し、[Function URL] (関数 URL) を選択します。

  5. [Auth Type] (認証タイプ) で、[AWS_IAM] または [NONE] (無し) を選択します。関数 URL での認証の詳細については、「セキュリティと認証モデル」を参照してください。

  6. (オプション) [Configure cross-origin resource sharing (CORS)] (Cross-Origin Resource Sharing(CORS) の設定) をクリックします。関数の作成時にこのオプションを選択すると、関数 URL はデフォルトで、すべてのオリジンからのリクエストを許可します。関数 URL の CORS 設定は、関数の作成が完了した後に編集できます。CORS の詳細については、Cross-Origin Resource Sharing (CORS) を参照してください。

  7. [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 \ --qualifier prod \ // optional --auth-type AWS_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

[Parameters] (パラメータ)

  • (必須) AuthType – 関数 URL で使用する認証のタイプを定義します。これに使用できる値は、AWS_IAM または NONE です。アクセスを認証された IAM ユーザーのみに制限するには、値に 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

    • 関数 ARNarn:aws:lambda:us-west-2:123456789012:function:my-function

    • 部分的な ARN123456789012:function:my-function

Cross-Origin Resource Sharing (CORS)

さまざまなオリジンによる、関数 URL へのアクセス方法を定義するには、Cross-Origin Resource Sharing (CORS) を使用します。異なるドメインから関数 URL を呼び出す場合は、CORS を設定することをお勧めします。Lambda では、関数 URL 用として、以下の CORS ヘッダーをサポートしています。

CORS ヘッダー CORS 設定プロパティ 値の例

Access-Control-Allow-Origin

AllowOrigins

* (すべてのオリジンを許可する)

https://www.example.com

http://localhost:60905

Access-Control-Allow-Methods

AllowMethods

GET, POST, DELETE, *

Access-Control-Allow-Headers

AllowHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Expose-Headers

ExposeHeaders

Date, Keep-Alive, X-Custom-Header

Access-Control-Allow-Credentials

AllowCredentials

TRUE

Access-Control-Max-Age

MaxAge

5 (デフォルト)300

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 エラーが表示されます。予約済み同時実行数の詳細については、「Lambda の予約済み同時実行数の管理」を参照してください。

関数 URL の非アクティブ化

緊急時には、関数 URL へのすべてのトラフィックを拒否する必要が生じることがあります。関数 URL を非アクティブ化するには、予約済み同時実行数を 0 に設定します。これにより、関数 URL へのすべてのリクエストがスロットリングされ、HTTP ステータスレスポンスには 429 が返されます。関数 URL を再アクティブ化するには、予約済み同時実行数を 1 以上の値に設定するか、この設定全体を削除します。