AWS SAM 中的 event.json 是啥?
Posted
技术标签:
【中文标题】AWS SAM 中的 event.json 是啥?【英文标题】:What is an event.json in AWS SAM?AWS SAM 中的 event.json 是什么? 【发布时间】:2022-01-22 13:09:45 【问题描述】:完成本教程https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html 后,您下载 AWS SAM CLI 并运行命令以创建简单的 AWS hello-world 应用程序。当您运行程序时,它会触发 AWS 调用的 lambda 函数,在教程结束时,您可以在浏览器的 url 窗口中使用:http://127.0.0.1:3000/hello 打开它,如果您在此处看到显示大括号和单词的消息'hello-world' 表示成功。
运行 AWS SAM 命令会生成很多样板代码,这有点令人困惑。这一切都可以在代码编辑器中看到。其中一个叫做 event.json,它当然是一个 JSON 对象,但为什么会存在呢?它代表什么与这个程序有关?我试图了解这个 AWS SAM 应用程序最终在做什么以及生成的文件在此处的含义和代表。
有人可以简单地分解一下 AWS SAM 正在做什么以及它生成的样板代码背后的含义吗?
谢谢
【问题讨论】:
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。 【参考方案1】:event.json 包含您的 lambda 函数将以 json 格式获取的输入。无论 lambda 是如何触发的,它总是有 2 个固定参数:Event 和 Context。 Context 包含有关触发器等源的附加信息,而 Event 包含您的 lambda 需要运行的任何输入参数。
您可以通过编辑 event.json 并提供自己的值来自行测试。如果你打开 lambda 代码文件,你会看到这个事件对象在 lambda_handler 中被使用。
其他样板文件是您的模板,您可以在其中定义 lambda 的配置以及您可能使用的任何其他服务,如层、数据库或 API 网关。 您还将获得一个 requirements.txt 文件,其中包含您的函数所需的任何第三方库的名称。这些将与代码一起打包。
【讨论】:
非常感谢。如果我理解正确,lambda 函数是事件驱动的编程。例如,如果发生诸如上传到 S3 之类的事情,我们可以有一个 lambda 函数在发生这种情况时执行某些操作。一个 lambda 总是接受两个参数,一个事件是一个从 JSON 格式的字符串格式化的对象,它呈现动作/触发器(如上传到 S3)。以及上下文,它提供有关 lambda 的调用函数和执行环境的信息,因此您可以使用它来检查内存分配或执行速度等内容。这是正确的吗? 正确。事件和上下文都是字典/对象。对于 s3,它将传递密钥、版本 ID、存储桶等,您可以使用它们来获取触发 lambda 的对象。 谢谢!我在 IDE 上看到它说 event 是 dict (JSON) 类型,然后是 API Gateway Lambda proxy Input Format,contaxt 是 object 类型,然后是运行时方法和属性。我看到有很多文件,例如:事件、hello_world 和测试,并且在测试内部有一个集成和单元文件以及几个 __init__.py 文件(其中 5 个)你能解释一下这是什么吗?跨度> init.py 更像是一个方便的东西,而不是 sam 需要的东西。如果你愿意,你可以摆脱它。您可以在这里了解更多信息:***.com/questions/448271/what-is-init-py-for 单元测试也是可选的。您可以使用 pytest 定义自己的测试。它不是特定于 sam 的,而是额外的 biolerplate 东西,如果你愿意,你可以摆脱它们。或者您可以编写将在部署应用程序之前运行的单元测试。以上是关于AWS SAM 中的 event.json 是啥?的主要内容,如果未能解决你的问题,请参考以下文章
aws CI/CD 工作流程的最佳路径是啥? Cloudformation、SAM 还是无服务器框架?
AWS SAM :: AWS::Serverless::Api“'Auth' 属性的值无效”
我能否在 SAM 模板中使用 AWS Cloud Formation 资源语法,反之亦然?