

# 配置 Lambda 函数内存
<a name="configuration-memory"></a>

Lambda 根据配置的内存量按比例分配 CPU 功率。*内存*是在运行时可用于 Lambda 函数的内存量。请使用**内存**设置增加分配给函数的内存和 CPU 处理能力。您可以以 1MB 的增量将内存配置在 128MB 与 10240MB 之间。大小为 1769 MB 时，函数相当于一个 vCPU（每秒一个 vCPU 秒的积分）的处理能力。

本页介绍如何以及何时更新 Lambda 函数的内存设置。

**Topics**
+ [

## 确定 Lambda 函数的适当内存设置
](#configuration-memory-use-cases)
+ [

## 配置函数内存（控制台）
](#configuration-memory-console)
+ [

## 配置函数内存（AWS CLI）
](#configuration-memory-cli)
+ [

## 配置函数内存（AWS SAM）
](#configuration-memory-sam)
+ [

## 接受函数内存推荐（控制台）
](#configuration-memory-optimization-accept)

## 确定 Lambda 函数的适当内存设置
<a name="configuration-memory-use-cases"></a>

内存是控制函数性能的主要杠杆。默认设置 128MB 是可能的最低设置。建议您仅将 128MB 用于简单的 Lambda 函数，例如用于转换事件并将其路由到其他 AWS 服务的函数。更高的内存分配可以提高函数的性能，这些函数使用导入的库、[Lambda 层](chapter-layers.md)、Amazon Simple Storage Service（Amazon S3）或 Amazon Elastic File System（Amazon EFS）。按比例增加更多内存会增加 CPU 的容量，从而提高可用的总体计算能力。如果函数受限于 CPU、网络或内存，则增加内存设置可以显著提高其性能。

要找到正确的内存配置，请使用 Amazon CloudWatch 监控您的函数，并设置在内存消耗接近配置的最大值时发出警报。这有助于识别内存受限函数。对于 CPU 受限和 IO 受限函数，监控持续时间通常可以提供洞察。在这些情况下，增加内存可以协助解决计算或网络瓶颈。

您也可以考虑使用开源的 [AWS Lambda Power Tuning](https://github.com/alexcasalboni/aws-lambda-power-tuning) 工具。此工具使用 AWS Step Functions 在不同的内存分配下运行 Lambda 函数的多个并行版本并衡量性能。输入函数在您的 AWS 账户中运行，以执行实时 HTTP 调用和 SDK 交互，从而衡量实时制作场景中可能的性能。您也可以实施 CI/CD 流程，以使用此工具自动衡量所部署的新函数的性能。

## 配置函数内存（控制台）
<a name="configuration-memory-console"></a>

您可以在 Lambda 控制台中配置函数内存。

**要更新函数内存**

1. 打开 Lamba 控制台的 [Functions page](https://console.aws.amazon.com/lambda/home#/functions)（函数页面）。

1. 选择函数。

1. 选择**配置**选项卡，然后选择**常规配置**。  
![\[\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/configuration-tab.png)

1. 在**常规配置**下，选择**编辑**。

1. 对于**内存**，设置一个从 128MB 到 10240MB 的值。

1. 选择**保存**。

## 配置函数内存（AWS CLI）
<a name="configuration-memory-cli"></a>

您可以使用 [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html) 命令来配置函数的内存。

**Example**  

```
aws lambda update-function-configuration \
  --function-name my-function \
  --memory-size 1024
```

## 配置函数内存（AWS SAM）
<a name="configuration-memory-sam"></a>

您可以使用 [AWS Serverless Application Model](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/serverless-getting-started.html ) 来配置函数的内存。更新 `template.yaml` 文件中的 [MemorySize](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-resource-function.html#sam-function-memorysize) 属性，然后运行 [sam deploy](https://docs.aws.amazon.com//serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html)。

**Example template.yaml**  

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: An AWS Serverless Application Model template describing your function.
Resources:
  my-function:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: .
      Description: ''
      MemorySize: 1024
      # Other function properties...
```

## 接受函数内存推荐（控制台）
<a name="configuration-memory-optimization-accept"></a>

如果您在 AWS Identity and Access Management (IAM) 中拥有管理员权限，则可以选择加入以接收来自 AWS Compute Optimizer 的 Lambda 函数内存设置推荐。有关选择加入您账户或企业的内存推荐的说明，请参阅 *AWS Compute Optimizer 用户指南*中的[选择加入您的账户](https://docs.aws.amazon.com/compute-optimizer/latest/ug/getting-started.html#account-opt-in)。

**注意**  
Compute Optimizer 只支持使用 x86\$164 架构的函数。

当您选择加入并且 [Lambda 函数符合 Compute Optimizer 要求](https://docs.aws.amazon.com/compute-optimizer/latest/ug/requirements.html#requirements-lambda-functions)时，您可以在**常规配置**中的 Lambda 控制台的 Compute Optimizer 中查看和接受函数内存推荐。