使用无服务器框架部署 lambda 函数

时间:2021-08-01 23:08:04

标签: amazon-web-services serverless-framework serverless

我已经使用无服务器框架成功部署了我的 lambda 函数(在 Nodejs 运行时中)
问题是 serverless deploy 还创建了一堆我不想要的 AWS 服务,例如:

  • API 网关 - 我没有,因为我已经有了自己的 API 网关
  • S3 存储桶 - 我不需要查看蚂蚁输出日志
  • CLoudwatch - 我不需要查看任何日志,因为我们拥有日志基础架构

问:有没有办法告诉无服务器只部署 lambda 函数? (或者至少避免 API 网关)

1 个答案:

答案 0 :(得分:1)

无服务器框架创建一个 S3 存储桶,作为将您的服务导入 AWS 的一种方式。它没有尝试直接推送到 Lambda 服务,而是将其打包成一个 zip,上传到 S3,然后指向该 S3 存储桶,以便部署过程知道在哪里可以找到东西。您可以指定自己的 S3 存储桶,用于存储所有部署工件。嵌套在 provider 下的 deploymentBucket 配置允许您例如为此存储桶设置名称或 serverSideEncryption 方法。如果您不提供自己的存储桶,Serverless 将创建一个使用默认 AES256 加密的存储桶。

至于 API 网关,如果您想使用现有的 API 网关资源(实际上不需要,因为它们不需要任何费用,除非有流量通过它们),您可以通过引用在多个项目之间共享相同的 API 网关serverless.yml 中的 REST API ID 和根资源 ID 如下:

service: service-name
provider:
  name: aws
  apiGateway:
    restApiId: xxxxxxxxxx # REST API resource ID. Default is generated by the framework
    restApiRootResourceId: xxxxxxxxxx # Root resource, represent as / path
    websocketApiId: xxxxxxxxxx # Websocket API resource ID. Default is generated by the framework
    description: Some Description # optional - description of deployment history

functions: ...

您应该至少在基本级别重新考虑使用 CloudWatch。这是您可以从函数中获取输出的唯一方法,除非您绑定了一个发出 API 请求的服务,这会增加您的服务的延迟。 CloudWatch 不会增加延迟(或至少小到可以忽略不计)。但是,如果您确实必须关闭 CloudWatch,则无法阻止它在 ClouWatch 中创建日志组,但您可以将日志的存活时间限制为 0 或少量天数:

provider:
  logRetentionInDays: 0