在本地调用 Lambda 函数 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在本地调用 Lambda 函数

你可以调用你的Amazon Lambda使用在本地运行sam 本地调用 Amazon SAMCLI 命令并提供函数的逻辑 ID 和事件文件。或者,sam local invoke也接受stdin作为一项活动。有关事件的更多信息,请参阅Event在里面Amazon Lambda开发人员指南. 有关来自不同的事件消息格式的信息Amazon服务,请参阅使用Amazon Lambda将与其他服务一起使用在里面Amazon Lambda开发人员指南.

注意

这些区域有:sam local invoke命令对应于Amazon Command Line Interface(Amazon CLI) 命令aws lambda invoke. 您可以使用任一命令调用 Lambda 函数。

您必须运行sam local invoke命令位于包含要调用的函数的项目目录中。

示例:

# Invoking function with event file $ sam local invoke "Ratings" -e event.json # Invoking function with event via stdin $ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings" # For more options $ sam local invoke --help

环境变量文件

要在本地声明覆盖模板中定义的值的环境变量,请执行以下操作:

  1. 创建一个 JSON 文件,其中包含要重写的环境变量。

  2. 使用--env-vars参数用于覆盖模板中定义的值。

声明环境变量

要声明适用于所有资源的全局环境变量,请指定Parameters对象如下所示:

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

要为每个资源声明不同的环境变量,请为每个资源指定对象,如下所示:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

在为每种资源指定对象时,可以使用以下标识符,这些标识符按从高到低的优先级顺序列出:

  1. logical_id

  2. function_id

  3. function_name

  4. 完整路径标识符

您可以使用上述两种方法在单个文件中一起声明环境变量。这样做时,您为特定资源提供的环境变量优先于全局环境变量。

将您的环境变量保存在 JSON 文件中,例如env.json.

重写环境变量值

要使用 JSON 文件中定义的环境变量替换环境变量,请使用--env-vars与之argumentinvoke要么start-api命令。例如:

sam local invoke --env-vars env.json

如果您的应用程序包含层,有关如何调试本地主机上层问题的信息,请参阅使用图层.