要调用任何 Lambda 函数,您需要使用lambda:Invoke
API 调用。在 AWS CLI 中,它通过aws lambda invoke
;调用。从中boto3
调用 via boto3.client('lambda').invoke(**kwargs)
。
最相关的论点是:
- 函数名。要调用的函数的名称(在 CLI 上为
--function-name
)
- 调用类型。确定是调用 API 同步 (
RequestResponse
) 还是异步 ( Event
) (CLI: --invocation-type
)
- 有效载荷。
event
成为传递给 Lambda 处理程序的参数的数据(CLI: --payload
,并且可以作为文件 URL 提供。例如,--payload file://./relative/path.json
此外,通过调用时,aws lambda invoke
您需要指定一个输出文件,Lambda 的结果将被写入其中。
看:
在使用 Chalice 或任何实现类似“Web 路由”行为的框架时,仅调用所需的路由需要您提供一个看起来像 API Gateway 或 Application Load Balancer 生成的事件的事件。即,如果您有 N 条路由,则框架通常会仅部署一个 Lambda 函数,并使用事件中编码的 HTTP 信息来确定在函数中调用哪个路由。
看:
最小事件文件 ( payload.json
) 可能如下所示。特别相关的是path
andresource
论点。您可能需要resource
匹配 API Gateway Chalice 为您生成的值。
{
"path": "/",
"resource": "/",
"queryStringParameters": {},
"headers": {},
"httpMethod": "GET",
"requestContext": {
"httpMethod": "GET"
},
"body": {}
}
生成的 CLI 调用如下所示:
aws lambda invoke --function-name fn \
--payload file://./payload.json \
--invocation-type RequestResponse \
output.txt
希望有帮助。