Serverless教程

Serverless 区域和内存

我们在上一章中看到了如何使用Serverless部署我们的第一个函数。在本章中,我们将查看可以对函数执行的一些配置。我们将主要查看区域、内存大小和超时。

地区

默认情况下,所有使用Serverless部署的 lambda 函数都在 us-east-1 区域中创建。如果您希望在不同区域创建 lambda 函数,您可以在提供程序中指定。
provider:
   name: aws
   runtime: python3.6
   region: us-east-2
   profile: yash-sanghvi
无法在同一个 serverless.yml 文件中为不同的函数指定不同的区域。您应该只在特定的 serverless.yml 文件中包含属于单个区域的函数。属于单独区域的函数可以使用单独的 serverless.yml 文件进行部署。

内存大小

AWS Lambda 按所选内存的比例分配 CPU。通过最近宣布的更改,您可以为 lambda 函数选择最多 10GB 的 RAM(之前约为 3GB)。
选择的 RAM 越高,分配的 CPU 越高,函数执行得越快,执行时间越短。 AWS Lambda 按消耗的 GB 数向您收费。因此,如果一个函数在 1 GB RAM 上执行需要 10 秒,而在 2 GB RAM 上执行需要 5 秒,则您将被收取相同的费用用于两次调用。是否将内存加倍所花费的时间减半在很大程度上取决于您的函数的性质,您可能会也可能不会通过增加内存而受益。关键的一点是,分配的内存量是每个 lambda 函数的重要设置,也是您想要控制的一个。
使用Serverless,很容易为 serverless.yml 文件中定义的函数设置内存大小的默认值。也可以为不同的功能定义不同的内存大小。让我们看看如何。

为所有函数设置默认内存大小

提供程序中总是提到默认值。该值将由 serverless.yml 中的所有函数继承。 memorySize 键用于设置此值。该值以 MB 表示。
provider:
   name: aws
   runtime: python3.6
   region: us-east-2
   profile: yash-sanghvi
   memorySize: 512 #will be inherited by all functions
如果您没有在 provider 中指定 memorySize,也没有在单个函数中指定 memorySize,则将考虑默认值 1024、

为某些函数设置自定义内存大小

如果您希望某些函数具有与默认内存不同的值,那么您可以在 serverless.yml 的函数部分中指定它。
functions:
   custom_memory_func: #will override the default memorySize
      handler: handler.custom_memory
      memorySize: 2048
  default_memory_func: #will inherit the default memorySize from provider
      handler: handler.default_memory

超时

就像memorySize一样,可以在提供者中设置超时的默认值(以秒为单位),并且可以在函数部分指定各个函数的自定义超时。
如果您未指定全局或自定义超时,则默认值为 6 秒。
provider:
   name: aws
   runtime: python3.6
   region: us-east-2
   profile: yash-sanghvi
   memorySize: 512 #will be inherited by all functions
   timeout: 50 #will be inherited by all functions
  
functions:
   custom_timeout: #will override the default timeout
      handler: handler.custom_memory
      timeout: 30
  default_timeout_func: #will inherit the default timeout from provider
      handler: handler.default_memory
确保将超时保持在一个保守的值。它不应该小到您的函数经常超时,也不应该大到让您的函数中的错误让您付出高昂的代价。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4