首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HelloWorld未从标准输入中读取事件

HelloWorld未从标准输入中读取事件
EN

Stack Overflow用户
提问于 2020-01-18 01:01:13
回答 2查看 290关注 0票数 1

我想让SAM CLI从标准中读取事件。

1中,我应该能够:

sam local generate-event s3 [put/delete] --bucket <bucket> --key <key> | sam local invoke <function logical id>

这意味着我应该能够从命令行调用我的lambda,方法是将一个事件通过管道传输到sam local invoke的STDIN中

好吧,以这个为例:

代码语言:javascript
复制
# CREATE A HELLO_WORLD SAM PROJECT
sam init \
  --no-interactive \
  --name sam-read-stdin \
  --runtime python3.7 \
  --dependency-manager pip \
  --app-template hello-world

cd sam-read-stdin

# FORCE THE LAMBDA TO PRINT THE EVENT
sed 's/#     raise e/print\("EVENT %s" % event\)/' -i hello_world/app.py

# BUILD INSIDE DOCKER CONTAINER
sam build --use-container

# INVOKE USING THE STDIN PIPE
sam local generate-event apigateway aws-proxy | \
  sam local invoke HelloWorldFunction

# ALWAYS PRINTS THIS RESULT
# EVENT {}

我需要做什么才能使打印输出的EVENT {}不是来自sam local generate-event

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-07 01:57:59

在aws-sam的第31版中,他们更改了从标准输入读取事件的语法。您现在需要这样做:

代码语言:javascript
复制
sam local generate-event s3 [put/delete] --bucket <bucket> --key <key> | sam local invoke <function logical id> -e -

注意末尾的"-e -“。

请参阅https://github.com/awslabs/aws-sam-cli/releases/tag/v0.31.0

票数 2
EN

Stack Overflow用户

发布于 2020-01-18 01:16:36

一种“解决方案”是只添加一个额外的使用-e <event.json>的中间步骤

代码语言:javascript
复制
sam local generate-event apigateway aws-proxy > test-event.json

sam local invoke HelloWorldFunction -e test-event.json

rm test-event.json

# THIS WORKS THE WAY I WANT STDIN TO WORK
# EVENT {'body': 'eyJ0ZXN0IjoiYm9keSJ9', 'resource':...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59791822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档