TheShawshank 2015-11-16
在AWS的re:Invent 2015大会上,亚马逊网络服务重点关注对其现有服务的改善和扩展,其中就包括了AWS Lambda。自从今年早先时候AWS推出Lambda服务以来,开发人员一直都在要求拥有在VPC后设置一个Lambda集群的能力,或者最起码能够为 Lambda功能配置安全组。这仅仅只是Lambda服务近期新增AWS功能中的一项。
对于Lambda服务的普通用户来说,在AWS虚拟私有云计算(VPC)后部署服务的功能可能并不会让他们感觉有多么兴奋。但是,如果您正在使用 Lambda来访问被限制在防火墙(例如MySQL或其他传统的关系型数据库)后的资源,那么这是一个巨大的进步。通过把AWS Lambda置于VPC之后,当在DynamoDB中检测到数据记录发生变化时,DynamoDB流就可以触发一个AWS Lambda功能,从而自动更新Aurora数据库。这也意味着用户可以限制访问Lambda功能,所以这些功能只能在内部网络中被调用——此举增加了额外的系统安全性。
虽然大部分的现代资源并不是根据IP地址范围来进行过滤的,但是更老的技术是这么做的。AWS Lambda中的VPC支持允许访问密钥身份验证框架来访问IP限制的资源。Lambda可以通过VPC被部署在防火墙内,从而访问传统平台;开发人员可以直接通过Lambda安全地使用新的外部客户端。
使用MySQL、Lambda和浏览器应用程序
如果开发人员正在使用Lambda 服务、AWS SDK以及Java脚本程序来开发无服务器的网络应用程序,使用DynamoDB作为后端数据库,那么就不应该有任何问题。但是,为了使用一个诸如 MySQL或Amazon Aurora这样的关系型数据库,可创建一个桥型应用程序或者打开RDS MySQL实例。这可以打开MySQL,一个用于实现零日漏洞的臭名昭著目标以防进一步的攻击。一般情况下,在一个开发端口上运行MySQL实例是一个糟糕的安全措施。
但是,运行Lambda服务是一个伟大的方法,它去除了一个后端,用户就不需要编写验证MySQL的中间层,并为在Lambda外进行访问提供了一 个安全的方法。幸运的是,将Lambda功能置于VPC中可让开发人员配置安全组并确保MySQL集群只使用特定Lambda功能。此举可显著减少曝光并 确保 MySQL实例得到合适保护。
确保只有授权用户能够访问Lambda功能仍然是非常重要的,但是很幸运使用亚马逊Cognito和IAM角色可以很容易地确保其安全性。
针对Lambda功能的调度功能
另一项改善就是提供了调度AWS Lambda功能的能力。这使得开发人员能够定期允许后台任务以取代使用任务实例或诸如Cloud Cron之类的工具来运行脚本程序。Lambda服务还增加了它的最长运行时间至五分钟。
例如,如果一家公司需要定期从博客网站读取RSS订阅,那么他们就可以在AWS Lambda中通过触发一个自动调度功能来排队读取博客列表中的所有待读取订阅内容,从而实现这一功能。该公司就可以安排主机功能每隔若干个小时从 DynamoDB读取数据,然后针对每一个博客触发Lambda函数读取订阅。
由于目前Lambda对设置了100个并发函数调用的限制,该公司就需要首先对这些调用进行排队处理。但是一旦AWS取消了这一限制,那么用户就可以通过主机调度函数触发这些调用。
支持Python