我想让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中
好吧,以这个为例:
# 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
提前谢谢你!
发布于 2020-02-07 01:57:59
在aws-sam的第31版中,他们更改了从标准输入读取事件的语法。您现在需要这样做:
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
发布于 2020-01-18 01:16:36
一种“解决方案”是只添加一个额外的使用-e <event.json>的中间步骤
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':...https://stackoverflow.com/questions/59791822
复制相似问题