【问题标题】:Dynamic Website using AWS使用 AWS 的动态网站
【发布时间】:2018-01-30 06:55:21
【问题描述】:

我想使用 AWS 无服务器托管一个动态网站。我计划使用 Lambda、API Gateway、DynamoDB 和 S3。我的前端页面将驻留在 S3 中。阻碍是会有一些动态项目,如用户名和其他元数据,这些都是用户特定的。到目前为止,我知道我们能做的最好的事情就是从 S3 中提取 html 页面。然后我该如何继续并在这些页面中包含这些变量?

我会在 NodeJS 中编写 lambda。

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 lambda


    【解决方案1】:

    您的 HTML(静态页面)应包含所有输入字段(在您的情况下为用户名和元数据)。您可以使用任何 clide 端 javascript 库从这些输入字段中获取值。即使您可以使用经典的 JavaScript(如 document.getElementById )从输入字段中获取值,但这将是一种非常古老的方式,即使它有效。一旦您获取所需的值,您就可以从中组合 Json 来调用 lambda通过 API 网关运行。尽管 S3 仅支持静态网站托管,但您可以在 HTML 中编写 JavaScript 代码,这不会被视为动态的(如 C#、Java 等)。

    简而言之,您可以通过 JavaScript 在您托管在 S3 中的静态页面中实现任何目标,并以您的 Api 网关/Lambda 期望的方式编写正确的 Json。

    【讨论】:

      【解决方案2】:

      您提到的对用户名和其他元数据等动态项目的拦截器。您可以使用 AngularJS 或其他框架来处理应用程序中的动态变量。

      您还可以使用 AWS Cognito 进行身份验证。

      【讨论】:

        【解决方案3】:

        对于您描述的无服务器网站,您需要区分静态内容和动态内容。

        HTML 页面、Javascript 文件、CSS 等静态内容可以托管在 S3 存储桶中。

        对于动态项目,您可以使用 Javascript 或任何 JS 框架,并使用它与几个返回动态数据的 lambda 交互。 这些 lambda 可以附加到 API 网关。

        如果您想在数据库中存储和检索数据,您可以使用 DynamoDB 或 RDS 实例,这样您就不需要管理任何服务器

        如果只是关于身份验证,您可以使用 AWS Cognito。

        【讨论】:

          【解决方案4】:

          AWS S3 适用于前端,以 Angular 为例。

          对于 api,我在 Aws ECS 的 docker 容器中使用 nodejs。

          【讨论】:

          • 动态网站依赖于多个 url。 Angular 用于单页应用程序
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-07-15
          • 2015-02-15
          • 1970-01-01
          • 1970-01-01
          • 2011-07-06
          • 1970-01-01
          • 2018-09-14
          相关资源
          最近更新 更多