[Deploy to Render] 用免费方案部署 LINE Bot

从发布第一篇什麽是 Render 至今,Render 增加了很多新功能,像是 SSHRedisDDOS protectionREST API。不过在我看来,对於使用者来说最有价值的新功能莫过於 免费方案(free plan) 了!拜新一轮募资顺利之赐,Render 总算 短时间不会倒 有本钱提供免费的服务,这不仅可以吸引更多使用者试用 Render,也让 PaaS(Platform as a service)霸主 Heroku 的免费使用者愿意搬移到 Render。毕竟同样免费,Render 有许多优於 Heroku 的优势值得使用者考虑。

Render 有提供从 Heroku 搬家过来的小工具

免费方案的网路服务(Web Service)

Render 免费方案的网路服务提供和最便宜的付费方案一样多的记忆体以及少一点的 CPU。不同的是,免费方案的网路服务只会在有请求(request)时运行,假如 15 分钟内没有收到任何请求,Render 就会把这个网路服务关掉,一直到有人再次请求,Render 才会重新启动这个网路服务。一般来说,网路服务的启动需要额外的时间做初始化,因此第一个请求的回覆时间会比较长。

对使用者来说,在一个帐号底下可以建立多个免费方案的网路服务,不过一个月最多只有 750 小时的运行时间。举例来说,假如你只有一个免费方案的网路服务,这个网路服务可以持续运作(24 小时 * 31 天 = 744 小时);假如你有两个免费方案的网路服务,这两个网路服务加起来的运做时间就不能超过 750 小时,超过之後就会被关掉。

免费方案的网路服务还有一些小限制,不过大致来说 Render 付费方案的网路服务有的功能,像是 Custom DomainsPull Request PreviewsLog Streams,免费方案都有支援。

假如对免费方案的实作细节有兴趣,可以参考这篇 blog

免费方案的 PostgreSQL 资料库

Render 免费方案的 PostgreSQL 资料库提供和最便宜的付费方案一样的记忆体、CPU和硬碟。不同的是,免费方案的资料库只会存活 90 天,90 天後你可以再建立另一个全新的免费方案资料库。也就是说,只要你的应用程序可以容许短暂的时间无法连接资料库,你可以在资料库 90 天期满前汇出所有资料,再建立一个新的免费方案资料库并汇入资料,「逻辑上」你就有一个跟付费方案差不多的 PostgreSQL 资料库。

用免费方案部署 LINE Bot

「免费」当然美好,不过平心而论也不是那麽「完美」,还是有一些限制 当然啦不然谁要用付费方案啊 。Render 不是慈善机构,免费方案降低使用门槛,最终目的当然还是希望使用者喜欢 Render 的服务而愿意升级成付费方案。

跟过去 7 天试用期的方式不同,免费方案的网路服务可以一直用,也没有数量限制,因此最适合用来部署一些实验性质 自嗨 的网路服务。这边就来介绍如何用 Render 的免费方案部署自己写的 LINE Bot。

LINE Bot SDK

LINE 或 LINE Bot 应该不用多介绍了。LINE 提供各种程序语言的 SDK帮助开发者建立自己的 LINE Bot,每个 SDK 都有范例程序。这边示范用简单的步骤将 LINE Bot 的范例程序部署到 Render:

1. 选择你要开发的程序语言

这些 repo 中的render.yaml(Java 的还有Dockerfile)包含部署到 Render 需要的资讯,像是范例程序如何 build、如何启动。你可以直接使用这些 repo,或是 fork 出来做需要的修改,例如当render.yaml有多个范例时选择想要部署的范例。

假如你已经有自己的 LINE bot,你也可以复制render.yaml到你的 repo,然後将buildCommandstartCommand改成对应的值。

2. 按下DEPLOY TO RENDER连结,画面会转到 Render 的 Dashboard

这边需要一个注册好的 Render 帐号,注册帐号不需要信用卡资料。前一步骤选择的 LINE Bot 范例也都是用 Render 免费方案的网路服务部署,因此不会有意外的帐单。

3. 在 Render 的 Dashboard 输入 LINE Channel secret 和 access token,开始部署


LINE 的文件有详细地讲解如何在 LINE Developers Console 建立 Provider 和 Channel。Channel secret 和 access token 可以在建立的 Channel 中的Basic settingsMessaging API找到。

4. 更新 LINE Channel 的Webhook settings

Render 的 Dashboard 会给你一个 https://line-bot-<英文数字字串>.onrender.com 的网址。这个网址会指到你在 Render 部署的网路服务。

将这个网址接上/callback後更新 LINE Channel 的Webhook settings,LINE 会把任何人传到你的 LINE bot 的讯息转传到这个网路服务,你就可以在网路服务中设计回应的逻辑。

5. 用手机上的 LINE app 扫描 Channel bot 的 QR code

在 LINE Developers Console 找到 Channel bot 的 QR code。加入这个好友後,就可以测试你的 LINE Bot

echo 范例只支援文字讯息,你传什麽他就回什麽。kitchensink 范例支援得比较多,传给他表情符号他也会回。

LINE Login 和 LINE Front-end Framework (LIFF)

除了 LINE Bot,这边也提供将 LINE LoginLIFF 范例程序部署到 Render 的 repo。要注意的是,在建立 LINE Channel 时 Channel type 要选择 LINE Login

结语

网路上搜寻了一下,大部分 LINE Bot 的教学文件都是部署到 Heroku 或是用 ngrok 连到本机。希望这篇教学文件可以吸引更多人试用 Render 的免费方案来开发和营运 LINE Bot。


<<:  Go 语言读写 Excel

>>:  Chrome 浏览器开发者工具

Day 22 关键字跟 SEO

在现今使用 Google 搜寻的人数占了将近九成以上,所以更可以知道搜寻引擎对於消费者来说,是一个很...

JavaScript Day 12. 每个元素都做运算的 map()

这一篇要来讨论另一个跟 filter 很相似的方法 map,在我们讨论 map 的同时,也可能会觉得...

[day23]Vue实作-交易建立页面-API串接问题处理

差点开天窗了,交易建置API呼叫一直有问题。 本来已经要先PO文说明问题了,让我们看下去吧 串接永丰...

Ruby on Rails ⾃订验证器 Validator

现有的验证器不够⽤吗?有几种⽅式可以⾃订验证器: 写⼀个⽅法,挂到 validate ⽅法上: cl...

Day 23 -资料库应用小程序 资料库设计(系统需求分析)

完善的资料库能够有效地存储数据,提供最新、最精确的资讯,满足使用者的应用需求,因此正确的资料库结构设...