

# 使用 AWS SAM CLI 对现有 Lambda 函数启用 Lambda Insights
<a name="Lambda-Insights-Getting-Started-SAM-CLI"></a>

按照以下步骤操作，使用 AWS SAM AWS CLI 对现有 Lambda 函数启用 Lambda Insights。

如果您尚未安装最新版本的 AWS SAM CLI，则必须先安装或升级到此版本。有关更多信息，请参阅[安装 AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)。

**步骤 1：安装层**

要使 Lambda Insights 扩展程序可用于所有 Lambda 函数，请使用 Lambda Insights 层的 ARN 向 SAM 模板的 `Globals` 部分添加一个 `Layers` 属性。下方示例所示为将该层用于 Lambda Insights 的初始版本。有关 Lambda Insights 扩展程序层的最新版本，请参阅 [Lambda Insights 扩展程序的可用版本](Lambda-Insights-extension-versions.md)。

```
Globals:
  Function:
    Layers:
      - !Sub "arn:aws:lambda:${AWS::Region}:580247275435:layer:LambdaInsightsExtension:14"
```

若要仅为单个函数启用此层，请向该函数添加 `Layers` 属性，如本示例所示。

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Layers:
        - !Sub "arn:aws:lambda:${AWS::Region}:580247275435:layer:LambdaInsightsExtension:14"
```

**步骤 2：添加托管式策略**

对每个函数均需添加 **CloudWatchLambdaInsightsExecutionRolePolicy** IAM 策略。

AWS SAM 不支持全局策略，因此您必须对每个函数单独启用这些策略，如本示例所示。有关全局策略的更多信息，请参阅[全局策略部分](https://github.com/aws/serverless-application-model/blob/master/docs/globals.rst)。

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Policies:
        - CloudWatchLambdaInsightsExecutionRolePolicy
```

**本地调用**

AWS SAM CLI 支持 Lambda 扩展程序。但每个在本地执行的调用都会重置运行时环境。由于运行时在未发生关闭事件的情况下重新启动，Lambda Insights 数据将无法从本地调用中获得。有关更多信息，请参阅[版本 1.6.0 - 添加对 AWS Lambda 扩展程序的本地测试支持](https://github.com/aws/aws-sam-cli/releases/tag/v1.6.0)。

**故障排除**

要排除 Lambda Insights 的安装问题，请将以下环境变量添加到 Lambda 函数中以启用调试日志记录。

```
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          LAMBDA_INSIGHTS_LOG_LEVEL: info
```