2017-07-16 67 views
1

我知道我可以把CloudFront的/ S3是然后调用lambda函数做的事情的东西,我知道该怎么做,但我想直接暴露lambda函数作为一个网站 - 即有一组函数生成HTML,并用浏览器打它们。是否有可能只使用亚马逊lambda来建一个网站

我特别越来越迷茫了什么是安全模式。这个“网站”会有某种“登录”非常重要 - 即不只是任何人都可以这样称呼 - 而且这与我或任何其他人的新闻凭据无关,或者依赖任何共享的秘密。

这是可能的,只是使用lambda + api网关?或lambda + cloudfront?

+0

有趣的q ..我会尽力回答它.. – Deepak

回答

3

我不知道其他的答案居然回答你的问题。他们似乎建议您使用Angular/React /构建一个单页面应用程序/无论如何,但我认为您问是否可以直接从API Gateway/Lambda提供HTML。答案是肯定的。要登录,用户就应该是这样的:

  1. 用户访问网页 - API网关呼叫登录LAMBDA呈现登录HTML
  2. 用户填写表单,提交形式方法=“POST” - API网关的地图形式数据JSON并将它传递给授权者LAMBDA,如果auth'd它可以让API网关呼叫受保护的内容lambda来获取HTML该页面
  3. API网关设置Cookie说,用户在auth'd
  4. 随后的页面浏览,API网关将Cookie传递给授权人Lambda,再次确定用户是否可以继续进行

这里看到这个职位上如何为HTML:Return Html from API Gateway

授权人lambda来处理身份验证(这一点,你可以用你想要的任何类型的认证方案):Custom Authorizers

既然你只是想使用HTML的登录表单需要通过API网关映射模板变换POST application/www-form-urlencoded数据到JSON,而不是使用Ajax调用:https://gist.github.com/ryanray/668022ad2432e38493df

如果你不使用Ajax请求你将最有可能需要使用加载数据饼干认证。关于如何在API网关中访问/设置cookie数据,请参阅以下文章:Using AWS Gateway API, can I access the cookies?

1

实际上这取决于用例。

您可使用以下AWS服务的完整动态的Web应用程序:

  • S3静态内容。例如:反应,和/角应用程序和其他应用程序的静态
  • CloudFront的作为CDN和代理。
  • API网关搭建后端的API。
  • LAMBDA为您的API资源端点的计算功能。

说到安全性,您可以使用AWS Cognito和Userpools。您可以配置您的API Gateway with cognito userpools以对用户进行身份验证和授权。如果您愿意,API网关还提供了用于编写自己的自定义授权人的功能。

开发使用上述服务的应用是作为一个合格的无服务器的应用程序。

您可以使用以下链接阅读有关无服务器的更多信息。

Building Serverless web applications

AWS doc on building a serverless web app

+0

谢谢 - 我没有把这作为接受的答案,因为我特别说我不想使用S3,但我很欣赏它,并不知道有哪些希望能做我想要的cognito! –

1

,你甚至可以不LAMBDA建立与登录支持Web应用程序使用以下服务的简单应用。

  • AWS S3(存储静态资产,如HTML,JS,CSS)
  • AWS DynamoDB(数据存储)
  • AWS Cognito(对于登录)

你甚至可以为dynamodb提供fine-grain access control只允许用户访问特定的行。主要限制之一是为多个用户属于一个组且需要组级别授权的多租户应用程序构建安全模型。另一个限制是将DNS记录直接添加到S3存储区,并将其限制为具有S3存储区名称的域。由于预检请求,COR也会降低应用程序的性能。为了解决上述限制以及更多问题,您可以额外使用以下服务。

  • AWS CloudFront的(由高速缓存删除DNS限制,CORS和Peformance改善,Web应用防火墙集成了其他安全&等)
  • AWS拉姆达(提供多租户定制授权&等)
  • AWS API网关(节流,集成&等)

添加上述服务还提供了在使用不同的数据存储机制并利用OT的灵活性她的AWS服务。

因此,总之,您可以使用以下服务集作为AWS中Web应用程序的基础。

  • AWS S3
  • AWS API网关
  • AWS LAMBDA
  • AWS的Cloudfront
  • AWS Cognito
相关问题