在命令行中设置 Json 对象而不是 AWS-SAM 上的 event.json

Set Json object in command line instead of event.json on AWS-SAM

正常

我可以将此功能用于 SAM

sam local invoke "MessageFunction" -e events/message.json

但是我想在命令行中设置 event.json 的内容

所以,我试过了,但没有成功。

echo '{"type": "Message", "user_id": 5 }' | sam local invoke "MessageFunction" 

有什么办法可以做到这一点吗?

所以我尝试了管道,它似乎在抱怨额外的参数。 -e 标志需要一个文件路径作为输入。所以要回答你的问题,以我的能力来说似乎是行不通的。但是,您可能需要考虑使用以下命令将事件通过管道传输到临时文件中:

sam_tmp=$(mktemp)
echo '{"type": "Message", "user_id": 5 }' >> "$sam_tmp"
sam local invoke "MessageFunction" -e $sam_tmp
rm $sam_tmp

看起来很脏,但它完成了工作:D 逻辑是:

  • 我们使用 mktemp
  • 创建一个临时文件
  • 然后我们将事件推送到临时文件
  • 然后传给事件的-e标志
  • 会话完成后清理它