函数计算教程

阿里云的函数计算——FC ,是一个事件驱动的全托管 Serverless 计算服务,开发者无需管理服务器等基础设施,只需编写代码并上传。函数计算FC 会为您准备好计算资源,并以弹性、可靠的方式运行您的代码。

领取评测产品

开通服务

前提条件

您已成功注册阿里云账号,并完成实名认证。具体信息,请参见阿里云账号注册流程。

操作步骤

  1. 进入函数计算首页。

  2. 单击管理控制台

  3. 概览页面,单击免费开通

  4. 在开通说明面板,认真阅读并选中函数计算服务协议复选框,单击立即开通,然后单击关闭,进入函数计算控制台。

  5. 可选:

    在左侧导航栏,单击概览,在云资源访问授权对话框,单击同意授权给您的账号授予AliyunFCDefaultRole角色。

    • 授权成功

      授权成功即函数计算具有访问云资源的权限。

    • 授权失败

      • 阿里云账号

        可能由于一些功能无法授权造成的。但函数计算仍可以正常使用。如果您仍需授予系统默认角色,请提交工单咨询。

      • RAM用户

        当您授权失败后您需要判断您的账号是否有授权能力。

        • 如果没有RAM权限,您需要通过阿里云账号登录函数计算控制台,然后进行授权操作。授权成功后,您通过RAM用户再次登录函数计算控制台时将不再提示您进行授权。
        • 如果已有RAM权限依旧授权失败,可能由于一些功能无法授权造成的。但函数计算仍可以正常使用。如果您仍需授予系统默认角色,请提交工单咨询。

    关于权限管理的详细信息,请参见权限管理。

使用控制台创建函数

本文介绍如何在函数计算控制台快速开发一个简单的Serverless Hello World应用。

前提条件

开通函数计算

背景信息

函数计算为您提供了简单的Hello World示例,您可以直接在函数计算控制台创建服务和函数,成功创建后可以立马测试该函数查看函数执行的详细信息,例如返回结果、执行摘要和日志输出。

本文以从零开始创建的方式为例,介绍如何创建函数。

使用流程

流程说明如下:

  1. 创建服务。
  2. 创建函数,编写代码,将应用部署到函数中。
  3. 触发函数。
  4. 查看执行日志。
  5. 查看服务监控。

操作步骤

  1. 创建服务。

    1. 登录函数计算控制台。

    2. 在左侧导航栏,单击服务及函数

    3. 在顶部菜单栏,选择地域。

    4. 服务列表页面,单击创建服务

    5. 创建服务面板,填写服务名称和描述,然后单击确定

      您也可以在创建服务面板,设置是否启用阿里云日志服务和是否启用阿里云链路追踪功能。详细信息,请参见管理服务。

    当您成功创建服务后,页面会跳转至该服务页面的函数管理页面。

  2. 创建函数。

    1. 管理函数页面,单击创建函数

    2. 创建函数页面,选择使用标准 Runtime 从零创建

      基本设置如下:

      参数是否必填操作示例值
      函数名称填写自定义的函数名称。必须以字母开头,可包含数字、字母(区分大小写)、下划线(_)和短划线(-),不超过64个字符。说明 如果不填写名称,函数计算会自动为您创建。Function
      容器镜像单击选择 ACR 中的容器镜像,在弹出的选择容器镜像对话框,选择已创建的容器镜像实例ACR 镜像仓库,然后在下方选择镜像区域找到目标镜像并在其右侧操作列单击选择test-registry-vpc.cn-chengdu.cr.aliyuncs.com/test/registry:latest
      监听端口容器镜像中的HTTP Server所监听的端口。默认端口为9000。9000
      Command容器的启动命令,格式为[“python”,“server.py”]。如果不填写,则默认使用镜像中的Entrypoint/CMD。[“/code/myserver”]
      Args容器的启动参数,格式为[“–port”,“9000”]。如果不填写,则默认使用镜像中的CMD。[“-arg1”, “value1”]
      函数触发方式选择函数触发方式。通过事件触发:通过定时器和其他阿里云服务的触发器来触发函数执行。通过 HTTP 请求触发:通过发送HTTP请求触发函数执行,适用于快速构建Web服务等场景。通过事件触发
      实例类型选择适合您的实例类型。弹性实例性能实例GPU实例(公测中)更多信息,请参见实例类型及使用模式。关于各种实例类型的计费详情,请参见计费概述。说明 如需使用GPU实例,请提交工单申请。具体操作,请参见实例类型。弹性实例
      内存规格设置函数执行内存。选择输入:在下拉列表中选择所需内存。手动输入:单击手动输入内存大小,可自定义函数执行内存。内存规格说明如下:弹性实例:取值范围[128, 3072],单位为MB。性能实例:取值范围[4, 32],单位为GB。GPU实例:取值范围[16, 32],单位为GB。说明 输入的内存必须为64 MB的倍数。512 MB
      GPU显存规格实例类型选择GPU实例时必填。8 G
    3. 基本设置区域,设置相关参数,然后单击创建

      参数配置如下:

      • **可选:**函数名称:自定义函数的名称为Function。

      • 运行环境:选择Node.js 12

      • 请求处理程序类型:选择处理事件请求

      • 实例类型:选择弹性实例

      • 内存规格:设置函数执行内存为512 MB

      • 实例并发度:设置为1

      • 请求处理程序:设置为index.handler

    当您成功创建函数后,页面会跳转至该函数详情页面的函数代码页签。

  3. 执行函数。

    在目标函数详情页面的函数代码页签,单击测试函数

    说明 您也可以在代码编辑器内编辑您的代码,实现二次开发。

    执行完毕后,您可以在函数代码页签查看执行结果和详细的日志信息。

在控制台创建函数

本文以在/tmp目录中执行为例,介绍如何创建函数,假设函数计算的地域为华南1(深圳),镜像仓库名称nodejs-express。

  1. 将您的函数镜像推送至默认实例镜像仓库。

    1. 执行以下命令进入/tmp目录。

      cd /tmp
    2. 在/tmp目录中执行以下命令克隆示例工程。

      git clone https://github.com/awesome-fc/custom-container-docs.git
    3. 执行以下命令,进入项目目录。

      cd custom-container-docs/nodejs-express
    4. 执行以下命令指定镜像仓库。

      export IMAGE_NAME="registry.cn-shenzhen.aliyuncs.com/fc-demo/nodejs-express:v0.2" 
    5. 执行以下命令打包镜像。

      docker build -t $IMAGE_NAME .

      说明 针对搭载Apple芯片的Mac电脑(或其他ARM架构的机器),构建镜像时需要指定镜像的编译平台为Linux/Amd64。实现跨平台编译,示例代码如docker build --platform linux/amd64 -t $IMAGE_NAME .

    6. 执行以下命令推送镜像。

      docker push $IMAGE_NAME

体验简介

本场景介绍使用函数计算服务搭建一个Wordpress博客。使用Serverless Devs命令行工具可以将很多框架、应用、案例一键部署到函数计算平台中。
点击获取所需云产品资源

背景知识

本场景介绍使用函数计算服务搭建一个Wordpress博客。使用Serverless Devs命令行工具可以将很多框架、应用、案例一键部署到函数计算平台中。

本场景主要涉及以下云产品和服务:

函数计算(FunctionCompute)

函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询、性能监控和报警等功能。函数计算帮助您无需管理服务器(Serverless),仅专注于函数代码就能快速搭建应用。函数计算能够弹性地伸缩,您只需要按使用量付费。

函数计算Serverless服务和自建服务相比有以下优点:

上手简单,只专注业务逻辑开发,极大提高工程开发效率。

自建方案有太多学习和配置成本,例如针对不同场景,ESS需要做各种不同的参数配置系统环境的维护升级麻烦等。

免运维,函数执行级别粒度的监控和告警。

毫秒级弹性扩容,保证弹性高可用,同时能覆盖延迟敏感和成本敏感类型。

Serverless Devs开发者工具

Serverless Devs是一个组件化与插件化的Serverless开发者平台,开发者可以在平台中可插拔式的使用不同Serverless的服务和框架,同时可参与组件和插件的开发。无论是工业级的Serverless服务,还是各类开源的Serverless框架,Serverless Devs都可友好支持。开发者无需对市面上每一款Serverless工具进行研究和学习,只需通过Serverless Devs,就可以简单、快捷的“上手”主流Serverless服务和框架。

安装Serverless Devs命令行工具

安装Node.js环境。

执行如下命令,下载Node.js安装包。

wget https://npm.taobao.org/mirrors/node/v12.4.0/node-v12.4.0-linux-x64.tar.xz

执行如下命令,解压安装包并重命名。

tar -xvf node-v12.4.0-linux-x64.tar.xz && mv node-v12.4.0-linux-x64/ /usr/local/node

执行如下命令,配置环境变量。

echo "export PATH=$PATH:/usr/local/node/bin" >> /etc/profilesource /etc/profile

执行如下命令,安装Serverless-Devs工具。

npm install @serverless-devs/s -g

返回结果如下,表示安装完成。

**说明:**如果安装过程较慢,可以使用淘宝npm源,安装命令为

npm --registry=https://registry.npm.taobao.org install @serverless-devs/s -g。

执行如下命令,查看版本并检查安装是否正确。

s -v

返回结果如下,您可以看到Serverless-Devs工具的版本。

配置阿里云账号信息
本场景提供免费的ECS服务器,但是使用的函数计算服务是开通在您账号下,以下配置信息也是需要配置AK ID和AK Secret信息。

执行如下命令,配置账号信息。

s config add

然后根据提示填写以下信息。

  • 云厂商:选择阿里云(alibaba)。

  • AccessKeyID和AccessKeySecret:请在安全信息管理页面查看您账号的AccessKey ID和AccessKey Secret。
  • 如果您使用的是阿里云RAM子用户,需要确保您的子用户拥有函数计算管理权限AliyunFCFullAccess,请参见为RAM用户授权。

如下图所示为您的AccessKey ID和AccessKey Secret。如果您的账号未使用过AccessKey,请单击右上角创建AccessKey。

配置成功后显示类似如下。

搭建Wordpress博客项目

  1. 执行如下命令,在当前路径初始化一个wordpress项目。
s init devsapp/start-wordpress
  1. 执行如下命令,执行输入项目名start-zblog。
start-wordpress

  1. 选择创建应用所在的地区后按回车。

    说明 :

建议您选择创建应用所在的地区为云服务器ECS实例所在地域,您可在云产品资源列表查看云服务器ECS实例所在地域。

  1. 执行如下命令,执行输入服务名称web-framework。
web-framework

  1. 执行如下命令,执行输入函数名称wordpress。
wordpress

  1. 选择默认凭据后按回车。

返回结果如下,表示初始化完成。

  1. 执行如下命令,进入start-wordpress目录。
cd start-wordpress
  1. 执行如下命令,部署wordpress项目。

    s deploy

    输入Y后按回车,选择自动创建NAS。

返回结果如下,表示安装wordpress项目部署完成,并复制domain。

  1. 打开虚拟桌面的FireFox ESR浏览器,粘贴并访问domain。依次输入站点标题、用户名、密码和邮箱,单击安装WordPress。

    参数说明:

  • 站点标题:自定义标题。

  • 用户名:自定义用户名。

  • 密码:输入密码。

  • 邮箱:输入邮箱。

  1. 在成功页面,单击登录。

  1. 在WordPress登录页面,输入用户名和密码,单击登录。

  2. 出现如下界面,表示您已成功登录wordpress博客后台管理。