部署serverless函数到华为云函数工作流,支持类型为obs,jar,zip压缩包,单个函数文件,或者目录
目前支持linux系统和苹果系统,windows系统暂不支持
函数工作流(FunctionGraph)是华为云提供的一款无服务器(Serverless)计算服务,无服务器计算是一种托管服务,服务提供商会实时为你分配充足的资源,而不需要预留专用的服务器或容量,真正按实际使用付费。
需要提前学习函数工作流服务的基本操作,并创建好自己的函数
(1).AK/SK/projectid获取方式请参考 https://support.huaweicloud.com/apm_faq/apm_03_0001.html
(2).endpoint获取方式请参考 https://developer.huaweicloud.com/endpoint?FunctionGraph
(3).函数urn获取方式:选中需要更新的函数进入函数详情,右上角可以看到urn参数
ak:华为云账号的AK字符串,必填
sk:华为云账号的SK字符串,必填
endpoint:函数服务的endpoint,必填
project_id:华为云账号的project_id,必填
function_urn:函数的urn,必填,请根据自己的function urn路径调整参数,必填
function_codetype:函数更新方式,目前支持obs,zip,file,dir,jar五种,必填
function_file:函数文件的路径,如果是obs,请填写该文件在OBS上的路径,如果为其他方式,请填写文件或者目录在本地的绝对路径或者相对路径,出了OBS文件填写文件链接,其他不要填网络连接,必填
deploy-functiongraph-action 在github workflow 上的使用样例:
注意:如果需要上传的文件或目录接近或大于50M,请上传到OBS,使用OBS的方式进行部署
(1).需要在项目的setting--Secret--Actions下添加 ACCESSKEY SECRETACCESSKEY 两个参数
(2).需要在workflows的yml中填写 ${endpint} ,${projectid} ,${function_urn} ${obs-endpoint} 等参数
如果函数文件比较大(超过50M),请先将文件上传到OBS,然后将该文件在OBS中的路径配置到function_file上,function_codetype填写为obs
#通过OBS部署函数
- name: deploy OBS function file to huaweicloud functiongraph
uses: huaweicloud/deploy-functiongraph-action@v1.0
with:
ak: ${{ secrets.ACCESSKEY }}
sk: ${{ secrets.SECRETACCESSKEY }}
endpoint: ${endpint}
project_id: ${projectid}
function_codetype: obs
function_urn: ${function_urn}
function_file: https://bucket-test.${obs-endpoint}/function/functionj/v1.0.0.1/functionj.jar
github workflow yml地址: .github/workflows/deploy-obs-sample.yml
如果函数使用java开发,可以将java工程打包为jar,function_codetype填写为jar,将jar包在本地的路径填写到function_file上
样例代码请参考本项目java-sample/functionj,可以直接在内进行开发,开发说明请参考:https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0430.html
打包方式:在eclipse中导入项目,开发完成之后,右键项目,选export --> jar
workflow 样例如下
- name: deploy java jar to huaweicloud functiongraph
uses: huaweicloud/deploy-functiongraph-action@v1.0
with:
ak: ${{ secrets.ACCESSKEY }}
sk: ${{ secrets.SECRETACCESSKEY }}
endpoint: ${endpint}
project_id: ${projectid}
function_codetype: jar
function_urn: ${function_urn}
function_file: ./target/functionj.jar
github workflow yml地址: .github/workflows/deploy-jar-sample.yml
如果函数为单个文件,可以直接上传改单个函数文件,function_codetype填写为file,将函数文件在本地的路径填写到function_file上,样例如下
- name: deploy single function file to huaweicloud functiongraph
uses: huaweicloud/deploy-functiongraph-action@v1.0
with:
ak: ${{ secrets.ACCESSKEY }}
sk: ${{ secrets.SECRETACCESSKEY }}
endpoint: ${endpint}
project_id: ${projectid}
function_codetype: file
function_urn: ${function_urn}
function_file: ./python-sample/index.py
github workflow yml地址: .github/workflows/deploy-file-sample.yml
如果函数文件比较多,可以将函数都集中到一个目录下,将整个目录作为函数上传,function_codetype填写为dir,将函数目录在本地的路径填写到function_file上,样例如下
- name: deploy function directory to huaweicloud functiongraph
uses: huaweicloud/deploy-functiongraph-action@v1.0
with:
ak: ${{ secrets.ACCESSKEY }}
sk: ${{ secrets.SECRETACCESSKEY }}
endpoint: ${endpint}
project_id: ${projectid}
function_codetype: dir
function_urn: ${function_urn}
function_file: ./python-sample/function/
github workflow yml地址: .github/workflows/deploy-directory-sample.yml
如果函数文件比较多,也可以将函数打包成zip,将zip文件作为函数上传,function_codetype填写为zip,将函数目录在本地的路径填写到function_file上,样例如下
- name: deploy compress zip file function to huaweicloud functiongraph
uses: huaweicloud/deploy-functiongraph-action@v1.0
with:
ak: ${{ secrets.ACCESSKEY }}
sk: ${{ secrets.SECRETACCESSKEY }}
endpoint: ${endpint}
project_id: ${projectid}
function_codetype: zip
function_urn: ${function_urn}
function_file: ./index-py.zip
github workflow yml地址: .github/workflows/deploy-zip-sample.yml
NodeJS函数开发:
Node.js函数开发指南
Python函数开发
Python函数开发指南
java函数开发
Java函数开发指南(使用Eclipse工具)
Java函数开发指南(使用IDEA工具普通Java项目)
Java函数开发指南(使用IDEA工具maven项目)
GO函数开发
Go函数开发指南(Go 1.8.3)
Go函数开发指南(Go 1.x)
C#函数开发
C#函数开发指南
使用NET Core CLI开发
使用Visual Studio开发
PHP函数开发
PHP函数开发指南