【问题标题】:Displaying private HTML file from AWS S3显示来自 AWS S3 的私有 HTML 文件
【发布时间】:2017-08-08 12:37:48
【问题描述】:

我目前在 AWS S3 上托管一个静态网站。我有部分网站只希望经过 AWS Cognito 身份验证的用户访问。 S3 存储桶的这些部分仅限于某些角色。据我了解,一旦 Cognito 用户收到他们的临时 AWS 凭证,我需要使用 S3 sdk 从 S3 加载受限对象 (index.html) 并将其显示在网页中。这是正确的方法吗?一旦我从 S3 取回对象,我该如何将其加载到网页中?谢谢!

【问题讨论】:

  • “网站的某些部分”是什么意思?您是指像图像这样的元素,还是指 HTML 页面?例如,“从 S3 加载受限对象(index.html)并在网页中显示”是什么意思?您是否打算拥有任何 Amazon EC2 实例或使用任何 AWS Lambda 函数来处理您的应用程序和安全逻辑?
  • 所以我所有不同的 index.html 文件都托管在 AWS S3 上。当用户单击我网站中的某个链接时,我想将页面更改为不同的 index.html。但是,当单击此链接时,他们的凭据得到验证,然后我需要确保他们具有访问该网页的适当权限。验证权限后,我想将新的 index.html 加载为当前页面。我希望这能解决问题!

标签: html amazon-web-services amazon-s3 amazon-cognito


【解决方案1】:

您将需要在后端运行的应用程序逻辑来控制您的安全性并存储/检索数据。虽然其中大部分可以通过浏览器完成,但它对黑客攻击是开放的。因此,您需要后端的访问控制逻辑。

选项 1:API 网关和 Lambda 函数

您可以使用 Amazon S3 提供静态网页,该网页通过 API Gateway 对 Lambda 函数进行 API 调用。这称为无服务器模型

这是来自Serverless Code website 的示例图:

基本上,Lambda 函数接收请求,确定用户是否被授权,确定他们将收到什么返回(例如,到不同页面的预签名 URL)并将其发送回网页。这种设计的好处是它不需要任何服务器。

选项 2:Amazon EC2 服务器

或者,您可以运行以弹性负载均衡器为前端的 Amazon EC2 实例。这是传统的应用程序设计,允许您使用许多不同的框架。但是,即使没有人使用您的应用程序,服务器也会持续产生成本。

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2016-08-27
    • 2012-05-16
    • 2018-08-05
    相关资源
    最近更新 更多