background
Ali cloud computing functions are fully managed event-driven computing services. By calculation function, you need to manage infrastructure servers, just write code and upload. Function calculates will be ready for you computing resources to flexible, reliable way to run your code, and provides a log, performance monitoring, alarm and other functions. By means of function calculations, you can quickly build any type of application and services, without management and operation and maintenance. Also, you only need to actually run the code resources consumed to pay, the code is not running no costs incurred.
Packaging and distribution of mobile applications showed significant peak utility, users often need to prepare a large number of distributed real-time protection of resources in a short time, then the need for timely completion of the distribution release resources and reduce costs. Here we offer a fun templates to help us build a faster-based function to calculate the building's architecture Serverless package delivery services, and achieved a good balance between the development of operation and maintenance efficiency, performance and cost.
In the subcontracting process, download / modify / upload is a more resource consuming task, need to consume a lot of computing / network resources. And sub-tasks will occur only in the application of new version is released, need to be completed within the shortest possible time. This has obvious for the scene of the peaks and valleys, is used for calculation function is accomplished. More importantly, this service is an elastic scaling and high availability capabilities.
apk subcontracting Profile
More reference function calculates --Serverless micro-services practice - mobile application package distribution service .
Ready to work:
1. Install node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
nvm install 8
2. Install fun tool
npm install @alicloud/fun -g
Some subcommands fun tool may be used docker, so you will need to install docker, specific reference documentation: Fun installation tutorial .
3.apk package ready
In this experiment, we will use the example of a apk package can be downloaded from here QQ-v2.apk .
下载 qq-v2.apk ,上传到自己的 oss bucket中:
快速开始:
1.通过 fun 模板生成项目骨架
使用 fun init
命令可以快捷的将本模板项目初始化到本地,执行命令 :
$ fun init -n apk https://github.com/coco-super/package-distribution-service-for-serverless
start cloning...
Cloning into '.fun-init-cache-2fc2d680-eeff-11e9-a930-6fd4d1ac6506'...
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 23 (delta 0), reused 18 (delta 0), pack-reused 0
Unpacking objects: 100% (23/23), done.
finish clone.
? Please input a oss bucket name? sunfeiyu
Start rendering template...
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/.funignore
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/pom.xml
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/src/main/java/example/App.java
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/target/classes/example/App.class
+ /Users/ellison/simple-fc-uncompress-service-for-oss/apk/template.yml
finish rendering template.
其中 -n 表示要作为文件夹生成的项目名称。默认值是 fun-app。更多fun init 命令格式选项说明请参考云栖文章开发函数计算的正确姿势 —— 使用 Fun Init 初始化项目。
执行 fun init
后会提示:输入一个 oss 的 bucket,注意 oss Bucket 是全球唯一的,如已经被占用了,请换一个新的名称或者一个已经创建好的(已经创建好的,请确保 region 一致)。
ps: 输入的内容和 apk 包准备中提到的 oss bucket name 是同一个,本示例为:sunfeiyu
4. 编译
在模版项目的根目录下执行 fun build
命令编译:
$ fun build
using template: template.yml
start building function dependencies without docker
building apk/apk
running task flow MavenTaskFlow
running task: MavenCompileTask
running task: MavenCopyDependencies
running task: CopyMavenArtifacts
Build Success
Built artifacts: .fun/build/artifacts
Built template: .fun/build/artifacts/template.yml
Tips for next step
======================
* Invoke Event Function: fun local invoke
* Invoke Http Function: fun local start
* Deploy Resources: fun deploy
关于 Fun build 构建函数详细请参照云栖文章 开发函数计算的正确姿势 —— 使用 Fun Build 构建函数。
5.服务部署
在模版项目的的根目录下执行 fun deploy
部署到云端。
$ fun deploy
using template: .fun/build/artifacts/template.yml
using region: cn-shanghai
using accountId: ***********8320
using accessKeyId: ***********mTN4
using timeout: 60
Waiting for service apk to be deployed...
make sure role 'aliyunfcgeneratedrole-cn-shanghai-apk' is exist
role 'aliyunfcgeneratedrole-cn-shanghai-apk' is already exist
attaching policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk
attached policies AliyunOSSFullAccess to role: aliyunfcgeneratedrole-cn-shanghai-apk
Waiting for function apk to be deployed...
Waiting for packaging function apk code...
The function apk has been packaged. A total of 15 files files were compressed and the final size was 3.13 MB
function apk deploy success
service apk deploy success
6.执行函数
提供两种方式:
- 登陆阿里云函数计算控制台,手动执行。
- 项目根目录下
fun invoke apk
命令远端调用:
$ fun invoke apk
using template: template.yml
========= FC invoke Logs begin =========
FC Invoke Start RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6
2019-10-14 17:06:35.971 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] cmd: java -jar /code/walle-cli-all.jar put -c aliyun-fc /tmp/input.apk /tmp/output.apk
2019-10-14 17:06:36.152 [INFO] [23f34cc4-0cd3-40e0-9a04-f6586cf29be6] Success!
FC Invoke End RequestId: 23f34cc4-0cd3-40e0-9a04-f6586cf29be6
Duration: 666.13 ms, Billed Duration: 700 ms, Memory Size: 1024 MB, Max Memory Used: 254.55 MB
========= FC invoke Logs end =========
FC Invoke Result:
Success
查看结果
登陆 oss 查看已经生成新的 apk 包:
将 oss 中 qq-v2-signed.apk 下载到本地。
查看渠道信息是否写入:
~/Downloads ⍉
$ java -jar /Users/ellison/Downloads/walle-cli-all.jar show qq-v2-signed.apk
/Users/ellison/Downloads/qq-v2-signed.apk : {channel=aliyun-fc}
渠道信息 {channel=aliyun-fc}
已写入,成功!
Reference Reading
" Alibaba Cloud native concern micro service, Serverless, container, Service Mesh and other technical fields, focusing cloud native popular technology trends, cloud native large-scale landing practice, most do understand the developer's native cloud technology circles."