如何使用 aws cli 调用异步 Lambda 函数
How to invoke asynchronous Lambda function using aws cli
我创建了一个异步 lambda 函数,当我在 aws 控制台上测试它时 运行 没问题。完成执行需要 6-7 分钟。但是当我从本地 aws cli 调用相同的函数时,它显示以下输出。
Read timeout on endpoint URL: "https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/mandrill/invocations"
知道出了什么问题,我该如何解决。我用来从 cli 调用此函数的命令如下,
aws lambda invoke --invocation-type RequestResponse --function-name mandrill --region us-east-1 --payload "{ \"domain\": \"faisal999.wombang.com\" }" --cli-binary-format raw-in-base64-out response.json
到 invoke a function asynchronously,将 InvocationType 设置为 Event。
aws lambda invoke --invocation-type Event --function-name mandrill --region us-east-1 --payload "{ \"domain\": \"faisal999.wombang.com\" }" --cli-binary-format raw-in-base64-out response.json
此外,请考虑以下几点:
对于异步调用,Lambda 将事件添加到队列中,然后再将它们发送到您的函数。如果您的函数没有足够的容量跟上队列,事件可能会丢失。有时,您的函数可能会多次收到同一事件,即使没有发生错误。要保留未处理的事件,请使用死信队列配置您的函数。
在你的命令中你有 --invocation-type RequestResponse
来自 AWS docs:
RequestResponse
(default) - Invoke the function synchronously. Keep the connection open until the function returns a response or times out. The API response includes the function response and additional data.
您可能想尝试使用 --invocation-type Event
。
Event
- Invoke the function asynchronously. Send events that fail multiple times to the function's dead-letter queue (if it's configured). The API response only includes a status code.
我创建了一个异步 lambda 函数,当我在 aws 控制台上测试它时 运行 没问题。完成执行需要 6-7 分钟。但是当我从本地 aws cli 调用相同的函数时,它显示以下输出。
Read timeout on endpoint URL: "https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/mandrill/invocations"
知道出了什么问题,我该如何解决。我用来从 cli 调用此函数的命令如下,
aws lambda invoke --invocation-type RequestResponse --function-name mandrill --region us-east-1 --payload "{ \"domain\": \"faisal999.wombang.com\" }" --cli-binary-format raw-in-base64-out response.json
到 invoke a function asynchronously,将 InvocationType 设置为 Event。
aws lambda invoke --invocation-type Event --function-name mandrill --region us-east-1 --payload "{ \"domain\": \"faisal999.wombang.com\" }" --cli-binary-format raw-in-base64-out response.json
此外,请考虑以下几点:
对于异步调用,Lambda 将事件添加到队列中,然后再将它们发送到您的函数。如果您的函数没有足够的容量跟上队列,事件可能会丢失。有时,您的函数可能会多次收到同一事件,即使没有发生错误。要保留未处理的事件,请使用死信队列配置您的函数。
在你的命令中你有 --invocation-type RequestResponse
来自 AWS docs:
RequestResponse
(default) - Invoke the function synchronously. Keep the connection open until the function returns a response or times out. The API response includes the function response and additional data.
您可能想尝试使用 --invocation-type Event
。
Event
- Invoke the function asynchronously. Send events that fail multiple times to the function's dead-letter queue (if it's configured). The API response only includes a status code.