我已经使用无服务器框架成功部署了我的 lambda 函数(在 Nodejs 运行时中)
问题是 serverless deploy
还创建了一堆我不想要的 AWS 服务,例如:
问:有没有办法告诉无服务器只部署 lambda 函数? (或者至少避免 API 网关)
答案 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