0

我是 Chalice 的新手,我正在尝试在 python 脚本中使用 boto3 调用 aws lambda。我需要知道如何在该 lambda 中调用特定的“路线”。也许在事件中设置客户端上下文或其他东西?

python 脚本可以调用 lambda 函数,但不确定我如何调用(传入)该 lambda 中的路由。

app.py 中的代码:

@app.route('/dosomething', methods=['GET'], cors=True)
def doSomething():
    results = somethingWasDone()
    return {"result": results}

因此,如果 lambda 的名称是 myLambda,我想调用 myLambda 并告诉它触发上述代码以进行 dosomething 路由。谢谢

4

1 回答 1

1

要调用任何 Lambda 函数,您需要使用lambda:InvokeAPI 调用。在 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) 可能如下所示。特别相关的是pathandresource论点。您可能需要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

希望有帮助。

于 2019-09-10T14:17:06.593 回答