行业资讯

AWS Lambda@Edge

2023-08-25 10:51  浏览:

Lambda@Edge 是 AWS Lambda 计算服务的补充,用于自定义 Cloudfront 提供的内容。

显示 AWS Lambda 与来自 AWS 的 cloudfront 的工作的框图如下所示-

Block Diagram Cloudfront

AWS Lambda 有四种使用方式-

查看器请求- 最终用户向 CloudFront 发出名为"查看器请求"的请求源请求- CloudFront 将请求转发到源源响应- CloudFront 从源接收响应查看者响应- CloudFront 将响应发送给查看者

我们可以将 Lambda@Edge 用于以下目的-

在请求和响应时更改标头。将 cookie 详细信息添加到标题中。根据请求和响应执行 AB 测试。根据标题详细信息将 URL 重定向到另一个站点。我们可以从标头中获取用户代理并找出浏览器、操作系统等的详细信息。

要求

要开始使用 CloudFront 和 Lambda@Edge,我们需要以下内容-

使用文件详细信息创建 S3 存储桶创建允许使用 CloudFront 和 Lambda@Edge 的角色创建 CloudFront 分配创建 lambda 函数向 cloudfront 添加 lambda 函数详细信息在浏览器中检查 cloudfront url

我们将使用 CloudFront 和 Lambda@Egde 处理一个示例,其中我们将托管页面并在检测到桌面和设备时更改响应。

使用文件详细信息创建 S3 存储桶

登录 AWS 控制台并在 S3 中创建一个存储桶并添加 。 html 要显示的文件。

存储桶

点击 S3和 创建存储桶,如下所示-

Amazon S3

现在,单击 创建存储桶按钮并添加存储桶的详细信息,如下所示-

创建存储桶按钮

点击 创建按钮并上传其中的 .html。

上传 Html

创建角色

转到 AWS 控制台并单击 IAM。

Security

现在,点击 Roles-> Create role 按钮,如图所示-

创建角色仪表板

为 S3、Lambda 和 Cloudfront 选择权限。创建策略只允许使用 ARN 详细信息存储所需的功能是一种很好的做法。

在下面讨论的示例中,我们显示了 完全访问权限。如上所示,添加了角色名称 role for cloudfront 的策略。点击创建角色。

完全访问权限

 

Role Cloudfront

lambda@edge 和 cloudfront 所需的所有策略如上所示。这里还有一个额外的步骤要完成,因为在 cloudfront 的情况下,url 将跨区域可用,并且它需要我们使用的服务之间的信任关系。

现在,对于创建的角色,点击 信任关系标签,如图所示-

Relationship

点击 编辑信任关系,如下图所示-

编辑信任关系

它显示一个策略文档。我们需要在我们计划使用的 Principal-> Service 中添加其他服务。最终的信任关系政策文件如下图所示-

最终信任关系

点击 更新信任策略按钮保存更改。

创建 CloudFront 分配

转到 CloudFront 服务,如下所示-

创建 Cloudfront

点击 CloudFront 服务,然后点击 创建分配-

创建分发

来源设置、行为设置和分发设置

让我们一一研究这些设置-

原点设置

Origin Settings

Origin 设置的各种参数解释如下-

Origin Domain Name- 这是我们存储 html 文件的 S3 存储桶的名称。我们还可以通过创建我们选择的文件夹将图像(如果有)存储在 S3 存储桶中。

Origin Path- 在这里您需要输入存储文件的文件夹的名称。目前我们没有这个文件夹,所以暂时留空。

原点ID - 在选择原始域名时填充。您可以根据自己的选择更改 ID。

限制存储桶访问- 在此,我们将选择选项 是。在这里,我们需要 S3 存储桶的安全性,以便没有人可以访问 S3 存储桶。对于此选项,还填充了更多选项,例如 Origin Access Identity、Comment 和 Grant Read Permission on Bucket。

Origin Access Identity- 我们使用了创建新的身份选项。您还可以选择现有身份。这会创建一个新身份,CloudFront 使用该身份从 S3 存储桶中读取详细信息。

存储桶的大读取权限- 为此,选择选项 是。

Origin 自定义标题- 我们将此处的标题留空,因为我们现在不需要详细信息。

接下来,让我们讨论并填写 Cloudront 分发的 行为设置-

行为设置

现在,选择协议-https 或 http,以及缓存选项。请注意,默认缓存是 86400 或 24 小时。您可以根据需要更改此值。

单击 对象缓存(自定义选项)以更改缓存。如果您的页面上有任何视频,您可以使用 流畅流式传输。在这里,我们保持默认选项可用。创建 lambda 函数后,将添加其详细信息。

分发设置的详细信息如下所示-

对象缓存

分布设置的各种参数解释如下-

价格等级- 它包含用户流量来源等详细信息。请注意,这里我们选择了默认值- 使用所有边缘位置。

AWS WAF Web ACL- 这是用于 Web 应用程序防火墙选择。在这里,它的选项为 无。首先,我们需要在 AWS 中创建防火墙。它为网站提供安全保障。

备用域名- 如果有,您可以在此处指定域名。

SSL 证书- 这包含要为 SSL 证书选择的所有详细信息。我们将保留默认的。

默认根对象- 这里我们将指定我们在 S3 中上传的文件名。为此,我们需要默认显示 .html 中的内容。

其余的,我们将保持默认设置。

点击 创建分配按钮添加分配。

Cloudfront Distribution

请注意,分发将需要一些时间才能显示已部署状态。

创建 AWS Lambda 函数

转到 AWS 控制台并创建 Lambda 函数。

Cloudfront Function

在 AWS Lambda 代码中,我们将获取请求标头并检查用户代理。如果用户代理来自桌面,我们将更改响应以将消息显示为 "桌面:欢迎使用 Cloudfront 的 AWS Lambda!",如果设备消息将是 "移动设备:来自 Lambda@Edge,您好!"

对应的AWS Lambda代码如下图-

 

 


let content = `

<\!DOCTYPE html>

<html lang="en">

   <head>

      <meta charset="utf-8">

      <title>Simple Lambda@Edge static Content Response</title>

      <meta name="viewport" content="width=device-width, initial-scale=1.0">

   </head>

   

   <body>

      <h1>MOBILE DEVICES : Hello from Lambda@Edge!</h1>

   </body>

</html>

`;

let content1 = `

<\!DOCTYPE html>

<html lang="en">

   <head>

      <meta charset="utf-8">

      <title>Simple Lambda@Edge static Content Response</title>

      <meta name="viewport" content="width=device-width, initial-scale=1.0">

   </head>

   

   <body>

      <h1>DESKTOP : Welcome to AWS Lambda with Cloudfront!</h1>

   </body>

</html>

`;

exports.handler = (event, context, callback) => {

   let request = event.Records[0].cf.request;

   let finalrequest = JSON.stringify(request);

   let headers = request.headers;

   let useragent = JSON.stringify(headers["user-agent"][0].value);

   let str = "";

   if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(useragent)) {

      str = content;

   } else {

      str = content1;

   }

   const response = {

      status: "200",

      statusDescription: "OK",        

      body: str+useragent,

   };

   callback(null, response);

};

 

 

现在,保存 Lambda 函数。请注意,我们需要发布 Lambda 函数,以便它可以用于所有区域。要发布,我们需要执行以下操作-

从操作下拉列表中,选择 发布新版本,如下所示-

发布新版本

如果您点击 发布新版本,它会显示以下屏幕-

发布最新版本

现在,输入版本描述并点击 发布。 ARN 将显示创建的 AWS Lambda 函数的版本,如下所示-

版本说明

将 CloudFront 触发器添加到创建的新版本,如下所示-

Cloudfront 触发器

现在,添加 CloudFront 的配置详细信息。 CloudFront 事件具有用于 查看者请求、源请求、源响应和 的选项观众反应。

接下来,选择之前创建的 CloudFront 分配。从 事件中,我们将选择 查看者请求。根据查看器的请求,将决定来自用户代理的桌面/设备并更改响应。接下来,添加触发器详细信息。

查看器请求

添加触发器后,我们需要等待 CloudFront 的分配部署完毕。

Cloudfront 部署

状态更改为 已部署后,我们可以测试CloudFront url并在浏览器中检查域名。

桌面浏览器显示如下图。在这里,我们打印了查看者请求事件中的用户代理。

桌面浏览器

这是移动设备中的显示。

移动设备

因此,在上面的示例中,我们使用 Lambda@Edge 更改桌面和移动设备上的响应。

作为AWS顶级代理商,选择天.下.数.据的优势

1、专属客服协助注册AWS,或提供注册好的账号直接使用

2、支持收U等多币种支付代付,无额外服务费用

3、AWS多种产品类型,更高产品租赁权限

4、针对大客户,AWS专属折扣优惠

5、7x24小时专属客服,在线解答各种疑问

详询电话40 0-63 8-88 08 官网:https://www.idCbest.com/2023/aws.asp

【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015

下一篇:Amazon CloudWatch 监控和故障排除 上一篇:使用 AWS lambda 函数自定义程序来处理用户事件
24H服务热线:4006388808 立即拨打