首先介紹下在本文出現(xiàn)的幾個比較重要的概念:
公司主營業(yè)務:網(wǎng)站制作、成都網(wǎng)站設計、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出定安免費做網(wǎng)站回饋大家。
函數(shù)計算(Function Compute):函數(shù)計算是一個事件驅動的服務,通過函數(shù)計算,用戶無需管理服務器等運行情況,只需編寫代碼并上傳。函數(shù)計算準備計算資源,并以彈性伸縮的方式運行用戶代碼,而用戶只需根據(jù)實際代碼運行所消耗的資源進行付費。函數(shù)計算更多信息參考
函數(shù)工作流(Function Flow):函數(shù)工作流是一個用來協(xié)調多個分布式任務執(zhí)行的全托管云服務。用戶可以用順序,分支,并行等方式來編排分布式任務,F(xiàn)nF 會按照設定好的步驟可靠地協(xié)調任務執(zhí)行,跟蹤每個任務的狀態(tài)轉換,并在必要時執(zhí)行用戶定義的重試邏輯,以確保工作流順利完成。函數(shù)工作流更多信息參考
本文將重點介紹如何快速地通過函數(shù)計算與函數(shù)工作流部署一個定時離線批量處理圖片文件并標注出人臉的服務。
開通服務
解決方案
流程如下:
函數(shù)工作流中的流程被執(zhí)行:
調用函數(shù)計算中的函數(shù)處理,進行人臉識別并標注。將標注后的文件存入 OSS,最后將處理過的文件進行轉移。
Clone 工程到本地
git clone git@github.com:ChanDaoH/serverless-face-recognition.git
YOUR_BUCKET_NAME
為在杭州區(qū)域的 OSS Bucket (可以不是杭州區(qū)域的,需要同步修改 OSS_ENDPOINT
)ROSTemplateFormatVersion: '2015-09-01'
Transform: 'Aliyun::Serverless-2018-04-03'
Resources:
face-recognition:
Type: 'Aliyun::Serverless::Service'
Properties:
Policies:
- Version: '1'
Statement:
- Effect: Allow
Action:
- 'oss:ListObjects'
- 'oss:GetObject'
- 'oss:PutObject'
- 'oss:DeleteObject'
- 'fnf:*'
Resource: '*'
listObjects:
Type: 'Aliyun::Serverless::Function'
Properties:
Handler: index.handler
Runtime: python3
Timeout: 60
MemorySize: 128
CodeUri: functions/listobjects
EnvironmentVariables:
OSS_ENDPOINT: 'https://oss-cn-hangzhou-internal.aliyuncs.com'
detectFaces:
Type: 'Aliyun::Serverless::Function'
Properties:
Handler: index.handler
Runtime: python3
Timeout: 60
MemorySize: 512
CodeUri: functions/detectfaces
EnvironmentVariables:
OSS_ENDPOINT: 'https://oss-cn-hangzhou-internal.aliyuncs.com'
timer:
Type: 'Aliyun::Serverless::Function'
Properties:
Handler: index.handler
Runtime: python3
Timeout: 60
MemorySize: 512
CodeUri: functions/timer
Events:
timeTrigger:
Type: Timer
Properties:
CronExpression: '0 * * * * *'
Enable: true
# replace YOUR_BUCKET_NAME to your oss bucket name
Payload: '{"flowName": "oss-batch-process", "input": "{\"bucket\": \"YOUR_BUCKET_NAME\",\"prefix\":\"\"}"}'
oss-batch-process:
Type: 'Aliyun::Serverless::Flow'
Properties:
Description: batch process flow
DefinitionUri: flows/index.flow.yml
Policies:
- AliyunFCInvocationAccess
一鍵部署函數(shù)計算和函數(shù)工作流資源至云端
fun deploy
工作流執(zhí)行完成后,查看 OSS Bucket
face-detection
目錄下processed
目錄下
通過 函數(shù)計算 + 函數(shù)工作流,搭建了一個定時批量處理圖片進行人臉識別的服務。該服務因為使用了函數(shù)工作流的流程,將任務分為了多個步驟,只需要確保每個步驟的函數(shù)能夠在函數(shù)計算限制時間(10分鐘)內完成即可。
通過 Fun 工具,一鍵部署 函數(shù)計算 + 函數(shù)工作流,免去去多平臺進行操作的步驟。
相關參考
參考示例
“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術圈?!?/p>