函数计算入门-HelloWorld应用开发

本文涉及的产品
函数计算FC,每月15万CU 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本场景介绍如何使用函数计算服务开发HelloWorld应用。

场景介绍

场景介绍如何使用函数计算服务开发HelloWorld应用。您可以通过控制台或Funcraft工具实现。

背景知识

什么是Serverless

自2006年8月9日,Google首席执行官埃里克·施密特(Eric Schmidt)在搜索引擎大会(SESSanJose2006)首次提出“云计算”(Cloud Computing)的概念之后,云计算的发展可以用日新月异这个词来形容。那么究竟什么才是Serverless呢?

简单来说,Serverless可以说是一种架构,一种云计算发展的产物,至于具体说什么是Serverless,可能没有谁能给他一个明确的概念,如果非要说一个可以稍微容易理解一些的概念,那或许可以参考Martin Fowler在《Serverless Architectures》中对Serverless这样定义:Serverless=BaaS + FaaS
在这里插入图片描述
Serverless架构和传统的项目的区别

首先,我们以一个常见的Web服务为例:

在这里插入图片描述
在这个图中,服务器中可能涉及路由规则、鉴权逻辑以及其他各类复杂的业务代码。同时,开发团队要付出很大的精力在这个服务器的运维上面,例如要时刻关注以下问题:

客户量突然增多时是否需要扩容服务器。
服务器上的脚本和业务代码等是否还在健康运行。
是否有黑客在不断地对服务器发起攻击。
当我们把这个思路切换到Serverless的逻辑之后,变成了这样:
在这里插入图片描述
可以认为,当客户端和数据库未发生变化的前提下,服务器变化巨大。

之前需要开发团队维护的路由模块以及鉴权模块都将接入服务商提供的API网关系统以及鉴权系统,开发团队无须再维护这两部分的业务代码,只需要持续维护相关规则即可。
在这个结构下,业务代码也被拆分成了函数粒度,不同函数表示不同的功能。
我们已经看不到服务器的存在,是因为Serverless的目的是让使用者只关注自己的业务逻辑即可,所以一部分安全问题、资源调度问题(例如用户量暴增、如何实现自动扩容等)全都交给云厂商负责。
相对于传统项目而言,传统项目无论是否有用户访问,服务都在运行中,都是有成本支出,而Serverless而言,只有在用去发起请求时,函数才会被激活并且执行,并且会按量收费,相对来说可以在有流量的时候才有支持,没有流量的时候就没有支出,相对来说,成本会进一步降低。
通过以上分析和描述,不难看出Serverless架构相对于传统的开发模式的区别,也逐渐的发现了它的优势。但是问题来了,很多工作都交给了云厂商来做,那我们做什么呢?
在这里插入图片描述

步骤一:连接ECS服务器

阿里云云产品资源体验地址:https://developer.aliyun.com/adc/scenario/20c4bead7e0b4758a6ab857bce793187

场景将提供一台配置了CentOS 7.7的ECS实例(云服务器)。通过本教程的操作

步骤二:开通函数计算服务

在使用函数计算前,需要开通函数计算服务。

说明: 本场景中提供的阿里云子账号无函数计算服务操作权限,请使用您自己的阿里云账号操作。您无需担心扣费问题,因为函数计算服务有一定的免费额度,请参见计费方式。

1.使用您自己的阿里云账号登录阿里云控制台,然后进入函数计算产品详情页。

2.单击【免费开通】。
在这里插入图片描述

  1. 阅读《函数计算服务协议》勾选同意服务协议,最后单击 【立即开通】 。

在这里插入图片描述
4.单击【管理控制台】进入函数计算控制台。
在这里插入图片描述

步骤三:在控制台开发函数计算HelloWorld应用

1.在函数计算控制台首页,单击【新建函数】。
在这里插入图片描述
2.选择【HTTP函数】,然后单击【下一步】。
在这里插入图片描述

3.参考以下说明填写函数和触发器配置,然后单击【完成】。

  • 所在服务:例如hello_world_service。
  • 绑定日志:填写所在服务名称后默认勾选绑定日志,日志服务会收取少量费用,您可以选择取消勾选。
  • 函数名称:例如hello_world。
  • 运行环境:选择nodejs10。
  • 触发器名称:例如hello_world_trigger。
  • 认证方式:选择anonymous。
  • 请求方式:选择GET。

在这里插入图片描述
4.在 代码执行管理 页面,将index.js文件中的内容替换为如下所示:

var getRawBody = require('raw-body')
module.exports.handler = function (request, response, context) {
    getRawBody(request, function (err, data) {
        var respBody = new Buffer.from("你好,世界!");
        response.setStatusCode(200)
        response.setHeader('content-type', 'text/html')
        response.send(respBody)
    })
};

替换后如下所示:
在这里插入图片描述

  1. 单击编辑器右上角【Save Invoke】保存并运行示例代码。

在这里插入图片描述
可以看到函数运行成功,并返回: 你好,世界!

步骤四:使用Funcraft开发函数计算HelloWorld应用

Funcraft 是一个用于支持Serverless应用部署的工具,能帮助您便捷地管理函数计算、API 网关和日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建和部署操作。
本步骤操作将在ECS服务器上使用Funcraft工具开发函数计算HelloWorld应用。
1.按照以下步骤创建资源。

a.  在页面左侧,单击 云产品资源 下拉菜单,查看本次实验资源。
b.  单击 免费开通 创建所需资源。

说明: 资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、用户名和密码等。

  1. 参考以下步骤连接ECS服务器。
    a. 打开终端工具。

Windows:打开命令窗口。
MAC:打开命令行终端Terminal。

Windows用户请检查系统中是否安装有SSH工具。检查方法:
在终端中输入命令 ssh -V 。

ssh -V

如果显示SSH版本则表示已安装,如下图所示。

在这里插入图片描述
如果未安装,请下载安装OpenSSH工具。
b. 在终端中输入连接命令ssh [username]@[ipaddress]。您需要将其中的username和ipaddress替换为步骤一中创建的ECS服务器的弹性公网IP。
例如:

ssh root@123.123.123.123

在这里插入图片描述
命令显示结果如下:
在这里插入图片描述

c.  输入 yes。

d.  同意继续后将会提示输入登录密码。 密码为已创建的云服务的ECS的登录密码。

在这里插入图片描述
登录成功后会显示如下信息。
在这里插入图片描述

3.在连接到ECS服务器的终端中执行以下命令安装NodeJS。

curl -sL https://rpm.nodesource.com/setup_10.x | bash - && yum install -y nodejs

4.执行以下命令安装Funcraft。

npm install request @alicloud/fun -g

5.执行 fun config 命令进行本地配置。

fun config

请参考以下信息输入您的阿里云账号ID、AccessKeyID和AccessKey密钥等信息。

Aliyun Account ID:请在账号安全设置页面查看您的账号ID。

在这里插入图片描述

Aliyun Access Key ID和Aliyun Access Key Secret:请在 安全信息管理 页面查看您账号的AK ID和AK Secret。
如果您使用的是阿里云主账号,请在安全信息管理页面的安全提示弹框中单击继续使用AccessKey。

在这里插入图片描述

如果您使用的是阿里云RAM子用户,需要确保您的子用户拥有函数计算管理权限 AliyunFCFullAccess ,请参见为RAM用户授权。
如下图所示为您的AccessKey ID和AccessKey Secret。如果您的账号未使用过AccessKey,请单击右上角创建AccessKey。

在这里插入图片描述

Default region name:请选择开通的函数计算服务所在地域。

在这里插入图片描述
正确设置如下所示:
在这里插入图片描述
6.执行以下命令新建工作空间。

mkdir demo && cd demo

7.执行 fun init 命令新建一个HTTP函数触发器。

fun init http-trigger-nodejs10

命令执行结果如下所示:
在这里插入图片描述
其中 index.js 文件为生成的HelloWorld函数模板,template.yml 文件中包含了HelloWorld函数和HTTP触发器的默认配置信息。
8.参考以下步骤修改 index.js 文件内容。

a.  将 index.js 文件内容清空。
cat /dev/null > index.js
b.  使用vim打开 index.js 文件。
vim index.js
c.  按下 i 键进入vim的编辑模式,在文件中新增以下内容。
var getRawBody = require('raw-body')
module.exports.handler = function (request, response, context) {
    getRawBody(request, function (err, data) {
        var respBody = new Buffer.from("你好,世界!");
        response.setStatusCode(200)
        response.setHeader('content-type', 'text/html')
        response.send(respBody)
    })
};
d.  按下 esc 键进入命令模式,输入 :wq 保存并退出vim。

9.执行 fun deploy -y 命令部署应用到函数计算服务。

fun deploy -y

命令执行结果如下所示:
在这里插入图片描述
至此,我们完成了一个HTTP触发器的函数部署。此时,我们可以打开HTTP触发器的默认URL,浏览器会以文件形式将函数响应内容下载到本地,您可以参考步骤四使用控制台在线调试。或者您可以绑定一个自定义域名以避免该问题,请参见绑定自定义域名。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
2月前
|
人工智能 运维 Serverless
Serverless + AI 让应用开发更简单,加速应用智能化
2024 云栖大会开幕,在大会第一天,阿里云正式发布全新产品——云应用开发平台 CAP。CAP 拥有丰富的场景化应用模板,可以极速体验,并且具备更低的成本优势以及灵活组装等特点,成为广大开发者与企业必备的一站式应用开发平台,让应用开发更简单。
185 12
|
1月前
|
人工智能 运维 Serverless
Serverless + AI 让应用开发更简单
随着云计算和人工智能(AI)技术的飞速发展,企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在探讨 Serverless 架构与 AI 技术的结合,如何通过 Serverless 函数计算和 AI 开发平台,助力企业简化应用开发流程,减少企业 AI 业务试错成本,加速业务创新,为企业业务发展提供无限可能。
|
4月前
|
人工智能 运维 Serverless
基于 Serverless 计算快速构建AI应用开发陪跑班开课啦!
云端问道第8期开课啦!参与直播间动手实操即可获得保温杯,参与直播间活动可抽奖无线充电器!!您将在课程中学习到基于Serverless技术函数计算FC实现基于Serverless 构建企业级AI应用的解决方案,降低 GPU的使用成本、减少企业或个人创业的试错成本、简化开发运维,让人人都可以拥有自己“专属”的AIGC环境成为可能!阿里云技术专家将手把手带您实操,还将针对实操中的问题进行一对一答疑!机会难得,快来参加吧!
271 9
|
11月前
|
运维 Serverless API
Serverless云开发入门
Serverless云开发入门
|
关系型数据库 MySQL Serverless
RDS入门——RDS MySQL Serverless资源与负载自适应
通过本教程的操作,可以掌握如何创建RDS Serverless版实例、配置RDS Serverless版实例和体验RDS Serverless动态计费。
|
弹性计算 Kubernetes Serverless
课时1:Serverless容器入门和实践案例
课时1:Serverless容器入门和实践案例
|
Serverless 对象存储 开发者
课时1:从0 入门,Serverless 技术及价值
课时1:从0 入门,Serverless 技术及价值
|
Serverless
函数计算入门-HelloWorld应用开发
本场景介绍如何使用函数计算服务开发HelloWorld应用。
|
6月前
|
网络协议 NoSQL Serverless
Serverless架构的弹幕应用开发实践
Serverless的理念是即时弹性,用完即走。服务并非长时间运行,这也就意味着像websocket这种长链接的请求模式看起来并不适合Serverless,但是否有其他的办法既能满足长连接模式请求,也能够利用Serverless本身特性呢?答案是肯定的,我们通过API网关来解决webscoket连接的问题,然后由网关触达Serverless服务的后端,本文以弹幕场景为例来介绍如何使用Serverless架构实现全双工通信。
166 0
Serverless架构的弹幕应用开发实践
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
156 13
下一篇
无影云桌面