HelloWorld 未从 STDIN 读取事件
HelloWorld not reading event from STDIN
我想让 SAM CLI 从标准输入中读取事件。
从 1 我应该能够:
sam local generate-event s3 [put/delete] --bucket <bucket> --key <key> | sam local invoke <function logical id>
这意味着我应该能够通过将事件输送到 sam local invoke
的 STDIN 来从命令行调用我的 lambda
嗯,举个例子:
# 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
?
提前致谢!
一个 "solution" 是添加一个额外的中间步骤,使用 -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':...
在 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
我想让 SAM CLI 从标准输入中读取事件。
从 1 我应该能够:
sam local generate-event s3 [put/delete] --bucket <bucket> --key <key> | sam local invoke <function logical id>
这意味着我应该能够通过将事件输送到 sam local invoke
嗯,举个例子:
# 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
?
提前致谢!
一个 "solution" 是添加一个额外的中间步骤,使用 -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':...
在 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