久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何把創(chuàng)建ECS作為觸發(fā)器來觸發(fā)函數(shù)計(jì)算

146次閱讀
沒有評論

共計(jì) 2190 個字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。

這篇文章給大家介紹如何把創(chuàng)建 ECS 作為觸發(fā)器來觸發(fā)函數(shù)計(jì)算,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

問題描述

函數(shù)計(jì)算雖然不支持直接集成到 ECS 的管控事件上,但是函數(shù)計(jì)算本身是支持日志服務(wù)作為觸發(fā)器的。即可以配置日志服務(wù)中 logstore 里的增強(qiáng)日志作為觸發(fā)器來觸發(fā)函數(shù)計(jì)算服務(wù)中的函數(shù),同時可以傳遞 project 和 logstore 的 name 以及 beginCursor/endCursor 等相關(guān)日志信息作為 event 到函數(shù)計(jì)算服務(wù),供其做二次處理和加工。

這樣相當(dāng)于提供了一個思路,即我們可以把創(chuàng)建 ECS 或者其他相關(guān)的操作想辦法作為日志投遞到日志服務(wù)中,這樣就可以觸發(fā)相關(guān)的函數(shù)計(jì)算服務(wù)了。

那么這種方法是什么呢?一種可行的方式是操作審計(jì)服務(wù)。操作審計(jì)可以記錄所有 API 級別的用戶記錄,當(dāng)然也包括 CreateInstance 這類操作。

所以整個流程就變成了:
開通操作審計(jì)服務(wù) - 配置操作審計(jì)跟蹤,將 event 投遞到日志服務(wù)中 - 配置日志服務(wù)作為函數(shù)計(jì)算觸發(fā)器并傳遞日志 - 觸發(fā)函數(shù)

舉個栗子

開通操作審計(jì)服務(wù)后,創(chuàng)建一個日志跟蹤

然后創(chuàng)建一個實(shí)例,可以看到操作審計(jì)記錄了這個行為

同時日志服務(wù)里也找到了這個行為記錄

接下來我們可以配置一個函數(shù)計(jì)算服務(wù),具體的過程可以參考文中最后的文檔,這里強(qiáng)調(diào)下配置觸發(fā)器的配置,這里要注意的是圖中有關(guān) logstore 的配置,上面的是觸發(fā)日志的 logstore,下面的是寫日志的 lostore,不能搞混。

然后復(fù)制進(jìn)去一段代碼,這段代碼的核心是拿到觸發(fā) event 的具體日志信息,然后寫到函數(shù)計(jì)算本地的日志庫里。

# -*- coding: utf-8 -*-
import logging
import json
from aliyun.log import LogClient
from time import time
def logClient(endpoint, creds):
 logger = logging.getLogger()
 logger.info(creds info)
 logger.info(creds.access_key_id)
 logger.info(creds.access_key_secret)
 logger.info(creds.security_token)
 accessKeyId =  XXX 
 accessKey =  XXX 
 client = LogClient(endpoint, accessKeyId, accessKey)
 return client
def handler(event, context):
 logger = logging.getLogger()
 logger.info(start deal SLS data)
 logger.info(event.decode().encode())
 info_arr = json.loads(event.decode())
 fetchdata(info_arr[ source],context)
 return  hello world 
def fetchdata(event,context):
 logger = logging.getLogger()
 endpoint = event[endpoint]
 creds = context.credentials
 client = logClient(endpoint, creds)
 if client == None :
 logger.info(client creat failed)
 return False
 project = event[projectName]
 logstore = event[logstoreName]
 start_cursor = event[beginCursor]
 end_cursor = event[endCursor]
 loggroup_count = 10
 shard_id = event[shardId]
 while True:
 res = client.pull_logs(project, logstore, shard_id, start_cursor, loggroup_count, end_cursor)
 res.log_print()
 next_cursor = res.get_next_cursor()
 if next_cursor == start_cursor :
 break
 start_cursor = next_cursor
 #log_data = res.get_loggroup_json_list()
 return True

以上配置完成后,一個控制臺創(chuàng)建 ECS(當(dāng)然也包括其他可以被審計(jì)的行為) 的行為就可以用來觸發(fā)函數(shù)計(jì)算的函數(shù)了。

結(jié)果

我們把剛才創(chuàng)建的實(shí)例再釋放掉,看到操作審計(jì)的日志

然后我們在函數(shù)計(jì)算的日志庫里也看到了對應(yīng)的日志,這個日志是剛才操作審計(jì)記錄的日志傳遞給函數(shù)計(jì)算并記錄的。在真正的應(yīng)用場景下,客戶可以拿到這個日志中的相關(guān)信息做更多操作。

關(guān)于如何把創(chuàng)建 ECS 作為觸發(fā)器來觸發(fā)函數(shù)計(jì)算就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)2190字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 天水市| 许昌市| 曲松县| 芮城县| 蛟河市| 安平县| 积石山| 醴陵市| 垣曲县| 新竹市| 文昌市| 德阳市| 江阴市| 峨眉山市| 安宁市| 梓潼县| 江阴市| 正宁县| 合水县| 彝良县| 衡阳县| 安庆市| 息烽县| 白河县| 镇平县| 邛崃市| 中山市| 武乡县| 乌拉特后旗| 三亚市| 鄯善县| 虹口区| 岢岚县| 清远市| 东宁县| 息烽县| 淮安市| 重庆市| 宁乡县| 黄龙县| 华亭县|