WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

Refunc 入门

Refunc 已商用 😢

基础

在介绍Refunc 入门之前:

Refunc使用

Refunc可以通过kubectl命令行+yaml文件的方式进行部署,需要对yaml文件比较了解,门槛略高。为了方便上手,开发者提供了一套Python的模板,可以通过make命令的方式快速部署。

环境

python3 、cookiecutter、docker、make

1
2
3
4
5
6
7
8
9
10
# docker与make自行安装
# 创建并进入Python3环境
conda create -y -n refunc python=3.6
conda activate refunc
# 安装工具 aws 命令行的安装可能存在问题,可参考
# https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html
pip install cookiecutter awscli
# 模板地址 https://github.com/refunc/refunc-func-skel-py
cookiecutter git@github.com:refunc/refunc-func-skel-py.git
# 输入RefuncAWSEndpoint 如果没有配置负载均衡,可以使用kubectl的端口转发

部署

1
2
3
4
5
6
7
8
9
10
11
12
# 安装python3.7的运行环境
kubectl create -n refunc -f \
https://github.com/refunc/lambda-python3.7-example/releases/download/v0.0.2/xenv.yaml
# 修改src/main.py文件
# 发布函数
make publish
# 创建触发条件: trigger
kubectl apply -f trigger.yaml -n refunc
# 测试http触发,命令如下
# 其中127.0.0.1:9802地址是通过端口转发到了refunc:7788
# 具体地址是/{namespace}/{Trigger.spec.funcName}
curl 127.0.0.1:9802/refunc/func-template-0

模板介绍

src/main.py是函数调用的入口,所有的函数逻辑都可以编写到src文件夹之下,支持正常的python项目。

make build将项目编译打包成dist.zip文件

make publish将项目编译打包好,并提交到Refunc上

trigger.yaml 触发器的配置文件

Makefile --runtime 模版默认的运行环境是python3.7,可以自行修改

期间遇到的问题

  • aws命令行不是pip install aws 安装的,应参考官方文档进行安装,猜名一时爽,bug火葬场
  • Refunc提供的aws-api-gw的nginx参数没有配置client_max_body_size的大小,提交包的时候会遇到大小受限的问题,修复方式是更新配置映射,重新部署aws-api-gw Pod。