

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Lambda 函數記憶體
<a name="configuration-memory"></a>

Lambda 會按設定的記憶體數量比例來配置 CPU 功率。*記憶體*是可供 Lambda 函數在執行時間使用的記憶體數量。可使用**記憶體** 設定來增加或減少配置給函數的記憶體和 CPU 功率。您可以設定介於 128 MB 到 10,240 MB 之間的記憶體，增量為 1 MB。在 1,769 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>

記憶體是控制函數效能的主要手段。預設設定為 128 MB，這是可能的最低設定。建議僅將 128 MB 用於簡單的 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. 開啟 Lambda 主控台中的 [函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇一個函數。

1. 選擇**組態**索引標簽，然後選擇**一般組態**。  
![\[\]](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/configuration-tab.png)

1. 在**一般組態**中，選擇**編輯**。

1. 對於**記憶體**，設定從 128 MB 到 10,240 MB 的值。

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 部署](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) 中有管理員許可，您可以選擇接收來自 的 Lambda 函數記憶體設定建議 AWS Compute Optimizer。如需有關針對您的帳戶或組織選擇加入記憶體建議的指示，請參閱 *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 的函數記憶體建議。