使用 AWS CDK 配置 Lambda 加热器

Configure a Lambda Warmer using AWS CDK

可以使用 AWS SAM 配置 Lambda 预热函数。

Resources:
  # ...
  Web:
    Type: AWS::Serverless::Function # https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
    Properties:
      CodeUri: web/
      Handler: lambda.handler
      Runtime: nodejs10.x
      FunctionName: !Sub myproject-${Stage}-web
      Events:
        Root:
          Type: Api # https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /
            Method: ANY
            RestApiId: !Ref WebRestApi
        RootProxy:
          Type: Api # https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
          Properties:
            Path: /{proxy+}
            Method: ANY
            RestApiId: !Ref WebRestApi
        WarmingSchedule:
          Type: Schedule
          Properties:
            Schedule: rate(5 minutes)
            Input: '{ "warmer":true,"concurrency":3 }'
      MemorySize: 512
      Policies:
        - AWSLambdaRole

如何使用 AWS CDK 创建一个加热器?是否有 "out of the box" 解决方案或是否需要使用 Schedule.cron 的自定义 lambda 函数?

您需要在 Cloudwatch 中执行 cron 作业来触发您的 lambda 以使其保持温暖 或者您使用无服务器插件:

https://serverless.com/blog/keep-your-lambdas-warm/