AWS lambda 和 AWS Lambda@EDGE 有啥区别?

Posted

技术标签:

【中文标题】AWS lambda 和 AWS Lambda@EDGE 有啥区别?【英文标题】:What is the difference between AWS lambda and AWS Lambda@EDGE?AWS lambda 和 AWS Lambda@EDGE 有什么区别? 【发布时间】:2019-01-15 15:00:54 【问题描述】:

简单的 aws lambda 和 aws lambda@edge 有什么区别?

【问题讨论】:

【参考方案1】:

Lambda 根据某些触发器执行函数。 Lambda 的用例非常广泛,并且与许多 AWS 服务高度集成。您甚至可以使用它通过 AWS 的 API 简单地执行代码,并将代码与 AWS 分开接收到您的脚本中。常见用例包括简单地执行 Lambda 并接收输出、插入 API 网关以服务用户请求、在对象放入 S3 存储桶时对其进行修改等。

Lambda@Edge 是一项服务,可让您执行专门修改 CloudFront 行为的 Lambda 函数。 Lambda@Edge 只是在请求周期内运行,并做出影响 CloudFront 内容交付的逻辑决策。

https://aws.amazon.com/lambda/features/

https://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html

【讨论】:

【参考方案2】: Lambda@Edge 是响应 CloudFront 事件的 Lambda 函数。 您仍然在 Lambda 下创建 lambda@edge 函数,但 Lambda@Edge 函数必须在 us-east-1 中创建。 您需要根据查看器请求或其他请求将 lambda@edge 配置为 cloundfront 分发行为。

【讨论】:

【参考方案3】: 必须在 us-east-1 区域中创建 如果代码取自存储桶,存储桶也需要位于 us-east-1 区域中 您不能以与普通 lambda fn 相同的方式传递环境变量。您需要在构建过程中对值进行硬编码,或者对环境进行硬编码并从其他地方获取值。

【讨论】:

S3 没有区域 虽然 lambda 出现在 us-east-1 中,但它实际上已复制到所有 CloudFront 边缘位置(因此是 @edge)。 @NG 有 s3 存储桶的区域,您甚至可以在存储桶列表中找到该信息。存储桶名称是全局的,但您仍然在区域中创建存储桶。【参考方案4】:

Lambda 是一种无服务器 AWS 计算服务,允许用户将代码作为函数触发器运行。在文件处理、优化方面,很多用例。

另一方面,Lamda@Edge 是 AWS lambda 的扩展,是 cloudfront 的一项功能,允许用户在更靠近应用程序的地方运行代码,从而提高性能并减少延迟。

这是官方文档很好地描述了 Lambda@Edge https://docs.aws.amazon.com/lambda/latest/dg/lambda-edge.html

【讨论】:

以上是关于AWS lambda 和 AWS Lambda@EDGE 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 无法调用没有 VPC 的另一个 AWS Lambda - NodeJs

使用无服务器和 chrome-aws-lambda 节点包在 AWS Lambda 上找不到 Chrome 二进制文件

AWS API Gateway 默认响应和触发 AWS Lambda

从 AWS API Gateway Web 界面配置 AWS Lambda 时无法选择/查看 Lambda 函数

AWS - SQS 批量大小和 Lambda 方法

[AWS Lambda] Scheduling Events with AWS Lambda (a.k.a. Lambda cron jobs)