【问题标题】:Set Json object in command line instead of event.json on AWS-SAM在命令行中设置 Json 对象而不是 AWS-SAM 上的 event.json
【发布时间】:2022-01-31 23:19:14
【问题描述】:

正常

我可以将此功能用于SAM

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

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

所以,我尝试了这个,但没有成功。

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

有没有办法做到这一点?

【问题讨论】:

  • 你试过了吗? ` echo '{"type": "Message", "user_id": 5 }' | sam local invoke "MessageFunction" -e `
  • sh echo '{"type": "Message", "user_id": 5 }' | sam local invoke "MessageFunction" -e 显示错误/bin/echo: /bin/echo: cannot execute binary fileecho '{"type": "Message", "user_id": 5 }' | sam local invoke "MessageFunction" -e 显示Error: -e option requires an argument

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


【解决方案1】:

所以我尝试了管道,它似乎在抱怨额外的参数。 -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 标志
  • 会话完成后清理它

【讨论】:

  • 谢谢。它看起来可以解决。但它可能会有所帮助
  • 您好 whitebear,您面临的挑战非常有趣,并且对许多 CI/CD 管道很有用,您可以在 AWS 团队的公共 SAM github 存储库上提出此功能请求。哦,顺便说一句,我也尝试过xargs,但 sam local invoke 命令由于某种原因需要一个文件。
  • 谢谢您的建议。我将在 github 中执行此操作。顺便说一句,我试试你的想法,但是我的脚本在另一个目录中,所以它尝试直接在当前找到 template.yml。 Error: Template file not found at /Users/whitebear/MyCode/myproj/template.yml 。因为,我的目的是试图从另一个 django 目录中撤销 lambda 函数
  • 只需添加代码更改template.yaml文件所在的目录兄弟。
猜你喜欢
  • 2022-01-22
  • 2018-11-25
  • 1970-01-01
  • 2018-02-01
  • 2019-08-27
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多