如何构建Serverless框架应用程序?

问题描述 投票:0回答:1

所以,我是无服务器的新手,一直在尝试为我的项目创建一个无服务器后端,并在组织事物的最佳方式上绞尽脑汁。最初,我想这样布局:

|--src
|    |--auth-service
|    |--products
|    |--customers
|--package.json
|--serverless.yml

但是,我很快意识到一个问题——

node_modules
文件夹。例如,auth 部分需要
bcrypt
包,而客户部分则不需要。将相同的node_modules文件夹部署到每个功能都包含不必要的包。
因此,我想出了一个不同的游戏计划:

|--customers
|    |--node_modules
|    |--handler.js
|    |--package.json
|    |--serverless.yml
|--products
|    |--node_modules
|    |--handler.js
|    |--package.json
|    |--serverless.yml
|--auth-service
|    |--node_modules
|    |--handler.js
|    |--package.json
|    |--serverless.yml

这里,node_modules文件夹不是全局的,而是范围仅包含每个功能所需的包。

通过此设置,我必须通过在每个文件夹中运行

serverless deploy
来进行部署。

  • 问题1)
    仍然存在一个挑战 - 如何将“auth-service”(具有检查 JWT 的功能)配置为各自 serverless.yml 文件中“客户”和“产品”功能的授权者?我最初的想法是使用 ARN 作为 auth 功能,并将其设置为所有其他功能的授权者,但我不确定这是否是一个好方法

  • 问题2)
    有没有更好的方法来构建项目,特别是因为现在部署资源很痛苦,例如,如果我想要一个 dynamodb 表,我不应该将其定义为特定函数 serverless.yml 文件中的资源,对吧?那么有没有一种方法可以捆绑所有这些不同的服务,并且也许可以在集中的地方定义资源。

aws-lambda serverless serverless-framework aws-serverless serverless-architecture
1个回答
0
投票

以下是我通常做的实践,不确定这是否是最佳实践,因为最终这是一个意见

  1. 我就是这样做的。如果我有一个共享资源(例如授权者),我会在不同的服务中创建它,然后在不同的服务(例如您正在执行的操作)中引用它。所以我认为你这样做的方式很好

  2. 如果您的意思是定义共享资源的最佳位置是什么,我也会将其放在服务中不被频繁触及(修改/重新部署)的位置,只是为了安全起见,没有人会进行任何修改可能会打破它。不过,如果有的话,我会将其放置在尽可能靠近与其相关的服务的位置。

您可能需要研究 serverless-compose,它可以帮助您一次部署多个服务,而不是在每个服务中运行 sls deploy 并一起协调部署

© www.soinside.com 2019 - 2024. All rights reserved.