【问题标题】:Handle an S3 'miss' with a lambda using serverless framework使用无服务器框架处理带有 lambda 的 S3 'miss'
【发布时间】:2022-01-20 10:55:51
【问题描述】:

注意架构设计(取自此已弃用的 AWS 文档页面: https://aws.amazon.com/blogs/compute/resize-images-on-the-fly-with-amazon-s3-aws-lambda-and-amazon-api-gateway/)

描述每个步骤:

  1. 用户通过其静态资源从 S3 存储桶请求调整大小的资产 网站托管端点。存储桶有一个路由规则配置为 重定向到调整大小 API 对无法被调整的对象的任何请求 找到了。
  2. 由于存储桶中不存在调整大小的资产, 请求被临时重定向到 resize API 方法。
  3. 用户浏览器跟随重定向,通过API请求resize操作 网关。
  4. API 网关方法配置为触发 Lambda 处理请求的函数。
  5. Lambda 函数下载 来自 S3 存储桶的原始图像,调整它的大小,然后上传调整大小的 图像作为最初请求的密钥返回存储桶。
  6. 当 Lambda 函数完成时,API Gateway 会永久重定向用户 到存储在 S3 中的文件。
  7. 用户的浏览器请求 来自 S3 存储桶的现已调整大小的图像。后续请求 从此和其他用户将直接从 S3 服务并绕过 调整大小操作。如果将来删除调整大小的图像, 重复上述过程,重新创建调整大小的图像, 替换到 S3 存储桶中。

第 3-7 步感觉有些简单...但是如何获得 S3 存储桶来配置路由规则以重定向“丢失的对象”?

具体来说,这需要在 serverless 框架中完成。

理论上,此概念的更新版本在此处的 cloudformation 模板中进行了布局:https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/template.html,但我在该模板中没有看到任何配置 S3 存储桶的代码。我更深入地关注他们的 gitlab 存储库,似乎他们正在使用 aws-sdk 进行部署? https://github.com/aws-solutions/serverless-image-handler/blob/main/source/custom-resource/index.ts

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda serverless-framework


    【解决方案1】:

    看来您可以在 S3 本身上配置重定向。 Here 是一个链接,它至少共享 3 个步骤。

    为静态网站配置重定向规则。要为已启用静态网站托管的存储桶添加重定向规则,请按以下步骤操作。

    1. https://console.aws.amazon.com/s3/ 打开 Amazon S3 控制台。

    2. 在 Buckets 列表中,选择您已配置为静态网站的存储桶的名称。

    3. 选择属性。

    4. 在静态网站托管下,选择编辑。

    5. 在重定向规则框中,以 JSON 格式输入您的重定向规则。

    6. 在 S3 控制台中,您使用 JSON 描述规则。有关 JSON 示例,请参阅重定向规则示例。 Amazon S3 的每个网站配置限制为 50 条路由规则。

    通过使用Terraform 或/和Cloud Formation 来分离配置和应用程序自动化来推荐自动化分层。

    【讨论】:

    • 我需要能够通过无服务器框架或 cloudformation 来做到这一点。我不能依赖那些不易重复的基础设施即代码解决方案的点击式解决方案。 :( 仍然——很高兴知道它可以在控制台中完成。:)
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 2022-12-09
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2021-10-07
    • 2018-09-13
    相关资源
    最近更新 更多