我第一次真正理解云函数/无服务器函数是在我看到并尝试了 Auth0 的(现已停用)Webtask。它有点像 CodePen 的IDE,但除了代码和日志之外,您实际上什么也看不到。重点是在您访问函数 URL 时编写一些 Node 代码(这正是无服务器函数的本质)。它甚至可以为您存储密钥,这意味着您可以将无服务器函数用作代理。您访问函数,函数使用您未公开的 API 密钥访问 API,API 返回数据,然后函数返回数据,这些数据可供客户端使用。整个目的在于 1)您可以从一个完全静态的网站获取数据,以及 2)您的 API 密钥得到保护。非常棒。
我仍然怀念 Webtask,但我相信现在肯定有更好、更高级的功能。我对整个领域了解得并不全面。即使 AWS 也为 lambda 提供了一个在线编辑器(“lambda”是 AWS 制定的无服务器函数的标准实现),但直接使用 AWS 控制台进行任何操作通常都不是……很好。 AWS Amplify 中的函数 可能是一个更好的选择。
我猜测构建这些东西的正确现代方法是……
- 使用 Serverless.com 的框架 构建/测试/部署您的无服务器函数
- 使用 Netlify Functions + Netlify Dev
- 使用 Vercel 的无服务器函数,或使用任何 Node 主机(如 Heroku)的 Next.js
/pages/api
内容
但是还有很多其他看起来非常现代的工具,我对此不太了解,但似乎不错
- Begin.com
- SLAppForge
- 新潮的下一代服务器端 JavaScript 语言 Deno 正在 成为一项服务进行部署。
但让我想到这一切的,以及属于我没有任何个人经验的范畴的事情,是 Pipedream。我从 Raymond 那里了解到它,他与我有类似的故事
无服务器最初吸引我的东西之一,老实说它并不算新颖,就是能够构建到其他 API 的代理。例如,假设有一个很酷的 API 需要某种身份验证才能使用,例如 API 密钥。如果您在客户端 JavaScript 中使用它,任何人都可以查看您的代码并获取您的密钥。更好的服务允许您将密钥锁定到一个域,但如果您没有此选项,那么简单地使用无服务器就可以为您提供一个端点,该端点使用您的密钥调用 API。
Raymond Camden,“使用 Pipedream 代理其他 API”
Pipedream 看起来非常花哨

它不仅是一个用于创建函数的基于 Web 的IDE,而且我还可以通过多种方式触发它——当然还有 URL,还有 CRON,或者通过电子邮件或 RSS 等方式。很不错。看看其他选项。Slack?GitHub?Twitter?在某种程度上,它有点像 Zapier,只是 Zapier 完全是无代码的(我认为)。Pipedream 使代码成为一等公民。

它通过帐户级 环境变量 来处理密钥。

因此,它非常适合用作无服务器代理。 阅读 Raymond 的文章 以获取实际的实现和代码示例。
感谢您的推荐!我想补充一点——如果您使用 Netlify 并且您**只**想代理到一个端点并隐藏一个密钥,则无需使用无服务器函数。他们的 _redirects 支持允许这样做: https://www.raymondcamden.com/2020/06/10/testing-netlifys-proxy-support-for-api-hiding
很棒的文章!谢谢。我对函数也有同样的看法,但我担心安全性……是的,您将隐藏 API 密钥,但谁将跟踪发送请求的人的信息?之前,API 所有者会跟踪它,并且能够例如通过 IP 进行阻止,如果出现问题。现在,如果有人窃取了您的函数的 URL,您需要自行确定并做出反应。当然,如果没有函数,如果有人窃取了密钥,您也可能需要采取一些措施。但我认为,在没有函数作为代理的情况下,保护措施可能会更好。
如果您担心这个问题,您可以做的一件事是强制执行登录要求。Netlify Identity 支持这一点,并且在函数中要求登录用户很容易。
Cloudflare Workers 也填补了这个空白。它们比 AWS lambda 更友好,您可以像使用函数一样使用它们