当前位置: 首页 > 知识库问答 >
问题:

无服务器框架、yaml和AWS lambda/DynamoDB概念

商德泽
2023-03-14

我最近探索了serverless,我想为我的应用程序创建一个“简单”的后端。它应该像CRUD连接到DynamoDB,就像这里很好地显示的那样。然后转换成使用Cognoto记录用户。链接1和链接2(

在我的实施过程中,我遇到了一些问题,我想请您帮助,因为我不喜欢使用我只复制的东西,也不知道它是如何工作的:

>

为什么我不需要设置CORS(标头)时初始化lambdas与无服务器,而不是在亚马逊控制台中创建的lambda函数(像这里)?

在无服务器框架中,函数之间的区别是什么。事件。http功能。事件。httpapi

Serverless.yml有去YAML的指南吗?我知道亚马逊编写用户指南和模板,如AWS::IAM::角色或迪纳摩表等。资源也形成了云,但是当我创建/编码Lambda函数时,它们在那里列出的目的是什么?参考它们?给他们加特权?

还有,引用是如何工作的?我是否只指定应该创建的资源,还是可以通过ARN引用已有的资源?如果是,怎么做?

策略是否仅像文档显示一样全局设置,或者唯一的其他选项是每个函数使用插件服务器iam角色?同样的问题也适用于资源中的角色和策略。

我只是被文档和所有不同的指南弄得不知所措,有时找不到正确的答案。我很感激你能回答我的任何问题!我喜欢无服务器功能,看到了它的巨大潜力,因此希望获得更多关于它的知识,并开始更多地使用它:)

干杯并提前感谢卢卡斯!

共有1个答案

那绪
2023-03-14

这里有很多,但我将尝试在高层次上解决这些问题。如果您有后续问题或需要更深入的回答,我建议您发布一个不同的StackOverflow问题,重点关注细节。如果你的问题集中且简洁,你更有可能获得更多的社区参与。

在lambda函数中使用回调vs返回请你能描述这两者之间的区别吗?我已经找到了一些关于这个的资源,但是,他们不会为我清除它。在Amazon Docs和这里堆栈溢出。

差异归结为异步和同步处理程序。我不认为我能比你链接的资源更好地解释这种差异。然而,我要说的是,这取决于个人偏好。

您可以使用任何一种方法实现lambda,这取决于您的个人喜好。您喜欢管理回调还是更喜欢使用async/await?

为什么我不需要设置CORS(标头)时初始化lambdas与无服务器,而不是在亚马逊控制台中创建的lambda函数(像这里)?

无服务器堆栈演示将CORS响应整齐地放入助手方法中。看起来你在这里用。在lambda中调用此方法时,您正在设置CORS头。

在无服务器框架中,函数之间的区别是什么。事件。http和函数。事件。httpapi?

函数。事件。http指的是API网关的REST API产品(APIG v1)<代码>函数。事件。httpapi指API网关HTTP API产品(APIG v2)。

您可以在这里阅读RESTAPI和HTTP API产品之间的差异。

Serverless.yml有去YAML的指南吗?我知道亚马逊编写用户指南和模板,如AWS::IAM::角色或迪纳摩表等。资源也形成了云,但是当我创建/编码Lambda函数时,它们在那里列出的目的是什么?参考它们?给他们加特权?

将提供程序设置为aws时,无服务器框架文档有serverless.yml选项的指南。serverless.yml文件是对Cloud形成的抽象。这个想法是serverless.yml比冗长的云形成更容易写。您将在serverless.yml中定义函数,以便在AWS中创建/配置lambdas。例如,这是你serverless.yml的片段

functions:
  login:
    handler: login.login
    name: my-login-function
    memorySize: 128
    description: Function that log user.
    events:
    - httpApi: 
        path: /login
        method: post

这将在AWS中使用您在login.js文件中编写的代码创建lambda。它还设置内存大小,并在后面设置一个API网关HTTP API终结点 /login.您可以查看从. serverless目录中的serverless.yml文件创建的Cloud形成模板。这是......很多。

我是否只指定应该创建的资源,还是可以通过ARN引用已有的资源?如果是,怎么做?

无服务器文档给出了如何指向现有APIendpoint的示例。

 apiGateway: # Optional API Gateway global config
    restApiResources: # List of existing resources that were created in the REST API. This is required or the stack will be conflicted
      '/users': xxxxxxxxxx
      '/users/create': xxxxxxxxxx

策略是否仅像文档显示一样全局设置,或者唯一的其他选项是为每个函数使用插件无服务器iam角色?同样的问题也适用于资源中的角色和策略。

我不确定我是否理解这个问题。总的来说,我建议花些时间阅读什么是IAM?来自无服务器堆栈网站。它在涵盖IAM用户/角色/策略/组等方面做得非常出色。

 类似资料:
  • 我已经到处找了,我一辈子也找不到服务器来安装dynamodb触发器。 我使用了: 我尝试了一个硬编码的arn,没有发生任何事情,我可以在aws控制台上看到。我是新服务器。如果你有任何建议,请张贴。

  • 我对计划中的应用程序的设计有一点问题,特别是数据库引擎和无服务器/非无服务器。目标是一个通过RESTAPI与数据库对话的Web应用程序。RESTAPI本身实际上只是CRUD操作,因此在我看来,无服务器aproach(AWS Lambda)非常适合。因此,最有效的数据库可能是DynamoDB(NoSQL)。 我熟悉RDBMS,对NoSQL数据库知之甚少。 应用程序的模式尚未完成,应该可以在以后进行扩

  • 如您所见,我正在使用codePipeline和codeBuild自动化部署。我的后端基于无服务器框架,它在触发命令时部署lambda函数。这就是我没有使用codeDeploy进行传统部署的原因<代码>构建规范。yml文件如下所示: 现在,我有3个关于CodeBuild和Serverless的问题: 问题1:命令依赖于一个名为的文件,其中包含数据库密码等秘密。此文件将不会被签入git。你认为在cod

  • 我正在尝试部署一个简单的Slack lambda api,它使用库从特定通道中删除成员和固定消息。我遇到的问题是函数没有问题地执行,并且它没有问题地删除通道成员,但是我的Lambda函数不断返回: 作为反应体。当我使用检查日志时,也没有看到任何错误。我看到我的函数的console.log成功执行。 null 为什么会出现此错误,以及如何解决此错误? 在处理程序函数中引用了这一点之后,我使用了。使用

  • awsquiestID(S) ttl(N) createdate(S)(ISO) user_id(S) 消息(S) 我想有一个全局二级索引,这样我就可以查询过滤用户的所有消息,我让他们排序(使用排序键),如https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html 出现错误:EventsTable-属性Attr

  • 我对Dynamodb和非关系型数据库世界非常陌生。我正在练习AWS的和。我使用的是无服务器框架。我拆分我的处理程序多个lambda函数。我想创建我的数据,在那里我可以看到所有的餐馆和他们有什么类型的啤酒的价格。我还想查询所有没有价格的啤酒。我成功创建了餐厅,它的分区键是。我可以得到所有餐馆的数据。但是我坚持啤酒逻辑。我为啤酒创建了像这样的apiendpoint餐厅/{id}/createBeers