閱讀767 返回首頁    go 阿裏雲 go 技術社區[雲棲]


10.11杭州Clouder lab 十分鍾搭建共享應用1:函數計算及表格存儲操作說明

1. 獲取雲賬戶

  • 1.1 每位觀眾入場都會得到一個雲賬戶
  • 1.2 獲得賬號ID和Accesskeys

2. 開通表格存儲(TableStore)

2.1. 開通表格存儲服務

t1.png

t2.png

2.2. 創建表格存儲實例

  • 2.2.1 登陸表格存儲控製台
  • 2.2.2 在控製台上創建實例,在華東2創建實例(注意:實例的整個區域Region級別)
  • 2.2.3 記錄實例信息,主要包括實例名

t3.png

t4.png

t5.png

t6.png

3. 開通簡單日誌服務

3.1. 開通日誌服務

3.2. 創建日誌服務

  • 3.2.1 點擊創建簡單日誌服務 sls_create_service.png

4. 開通函數(FunctionCompute)服務

4.1. 新建函數計算service服務

fc_service_create_1.png

fc_service_create_2.png

4.2. 服務高級配置

fc_service_advance_conf_1.png

  • 4.2.1 角色中選擇從模板創建新的角色
  • 4.2.2 模板策略中添加AliyunLogFullAccess
  • 4.2.3 模板策略中添加AliyunOTSReadOnlyAccess
  • 4.2.4 角色名字自定義一個名字

fc_service_advance_conf_2.png

4.3. 新建空白函數函數

  • 4.3.1 選擇python,點擊空白函數

fc_function_create.png

  • 4.3.2 觸發器配置中選擇不創建任何觸發器,並進入下一步

4.4. 函數基礎配置

  • 4.4.1 函數名使用unlock
  • 4.4.2 選擇本地上傳,上傳指定的unlock.zip文件
  • 4.4.3 運行環境使用python2.7
  • 4.4.4 函數入口使用unlock.req_unlock
  • 4.4.5 超時時間為30

fc_unlock_function_create_config.png

4.5. 函數調試輸入參數編輯

  • 4.5.1 建好函數後,選擇對應unlock,進入函數詳情頁
  • 4.5.2 將代碼中的event對應的dict選擇複製到剪切板,備用
  • 4.5.3 點擊觸發事件按鈕

fc_unlock_invoke_edit.png

4.6. unlock事件編輯

  • 4.6.1 將剪切板的內容粘貼到編輯框並點擊保存

fc_unlock_event_edit.png

編輯event內容如下:

{
    "MobileNo" : "18612345678",
    "DeviceId" : 123456,
    "Latitude": 30.131852,
    "Logitude": 120.0776645
}

4.7. 函數調試調用測試

  • 4.7.1 點擊執行按鈕可以開始調試函數

fc_unlock_invoke_test.png

4.8. 鎖車函數配置

  • 4.8.1 如同unlock函數建立類似,新建lock函數
  • 4.8.2 函數名使用lock
  • 4.8.3 選擇本地上傳,上傳指定的lock.zip文件
  • 4.8.4 運行環境使用python2.7
  • 4.8.5 函數入口使用lock.req_lock
  • 4.8.6 超時時間為30

fc_lock_create_function_config.png

  • 4.8.7 將圖片中的fc-ots-sandbox替換成準備過程中新建的表格存儲實例名
  • 4.8.8 點擊保存

fc_lock_invoke_edit.png

5. 搭建Demo

5.1 根據不同的環境下載不同的Demo

  • Mac
  • Windows x86
  • Windows x64
  • Linux x86
  • Linux x64

5.2 配置環境

1. 解壓包,並進入解壓目錄
2. 編輯conf/app.conf, 修改如下字段:
- ws_userid                # 賬戶ID
- ws_accessid              # 賬戶的AccessId
- ws_accesskey             # 賬戶的Accesskey
- ws_tablestore_instance   # 表格存儲的實例名稱
- ws_fc_service            # 函數服務的Service
- ws_mobile_no             # 請填寫自己的電話號碼,後麵報警的Demo演示會使用到這個字段

5.3 啟動

5.3.1 Mac 啟動方式
- 在終端中直接運行: ./workshop
- 或者直接雙擊run

5.3.2 Windows 啟動方式
- 直接雙擊workshop exe

5.3.3 Linux 啟動訪問
- cd 到解壓文件目錄,直接運行: ./workshop

6. Demo演示

  • 6.1 訪問APP
  • 6.2 模擬手機APP,進行解鎖、騎行、上鎖、查看曆史記錄等

7. 利用表格存儲和函數服務實現報警

7.1 場景:通過配置短信報警,實時了解單車的狀態。我們通過如下的簡單的例子,監聽單車承載的重量,如果超過我們的閥值,我們會通過短信網關,將報警信息發送到管理員處。

7.2 配置報警

  • 7.2.1 登錄函數服務控製台
  • 7.2.2 進入之前創建的Service
  • 7.2.3 在FC的service下新建一個空白函數—不創建任何觸發器,到函數配置頁麵,按照下圖進行配置:

    • 函數名稱:根據實際情況填寫,示例為alarm
    • 運行環境:python2.7
    • 上傳代碼:將附件alert.zip的代碼包下載下來,直接選擇本地上傳
    • 函數入口:alert.my_handler
  • 7.2.4 點擊完成, 在服務界麵就可以看到相關的函數

  • 7.2.5 測試alert的函數行為是否符合期望。
    a) 進入函數詳情-代碼執行,點擊觸發事件,選擇自定義,將下述的json內容粘貼至編輯框,如下圖,修改紅框中的值,MobileNo為異常情況短信報警的手機號碼,Weight為重量,超過120則會觸發報警短信,點擊保存。
    1.jpg

    {
    "Records": [
        {
            "Info": {
                "Timestamp": 1506135175100900
            },
            "Type": "PutRow",
            "PrimaryKey": [
                {
                    "ColumnName": "Uid",
                    "Value": 10
                },
                {
                    "ColumnName": "Sid",
                    "Value": 1001
                },
                {
                    "ColumnName": "CreateTime",
                    "Value": 1506135175
                }
            ],
            "Columns": [
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "MobileNo",
                    "Value": "1234567"
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "Weight",
                    "Value": 109
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "Vid",
                    "Value": 3005
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "BatteryLevel",
                    "Value": 0.55
                },
                {
                    "Timestamp": 1506135175101,
                    "Type": "Put",
                    "ColumnName": "Distance",
                    "Value": 10.1
                }
            ]
        }
    ],
    "Version": "Sync-v1"
    }
    

    b) 由於TableStore Trigger觸發函數服務的數據事件為CBOR格式,是一種類似於JSON的二進製格式,不可讀,所以我們暫時使用JSON來做調試。將my_handler中的序列化修改為records = json.loads(event),點擊執行,會看到測試成功,如果Weight大於120,配置好的手機號還將會收到一條短信。
    2.jpg
    c) 調試完成之後,將 records=json.loads(event) 刪除或者注釋掉,打開 records = cbor.loads(event) ,點擊保存。

  • 7.2.6 進入表格存儲控製台的實例下,會看到多張表,選擇“geo”的表,點擊開啟Stream,設置過期時間為24,成功之後,點擊使用觸發器

  • 7.2.7 選擇使用已有的函數計算

f1.png

  • 7.2.8 將之前創建的alert函數綁定
    f2.png

  • 7.2.9 重新運行Demo APP,選擇一輛單車騎行,在騎行的過程中,APP會虛擬一個異常的重量,此時,大家能都到一條報警短信

8. 函數服務日誌收集及分析

最後更新:2017-10-10 16:03:31

  上一篇:go  獨家 | 6步教你用R語言製作動圖
  下一篇:go  Android熱修複升級探索——代碼修複冷啟動方案