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

Deploying lambda function using serverless framework

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

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

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

至于 API 网关,如果你想使用现有的 API 网关资源(虽然没有真正的必要,因为除非有流量通过它们,否则它们不需要任何费用),你可以通过在 serverless.yml 中引用其 REST API ID 和根资源 ID,在多个项目之间共享相同的 API 网关,如下所示:

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