チュートリアル: 関数 URL を使用する Lambda 関数の作成 - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: 関数 URL を使用する Lambda 関数の作成

このチュートリアルでは、パブリック関数 URL エンドポイントから 2 つの数値の積を返す Lambda 関数を、.zip ファイルアーカイブとして定義することで作成します。関数 URL の設定の詳細については、「関数 URL の作成と管理」を参照してください。

前提条件

このチュートリアルでは、基本的な Lambda オペレーションと Lambda コンソールについてある程度の知識があることを前提としています。初めての方は、コンソールで Lambda の関数の作成 の手順に従って最初の Lambda 関数を作成してください。

以下の手順を完了するには、「AWS Command Line Interface (AWS CLI) バージョン 2」が必要です。コマンドと予想される出力は、別々のブロックにリストされます。

aws --version

次のような出力が表示されます。

aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2

コマンドが長い場合、コマンドを複数行に分割するためにエスケープ文字 (\) が使用されます。

Linux および macOS では、任意のシェルとパッケージマネージャーを使用します。

注記

Windows では、Lambda でよく使用される一部の Bash CLI コマンド (zip など) が、オペレーティングシステムの組み込みターミナルでサポートされていません。Ubuntu および Bash の Windows 統合バージョンを取得するには、Windows Subsystem for Linux をインストールします。このガイドの CLI コマンドの例では、Linux フォーマットを使用しています。Windows CLI を使用している場合、インライン JSON ドキュメントを含むコマンドを再フォーマットする必要があります。

実行ロールを作成する

AWS リソースにアクセスするためのアクセス権限をLambda 関数に付与する実行ロールを作成します。

実行ロールを作成するには
  1. AWS Identity and Access Management (IAM) コンソールの ロールページを開きます。

  2. [ロールの作成] を選択します。

  3. [信頼できるエンティティタイプ][AWS サービス] を選択し、[ユースケース][Lambda] を選択します。

  4. [Next] を選択します。

  5. [許可ポリシー] ペインの検索ボックスに「AWSLambdaBasicExecutionRole」と入力します。

  6. AWS マネージドポリシー AWSLambdaBasicExecutionRole の横にあるチェックボックスをオンにしてから、[次へ] を選択します。

  7. [ロール名] に「lambda-url-role」と入力して、[ロールの作成] をクリックします。

AWSLambdaBasicExecutionRole ポリシーには、ログを Amazon CloudWatch Logs に書き込むために関数が必要とするアクセス許可が含まれます。このチュートリアルの後半で、Lambda 関数の作成にロールの Amazon リソースネーム (ARN) が必要になります。

実行ロールの ARN を見つけるには
  1. AWS Identity and Access Management (IAM) コンソールの ロールページを開きます。

  2. 先ほど作成したロール (lambda-url-role) を選択します。

  3. [概要] ペインで、ARN をコピーします。

関数 URL を使用する Lambda 関数を作成する (ZIP ファイルアーカイブ)

ZIP ファイルアーカイブから、関数 URL エンドポイントを使用する Lambda 関数を作成します。

関数を作成するには
  1. 以下のコード例を index.js という名前のファイルにコピーします。

    例 index.js
    exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; };
  2. デプロイパッケージを作成します。

    zip function.zip index.js
  3. create-function コマンドを使用して Lambda 関数を作成します。ロール ARN は、チュートリアルの前半でコピーした独自の実行ロールの ARN に置き換えてください。

    aws lambda create-function \ --function-name my-url-function \ --runtime nodejs18.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/lambda-url-role
  4. 関数に、関数の URL へのパブリックアクセスを許可する権限を付与するリソースベースのポリシーを追加します。

    aws lambda add-permission \ --function-name my-url-function \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type "NONE" \ --statement-id url
  5. create-function-url-config コマンドを使用して、関数の URL エンドポイントを作成します。

    aws lambda create-function-url-config \ --function-name my-url-function \ --auth-type NONE

関数 URL エンドポイントをテストする

curl や Postman などの HTTP クライアントから関数 URL エンドポイントをコールすることで、Lambda 関数を呼び出します。

curl 'https://abcdefg.lambda-url.us-east-1.on.aws/' \ -H 'Content-Type: application/json' \ -d '{"num1": "10", "num2": "10"}'

以下の出力が表示されます。

The product of 10 and 10 is 100

関数 URL を使用する Lambda 関数を作成する (CloudFormation)

また、AWS CloudFormation タイプに AWS::Lambda::Url を指定することで、関数 URL エンドポイントを使用する Lambda 関数を作成することもできます。

Resources: MyUrlFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: nodejs18.x Role: arn:aws:iam::123456789012:role/lambda-url-role Code: ZipFile: | exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; }; Description: Create a function with a URL. MyUrlFunctionPermissions: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref MyUrlFunction Action: lambda:InvokeFunctionUrl Principal: "*" FunctionUrlAuthType: NONE MyFunctionUrl: Type: AWS::Lambda::Url Properties: TargetFunctionArn: !Ref MyUrlFunction AuthType: NONE

関数 URL を使用する Lambda 関数の作成 (AWS SAM)

また、AWS Serverless Application Model (AWS SAM) により、関数 URL が設定された Lambda 関数を作成することもできます。

ProductFunction: Type: AWS::Serverless::Function Properties: CodeUri: function/. Handler: index.handler Runtime: nodejs18.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE

リソースのクリーンアップ

このチュートリアル用に作成したリソースは、保持しない場合は削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。

実行ロールを削除するには
  1. IAM コンソールのロールページを開きます。

  2. 作成した実行ロールを選択します。

  3. [削除] を選択します。

  4. テキスト入力フィールドにロールの名前を入力し、[削除] を選択します。

Lambda 関数を削除するには
  1. Lambda コンソールの関数ページを開きます。

  2. 作成した関数を選択します。

  3. [アクション] で、[削除] を選択します。

  4. テキスト入力フィールドに delete と入力し、[Delete] (削除) を選択します。