【问题标题】:No Payload property on AWS Lambda invoke CLI responseAWS Lambda 调用 CLI 响应上没有有效负载属性
【发布时间】:2018-04-17 08:20:28
【问题描述】:

我正在调用AWS Lambda CLI to invoke 我的函数。我想将函数响应(有效负载)作为我的返回对象的一部分,所以我传递了--invocation-type RequestResponse。这样,我仍然只能在输出文件中获取函数输出(我实际上并不关心)。我希望它作为从这个 CLI 调用返回的对象的一部分,但我只得到 LogResult 和 StatusCode。

{
    "LogResult": "encoded blah blah blah", 
    "StatusCode": 200
}

我是在命令中打错字还是遗漏了什么?如何将函数输出(有效负载)作为此 CLI 调用返回的对象的一部分?

aws lambda invoke --function-name myFunction --invocation-type RequestResponse --log-type Tail --payload {} --region us-east-1 testoutput.txt

【问题讨论】:

  • 请使用命令aws --version验证您拥有最新版本的AWS CLI工具
  • 运行版本 1.11.129,当然已经过时了,但是当我尝试使用 pip install awscli --upgrade --user 升级时,我有相同的版本。不知道如何升级到 1.11.84(我在 Amazon Linux 上)。
  • 1.11.129 是比 1.11.84 更新的版本。 129 大于 84
  • ????好点子。良好的 ole 语义版本控制 ;) 所以我回到第一方,不确定是什么原因造成的。

标签: amazon-web-services aws-lambda aws-cli


【解决方案1】:

我想将函数响应(有效负载)作为我的返回对象的一部分,所以我传递了--invocation-type RequestResponse

这不是那个选项的作用。此外,指定这本质上是一个无操作,因为RequestResponse 已经是默认值。替代方案 (Event) 告诉 Lambda 异步运行函数(从您的角度来看)而不等待它完成。这与如何收集或返回响应无关,而在于响应是否被完全丢弃,因为您的调用请求与正在运行的函数分离并立即返回。

我仍然只在我的输出文件中获得函数输出

这正是它应该如何工作的。这就是为什么你必须指定一个输出文件。函数输出仅写入该文件。

【讨论】:

  • 啊,是的,你对第一部分是正确的。但我确实需要指定这一点才能正确获取日志。来自文档:You can set this optional parameter to Tail in the request only if you specify the invocation-type parameter with value RequestResponse。我希望你在这个问题上是错的:The function output is written to that file, only. 不幸的是,文档中没有任何迹象表明是这种情况。它们的编写和结构方式看起来肯定会成为返回对象的一部分,但从我得到的结果来看,你的结论是合理的,谢谢!
  • “文档中没有任何迹象表明是这种情况。” 不清楚你为什么相信...哦。是的,我看到了,现在...在页面底部显示Payload。我之前没有注意到,因为output-file 不是可选参数,所以我使用它。这似乎是文档错误或疏忽,就像您可以为 output-file 提供的神奇值一样。如果一切都失败了,请阅读源代码。底层 Lambda API 实际上不是以 JSON 的形式提供其他值,而是以 HTTP 响应标头的形式提供,因此您得到的 JSON 实际上是由 aws-cli 制作的。
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 2019-01-11
  • 2020-03-15
  • 2021-07-08
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多