龙空技术网

基于腾讯云对象存储,构建自动上传无服务函数的Maven插件

AngryRED 146

前言:

此刻你们对“腾讯云函数调用失败怎么回事”大体比较关心,我们都想要知道一些“腾讯云函数调用失败怎么回事”的相关内容。那么小编也在网上网罗了一些有关“腾讯云函数调用失败怎么回事””的相关知识,希望同学们能喜欢,你们快快来学习一下吧!

前面几篇文章分别介绍了腾讯云无服务器云函数实践,腾讯云API网关实践和基于SpringBoot的腾讯云函数调试,打通任督二脉,相信你已经对基于腾讯云无服务器云函数开发有所了解了。

在云函数更改之后,我们需要将源码达成jar包并上传到无服务器云函数中。 上传的方式有很多,可以通过网页控制台(直接上传jar包或先将jar包上传到对象存储,然后再更新云函数)或者通过SDK来上传jar包。

程序做久了,你有没有发现,即便你再怎么细心,也会有出错,但程序永远不会骗人,所以能用代码解决的问题,坚决不去动手。

既然提供了SDK,我们就可以利用maven来做一个能够自动更新云函数的插件。

设计思路

既然云函数的打包一般都是通过Maven的package来完成的,我们何不写一个install的Maven插件来实现代码上传和更新呢?

在maven打包完之后,进行云函数的更新。将打包好的jar包上传到COS(对象存储)。创建或更新云函数。创建或更新API网关(木有SDK,搁置中……)。注意事项此插件一定要在打包之后进行,也就是说在Mojo中,选择defaultPhase的时候,最好是LifecyclePhase.INSTALL。参数配置:所有的SDK调用都会借助于secretId和secretKey之类的东西,一定要在配置中配好。COS(对象存储)的SDK和SCF(腾讯云无服务器云函数)的SDK有用法不一致的情况,请参考腾讯云无服务器云函数实践的代码。区域信息也很重要,就是云函数放置的区域和对象存储放置的区域。一般情况下不要用不同的区域,以免产生不必要的流量。部分示例代码

Mojo(插件部分):

@Mojo(name = "upload-function", defaultPhase = LifecyclePhase.INSTALL)public class FunctionUploadMojo extends AbstractMojo {}

配置(使用部分):

<configuration>	<function>		<enabled>true</enabled>		<name>function-demo</name>		<handler>function.DemoGatewayFunction::handleRequest</handler>		<secretId>[腾讯云无服务函数的SecretID]</secretId>		<secretKey>[腾讯云无服务函数的SecretKey]</secretKey>		<description>Demo Function</description>		<timeout>300</timeout>		<memory>1536</memory>		<bucket>				<name>[腾讯云对象存储COS的名称]</name>				<appid>[腾讯云对象存储COS的appid]</appid>		</bucket>	</function></configuration><executions> // 在执行mvn install的时候执行此插件 	<execution> 	 <phase>install</phase> 		<goals> 				<goal>upload-function</goal> 		</goals> 	</execution> </executions>

点击下面的链接,可以获取源码

标签: #腾讯云函数调用失败怎么回事