日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

函数计算如何访问 PostgreSQL 数据库

發布時間:2024/8/23 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数计算如何访问 PostgreSQL 数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

工作機制

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

配置與函數編寫

公共配置

創建專有網絡VPC

  • 登錄?VPC控制臺。
  • 參閱?VPC?搭建專有網絡?創建VPC和交換機。
  • 創建安全組

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

    注意:設置安全組策略的時候,需要在出口方向放行 PostgreSQL 實例的端口和配置的 VPC 內網 IP 段。

    創建與配置 PostgreSQL 實例

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

  • 創建成功后,在實例信息頁面左側的導航欄中單擊數據安全性
  • 單擊?添加白名單分組?。
  • 在彈出的對話框中,將函數計算所在的 VPC 網絡的網段地址配置在白名單輸入框中。

  • 登錄?VPC 控制臺,在專有網絡列表中找到應用所在的 VPC,單擊該 VPC 的名稱進入專有網絡詳情頁面。
  • 復制應用所在的 VPC 的?IPv4 網段
  • 組內白名單設置框中粘貼該 VPC 的?IPv4 網段地址,然后單擊確定
  • 最后訪問 PostgreSQL 數據庫 host 為實例的內網地址,可以登錄阿里云控制臺查看:

  • 函數計算配置 VPC

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

  • 在?函數計算控制臺?創建服務。

    • 創建服務步驟請參考文章?服務的增刪改查
  • 【專有網絡配置】選項中,選擇您在步驟一中創建的 VPC 網絡,交換機、安全組。
  • 【權限配置】選項中,選擇【新建角色】,點擊【點擊授權】,在角色快速創建頁面,點擊【同意授權】。

    • 這步的操作是授予函數計算對 ENI 的操作權限,函數計算訪問 VPC 中資源需要的權限請參考文章?配置函數計算訪問 VPC 內的資源
  • 點擊確定,新建服務完畢。
  • 函數編寫與調試

    下面演示 Python3 開發語言訪問 PostgreSQL 數據庫。

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

    Python3

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

    ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources:PostgreSQL-test:Type: 'Aliyun::Serverless::Service'Properties:Description: This is PostgreSQL serviceRole: 'acs:ram::1986114430***:role/fc-public-test'SimpleRequestVpcConfig:VpcId: vpc-****VSwitchIds:- vsw-***SecurityGroupId: sg-***InternetAccess: truepython-test:Type: 'Aliyun::Serverless::Function'Properties:Handler: 'index.handler'Initializer: 'index.initializer'Runtime: python3Timeout: 10MemorySize: 128CodeUri: './'EnvironmentVariables:HOST: pgm-bp1yawvyyu***.pg.rds.aliyuncs.comPASSWORD: Txd123**PORT: 1433DATABASE: test_123USER: ***
  • 在該目錄下創建 Funfile 文件內容如下。

    RUNTIME python3 RUN fun-install pip install psycopg2
  • 執行fun install命令安裝依賴:

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

    # -*- coding: utf-8 -*- import logging import psycopg2 import os,sys logger = logging.getLogger()def getConnection():try:conn = psycopg2.connect(database = os.environ['DATABASE'],user = os.environ['USER'],password = os.environ['PASSWORD'],host = os.environ['HOST'],port = os.environ['PORT'],)return connexcept Exception as e:logger.error(e)logger.error("ERROR: Unexpected error: Could not connect to PostgreSQL instance.")sys.exit()def conditionallyCreateUsersTable():conn = getConnection()cur = conn.cursor()cur.execute('''CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);''')conn.commit()conn.close()def initializer(context):conditionallyCreateUsersTable()def handler(event, context):try:conn = getConnection()cur = conn.cursor()cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (1, 'Paul', 32, 'California', 20000.00 )");conn.commit()return 'successfully'finally:conn.close()
  • 執行以下命令部署函數。

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

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

  • 總結

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

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

  • 無需采購和管理服務器等基礎設施,只需專注業務邏輯的開發,可以大幅縮短項目交付時間和人力成本;
  • 提供日志查詢、性能監控、報警等功能快速排查故障;
  • 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峰值壓力,性能優異;
  • 成本極具競爭力;
  • “阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”

    原文鏈接
    本文為云棲社區原創內容,未經允許不得轉載。

    總結

    以上是生活随笔為你收集整理的函数计算如何访问 PostgreSQL 数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。