関数ラムルズ


AWSはラムダ関数のURLに新しい機能を発表した.彼らが何であるか、彼らが働く方法と彼らをつくる2つの方法は、ここにあります.

どのようなラムダ関数


以前は、通常、完全にマネージAPIゲートウェイサービスを使用するHTTPエンドポイントを持つラムダを公開したい場合は、この新しい機能を使用すると、直接あなたのラムダ関数に接続されているhttpsのURLを持つことができます.
つの大きな特徴は、価格です.ラムダ関数のURLは完全に“無料”です.あなたは、通常のラムダのように、これまでの呼び出しとメモリ時間の支払いをするだけです.これは、APIゲートウェイを統合するコストの1つの利点です.
しかし、それはAPIゲートウェイの直接の代用ではありません.その代わりに、APIゲートウェイはJWT/カスタムAuthorizersの能力などのより高度な機能を提供し、要求の応答の検証と変換、使用計画、直接組み込みのAWSのファイアウォールのサポートなど.

彼らはどのように働く


各URLは、関数のエイリアスまたは関数の最新バージョンを呼び出す関数arnに固有です.これにより、テストと反復開発のための異なるURLを持つ関数の複数のバージョンを展開できます.
リクエストを処理するのは簡単ですが、通常ラムダで使用するイベントオブジェクトにはHTTPリクエストに関するプロパティも含まれます.
たとえば、RequestContextからメソッドを抽出できます.
const method = event.requestContext.http.method;
URLのクエリパラメータは、QueryStringParametersプロパティを使用してアクセスできます.
const queryParam = event.querySTringParameters.myParam;
そして最後に、bodyプロパティからリクエスト本文にアクセスできます.
const body = event.body;

1 .Λclickops経由でラムダURLを作成する


あなたは、ラムダを作成するときにUIから関数のURLを有効にすることができます.
最初にアドバンスオプションを選択し、有効な関数URLを選択します.
これは、認証設定を確認し、CORSオプションを設定できるオプションの新しいセットをもたらすでしょう.

何が表示されます関数のオプションの右側に新しい関数のURLパラメータです.これはあなたの関数URLです.

あなたのコードを今すぐAigateWayのセットアップなしでWebリクエストを介して呼び出すことができます!

2 . CloudFormation経由でラムダURLを作成する


クリックの代わりに、CloudFormationを使用してURLにアクセスできるラムダを作成できます.CloudFormationはAmazonのインフラストラクチャで、「スタック」をプログラムで作成し、AWSに展開することができます.
AWSTemplateFormatVersion: "2010-09-09"
Description: "Cloudformation template for Lambda"
Resources:
  MattsLambda:
    Type: AWS::Lambda::Function
    Properties:
      Description: my lambda with a url
      FunctionName: MattsTestLambda
      Handler: index.handler
      MemorySize: 128
      Runtime: nodejs14.x
      Timeout: 5
      Role: {{ ADD YOUR ROLE ARN HERE }}
      Code:
        S3Bucket: mybucket
        S3Key: mycode.js
あなたがおそらく上記の分野のほとんどを認識する前に、あなたはランムダスをつくったならば.プロパティにラムダ関数URLフィールドを追加しなかったことに気づくでしょう.ラムダ関数URLは、ラムダ関数リソース上のフィールドではなく、新しい型のリソースであるためです.
代わりに、私たちが作成しているURLに、追加のリソースとリファレンスを追加する必要があります.
AWSTemplateFormatVersion: "2010-09-09"
Description: "Cloudformation template for Lambda"
Resources:
  MyLambda:
    Type: AWS::Lambda::Function
    Properties:
      Description: my lambda with a url
      FunctionName: MattsTestLambda
      Handler: index.handler
      MemorySize: 128
      Runtime: nodejs14.x
      Timeout: 5
      Role: {{ ADD YOUR ROLE ARN HERE }}
      Code:
        S3Bucket: mybucket
        S3Key: mycode.js
### Lets create the URL ###
  MattsLambdaURL:
    Type: AWS::Lambda::Url
    DependsOn: MyLambda
    Properties:
      AuthType: NONE
      TargetFunctionArn: !GetAtt MyLambda.Arn
ラムダ型の新しいリソースを追加しました::url.しかし、注意すべきことは依存関係を追加していることです.この属性は、CloudFormationがラムダ関数が作成されるまでURLリソースを展開しないことを確認します.これはラムダARNに依存しているため、最終行で参照していることがわかります.
端末で次のコマンドを実行すると、CloudFormationでスタックを作成し、ラムダとURLを作成します.
aws cloudformation create-stack --stack-name MyStackName --template-body file://my-file.yaml
また、AWSダッシュボードを介して直接CloudFormationにスタックをアップロードできます.
そこには、AWSラムダ関数のURLの最新の機能に迅速なランダウン、どのように自分自身を実装する必要があります.

ソースコード:


https://github.com/MattBidewell/snippets/tree/main/aws/cloudformation/lambda

更なる読書



AWS発表
https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/

関数は、
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html

ラムダ形式
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-url.html

アマゾンAPIゲートウェイ
https://aws.amazon.com/api-gateway/
マイツイッター
https://matty.dev