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

用于多种服务的无服务器AWS同层

柳奇思
2023-03-14

我对AWS和serverless相当陌生,到目前为止,我一直在使用lambda函数和层。

我们有两项服务:

lambda1.yml

service: lambda1
provider: ...
functions:
 hello: 
  handler: ...
  name: ...
  layers:
   - { Ref: GlobalLambdaLayer }

layers:
  global:
    path: global_layer

λ2.yml

service: lambda2
provider: ...
functions:
 hello: 
  handler: ...
  name: ...
  layers:
   - { Ref: GlobalLambdaLayer }

layers:
  global:
    path: global_layer

当我使用'sls deploy--config lambda1'部署lambda1时。yml’,该层被上传并成功分配给lambda1函数

但是,当我使用“sls deploy--config lambda2”部署lambda2时。yml’,无服务器上传并创建新层。它不会重用从lambda1上传的文件。

根据我的研究,这是正确的,因为每个lambda函数都在不同的服务中声明。

我的问题是。我的研究正确吗?

我知道我可以创建一个单独的服务来保存我的层并与两个lambda共享,如下所述:

https://forum.serverless.com/t/layers-upload-on-each-deploy/6634/3

尽管如此,我还是很好奇,有没有其他方法可以做到这一点?我不能把两个lambda放在同一个服务中。它们需要独立并共享同一层。

非常感谢。

共有1个答案

齐昆
2023-03-14

正如我所看到的,您声明了层:在创建两个不同层的两个文件中,但层的目的是抽象,并在函数之间重新使用共享代码。所以在lambda2中。yml无需重新创建层,只需告诉函数使用已在lambda1中创建的层即可。yml对于lambda2也是如此。yml代码应为:

service: lambda2
provider: ...
functions:
hello: 
 handler: ...
 name: ...
 layers:
   - { Ref: GlobalLambdaLayer }
 类似资料:
  • 尝试使用cloudformation创建ECS服务(在Fargate上),但出现错误: ARN中的服务无效(服务:AmazonECS;状态代码:400;错误代码:InvalidParameterException;请求ID:xxx)。 根据错误消息,似乎有些ARN是错误的,但我没有找到原因,我检查了IAM角色的ARN并确定了。其他ARN都通过了!Ref函数(因此不是输入错误) 创建所有资源(包括来

  • 多个同步服务器 Since you have full control of express instance lifecycle, it's not a problem to create a few multiple simultaneous servers (e.g. both HTTP & HTTPS). Example: 因为你已经可以完全控制express实例的生命周期了,所以创建多个

  • 我可以在我自己的电脑上使用这个程序,但是我不能在服务器上使用。 服务器使用最高权限管理员打开程序。 具有的服务器WCF HTTP激活功能。NET4。5号门开着。 服务器endpoint地址使用"http://localhost",如下所示 endpoint地址="http://localhost"绑定="basicHttpBind"bindingConfiguration="NewBinding0

  • 目前,我的java应用程序在多个服务器中运行。我有一个数据事务遇到死锁。我尝试使用线程和同步,但徒劳无功,因为多个服务器中有多个应用程序实例。每个应用程序实例都同步了其数据事务,但同一数据库上的不同同步应用程序事务恰好使数据库陷入死锁状态,因为对于所有应用程序实例,数据库是相同的,并且是一个。 在这种情况下,请提出正确的方法。任何高级解决方案也就足够了。

  • 我是否可以将订购系统事件放到AWS Kinesis中,并在命令端服务中为客户监听?我是否应该将AWS Kinesis中的事件(orderCreated和OrderPayed event)持久化到客户命令端服务中的数据库?或者只更新客户查询端服务可以吗?我应该使用AWS Lambda作为事件处理器吗?你能给我一些这种模式的最佳实践吗? 提前谢了。

  • 我正在使用谷歌服务帐户将MySQL备份从我们的网络服务器推送到谷歌云端硬盘,使用谷歌API PHP客户端脚本设置为cron作业。 我现在想在多个网络服务器上运行相同的脚本,我不知道如何正确配置服务号,应该吗? > 是否在所有服务器上使用相同的服务帐户和服务帐户密钥/凭据? 或者使用相同的服务帐户,但为每个服务器添加服务帐户密钥/凭据? 还是为每台服务器设置单独的服务帐户?