91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

函數計算如何訪問 Mongo 數據庫

發布時間:2021-11-22 16:15:43 來源:億速云 閱讀:124 作者:柒染 欄目:云計算

這篇文章給大家介紹函數計算如何訪問 Mongo 數據庫,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

函數計算(Function Compute): 函數計算 是事件驅動的全托管計算服務。使用函數計算,您無需采購與管理服務器等基礎設施,只需編寫并上傳代碼。函數計算為您準備好計算資源,彈性地可靠地運行任務,并提供日志查詢、性能監控和報警等功能。借助函數計算,您可以快速構建任何類型的應用和服務,并且只需為任務實際消耗的資源付費。

訪問 MongoDB 數據庫是指在函數計算中通過編寫代碼調用數據庫驅動庫通過 TCP 協議實現對數據庫進行的插入、查詢等操作。通常函數計算中運行的不同函數實例之間是不共享狀態的,對于結構化的數據可以通過數據庫的形式進行持久化以實現狀態共享。由于用戶函數運行在函數計算的 VPC 中,而用戶的數據庫運行在用戶所屬的 VPC 中,所以在函數計算平臺訪問數據庫會涉及到跨 VPC 訪問的場景,下面我們先來介紹一下其工作機制。

工作機制

訪問 MongoDB 的原理、工作機制與訪問 Mysql 數據庫完全相同,本文不再重復闡述,更詳細的內容請參考 訪問 Mysql 數據庫 中的工作機制章節。

配置與函數編寫

公共配置

創建專有網絡VPC
  1. 登錄 VPC控制臺。

  2. 參閱 VPC  搭建專有網絡 創建VPC和交換機。

創建安全組

在 安全組控制臺 新建安全組,點擊 創建安全組,設置安全組名稱,網絡類型選擇 專有網絡,并選擇剛才創建的專有網絡。

創建與配置 MongoDB 實例
  1. 創建適合業務需求的云數據庫 MongoDB 版實例可以參考 云數據庫 MongoDB 版。

    注意:創建云數據庫 MongoDB 版實例需要選擇和函數計算配置相同的 VPC 實例,可以配置和函數計算不同的可用區的交換機,因為相同的 VPC 實例下不同可用區交換機內網是互通的。

  2. 創建成功后,在實例信息頁面左側的導航欄中單擊白名單設置

  3. 單擊 default 區域框右側的修改
    函數計算如何訪問 Mongo 數據庫

  4. 在彈出的對話框中,將函數計算所在的 VPC 網絡的網段地址配置在白名單輸入框中。

    1. 登錄 VPC 控制臺,在專有網絡列表中找到應用所在的 VPC,單擊該 VPC 的名稱進入專有網絡詳情頁面。

    2. 復制應用所在的 VPC 的 IPv4 網段
      函數計算如何訪問 Mongo 數據庫

    3. 組內白名單設置框中粘貼該 VPC 的 IPv4 網段地址,然后單擊確定
      函數計算如何訪問 Mongo 數據庫

  5. 最后訪問 MongoDB 數據庫 host 為實例的內網地址,可以登錄阿里云控制臺查看:

    多種語言的客戶端連接阿里云 MongoDB 可以參考 MongoDB 客戶端連接。

    函數計算如何訪問 Mongo 數據庫

函數計算配置 VPC

注意:函數計算服務所在區域與公共配置中創建的資源所在區域一致。

  1. 在 函數計算控制臺 創建服務。

    • 創建服務步驟請參考文章 服務的增刪改查

  2. 【專有網絡配置】選項中,選擇您在步驟一中創建的 VPC 網絡,交換機、安全組。

  3. 【權限配置】選項中,選擇【新建角色】,點擊【點擊授權】,在角色快速創建頁面,點擊【同意授權】。

    • 這步的操作是授予函數計算對 ENI 的操作權限,函數計算訪問 VPC 中資源需要的權限請參考文章 配置函數計算訪問 VPC 內的資源

  4. 點擊確定,新建服務完畢。

函數編寫與調試

下面演示 Python3 開發語言訪問 MongoDB 數據庫函數示例創建:

使用 Fun 工具在建立存放代碼和依賴模塊目錄下安裝依賴和項目部署。

  1. 建立一個目錄,用于存放代碼和依賴模塊,在該目錄下新建 template.yml 文件,例如 /tmp/code/template.yml,內容為:

    ROSTemplateFormatVersion: '2015-09-01'
    Transform: 'Aliyun::Serverless-2018-04-03'
    Resources:
     MongoDB-test:
       Type: 'Aliyun::Serverless::Service'
       Properties:
         Description: This is MongoDB service
         Role: 'acs:ram::XXXX:role/fc-public-test'
         LogConfig:
           Project: XXX
           Logstore: XXX
         VpcConfig:
           VpcId: vpc-XXXX
           VSwitchIds:
             - vsw-XXX
           SecurityGroupId: sg-XXXX
         InternetAccess: true
       python-test:
         Type: 'Aliyun::Serverless::Function'
         Properties:
           Handler: 'index.handler'
           Runtime: python3
           Timeout: 10
           MemorySize: 128
           CodeUri: './'
  2. 在該目錄下創建 Funfile 文件內容為:

    RUNTIME python3
    RUN fun-install pip install pymongo
  3. 執行fun install命令安裝依賴:

     $ fun install
     using template: template.yml
     start installing function dependencies without docker
     安裝過程。。。。
     Install Success
  4. 在函數根目錄下新建代碼文件,例如 /tmp/code/index.py,在代碼中使用 pymongo :

    # -*- coding: utf-8 -*-
    import uuid
    from pymongo import MongoClient
    def handler(event, context):
         CONN_ADDR1 = 'dds-XXX.mongodb.rds.aliyuncs.com:3717'
         CONN_ADDR2 = 'dds-XXXX.mongodb.rds.aliyuncs.com:3717'
         REPLICAT_SET = 'XXX'
         username = 'XXX'
         password = 'XXXX'
         #獲取mongoclient
         client = MongoClient([CONN_ADDR1, CONN_ADDR2], replicaSet=REPLICAT_SET)
         #授權. 這里的user基于admin數據庫授權
         client.admin.authenticate(username, password)
         #使用test數據庫的collection:testColl做例子, 插入doc, 然后根據DEMO名查找
         demo_name = 'python-' + str(uuid.uuid1())
         print ('demo_name:'+ demo_name)
         doc = dict(DEMO=demo_name, MESG="Hello ApsaraDB For MongoDB")
         doc_id = client.test.testColl.insert(doc)
         for d in client.test.testColl.find(dict(DEMO=demo_name)):
             print ('find documents:'+ str(d))
         return 'success'
  5. 使用 fun 工具部署:

     $ fun deploy
     using template: template.yml
     using region: cn-hangzhou
     using accountId: ***********3743
     using accessKeyId: ***********Ptgk
     using timeout: 60
     部署過程。。。
             function python-test deploy success
     service MongoDB-test deploy success

    登錄控制臺,即可看到相關的服務、函數被創建成功,且觸發執行可以返回正確的結果。

通過本文介紹可以快速實現函數計算訪問 Mongo 數據庫。

使用函數計算帶來的優勢:

  1. 無需采購和管理服務器等基礎設施,只需專注業務邏輯的開發,可以大幅縮短項目交付時間和人力成本;

  2. 提供日志查詢、性能監控、報警等功能快速排查故障;

  3. 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力,性能優異;

  4. 成本極具競爭力;

關于函數計算如何訪問 Mongo 數據庫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上思县| 周口市| 秦皇岛市| 南京市| 哈尔滨市| 巴彦县| 朝阳县| 玉田县| 方城县| 无极县| 泸州市| 庐江县| 田阳县| 台中市| 仪征市| 五莲县| 榆林市| 彰武县| 樟树市| 桑日县| 南投市| 宁武县| 盘锦市| 永春县| 镇赉县| 白银市| 桦甸市| 古交市| 格尔木市| 元朗区| 洛隆县| 石渠县| 佛冈县| 黄冈市| 丹东市| 师宗县| 政和县| 宁陕县| 即墨市| 浦县| 水城县|