【AGC】云存儲服務端使用方法

?【集成準備】

1、Python環境配置

下載Python和PyCharm并安裝。

cke_125677.png?

使用安裝的python本身作為解釋器。

cke_134497.png?

安裝AGC Python SDK。

cke_139799.png?云存儲包安裝完成。

?

2、AGC環境配置

在AGC創建項目和應用

cke_148779.png?

開通云存儲服務。

返回項目設置界面,選擇Server SDK 頁簽,在認證憑據處點擊創建按鈕,然后下載認證憑據。

cke_154152.png?

將認證憑據導入到項目中

【布局設計】

本次測試的Demo是一個Python服務,所以沒有界面UI。

【功能實現】

引入AGC與云存儲模塊

from agconnect.cloud_storage import AGCCloudStorageExceptionfrom agconnect.cloud_storage import GetFilesOptionsfrom agconnect.cloud_storage import Metadatafrom agconnect.cloud_storage import StorageManagementfrom agconnect.common_server import AGCClient, CredentialParser, logger

將下載的憑據文件放入項目中,調用AGCClient.initialize方法初始化AGCClient實例

將配置開發環境中獲取的認證憑據放置到自定義的目錄,通過initialize方法初始化對應認證憑據的AGCClient實例。

通過StorageManagement()來初始化存儲實例。

bucket_name = 'cloudstoragepython-kyuv2'file_name = 'test.txt' # for example: "test.txt"config_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'agc-apiclient-1157238089186298880-7233693580609187129.json'))credential = CredentialParser.to_credential(config_path)AGCClient.initialize(credential=credential)storage = StorageManagement()bucket = storage.bucket(bucket_name)

上傳文件

使用bucket.upload方法將文件上傳到云端。

def upload_file(bucket):config_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'C:\Users\kwx1075489\Desktop\agcserversdk-python-1.3.0.300\test.txt'))if not os.path.exists(config_path):logger.error("file does not exist")loop = asyncio.new_event_loop()try:asyncio.set_event_loop(loop)result = loop.run_until_complete(bucket.upload(path_str=config_path))logger.info(f"Upload file response: {result}")except (Exception, AGCCloudStorageException) as e:raise AssertionError(f"An error occurred during the upload file process: {e}")finally:loop.close()

調用file.get_metadata方法獲取設置在云端的元數據

def get_file_metadata(bucket, file_name):file = bucket.file(file_name)loop = asyncio.new_event_loop()try:asyncio.set_event_loop(loop)result = loop.run_until_complete(file.get_metadata())res_json = loop.run_until_complete(result.json(content_type='text/plain'))logger.info(f"Get file metadata: {res_json}")except (Exception, AGCCloudStorageException) as e:raise AssertionError(f"An error occurred during the get file metadata: {e}")finally:loop.close()

調用file.set_metadata方法將文件屬性的元數據和自定義的元數據覆蓋到云端。

def update_file_metadata(bucket, file_name):file = bucket.file(file_name)loop = asyncio.new_event_loop()try:asyncio.set_event_loop(loop)get_result = loop.run_until_complete(file.get_metadata())get_result_text = loop.run_until_complete(get_result.text())get_result_json = json.loads(get_result_text)metadata = Metadata(content_language='en-US', custom_metadata={'test': 'test'},content_type=get_result_json.get('contentType'))set_result = loop.run_until_complete(file.set_metadata(metadata))set_result_json = loop.run_until_complete(set_result.json(content_type='text/plain'))logger.info(f"Update file metadata response: {set_result_json}")except (Exception, AGCCloudStorageException) as e:raise AssertionError(f"An error occurred during the update file metadata: {e}")finally:loop.close()

調用file.download方法將云端文件數據寫入本地文件中。

def download_file(bucket, file_name):def progress_callback(progress: Dict[str, int] = None):logger.info(f"Downloaded {progress['writtenBytes']} bytes out of {progress['totalBytes']}")loop = asyncio.new_event_loop()asyncio.set_event_loop(loop)try:local_file = os.path.normpath(os.path.join(os.path.dirname(__file__), ' C:\Users\kwx1075489\Desktop'))if not os.path.exists(local_file):logger.error("file does not exist")remote_file = bucket.file(file_name)text, resp = loop.run_until_complete(remote_file.download(local_file, on_download_progress=progress_callback))logger.info(f"Download file response: {resp}")assert text == "File downloaded successfully. "except (Exception, AGCCloudStorageException) as e:raise AssertionError(f"An error occurred during the download file process: {e}")finally:loop.close()

調用file.download方法獲取當前目錄下的文件與子目錄。

def get_files(bucket):loop = asyncio.new_event_loop()asyncio.set_event_loop(loop)options = GetFilesOptions(delimiter="/")try:result = loop.run_until_complete(bucket.get_files(options=options))logger.info(f"Get file list response: {result}")except (Exception, AGCCloudStorageException) as e:raise AssertionError(f"An error occurred during the get file list: {e}")finally:loop.close()

調用file.delete方法刪除云端文件。

def get_files(bucket):loop = asyncio.new_event_loop()asyncio.set_event_loop(loop)options = GetFilesOptions(delimiter="/")try:result = loop.run_until_complete(bucket.get_files(options=options))logger.info(f"Get file list response: {result}")except (Exception, AGCCloudStorageException) as e:raise AssertionError(f"An error occurred during the get file list: {e}")finally:loop.close()

【功能測試】

執行python main.py命令,服務依次執行:

上傳“test.txt”文件到云端:

cke_165928.png?

從云端下載“test.txt”文件到本地目錄:

從云端刪除“cloudstoragepython-kyuv2”存儲區的“test.txt”文件:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162666.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

雙系統Ubuntu-22.04.3安裝編譯kaldi

Ubuntu物理內存要求85-100G以上,運行內存5-6G以上(如果第一次安裝的Ubuntu物理內存不夠,請勿進行擴容,擴容易出現黑屏、藍屏、死機的情況,應該卸載Ubuntu重新安裝,在安裝過程中進行內存分配;運行…

4.22每日一題(累次積分的計算:交換次序)

注:因為 是積不出的函數,所以先不用算,最后發現,出現dx與dy可以相互抵消,即可算出答案

為企業解決設備全生命周期需求,凌雄科技凸顯DaaS增長價值

企業成長離不開投資,但毫無疑問的是,投資最有價值的部分在業務。相比之下,諸如辦公設備之類的固定資產投資,很容易變成企業現金流的吞噬者。從購買、運維到保養、折舊、回收,現代企業在越來越大的辦公設備規模面前&…

工具 | docker刪除不使用的容器

工具 | docker刪除不使用的容器 Docker 清理命令

數據庫|TiDB v7.1.0 資源管控功能是如何降低運維難度和成本

目錄 一、前言 二、資源管控流程圖 三、資源管控 (Resource Control)測試 1)測試集群環境 2)Request Unit (RU) 概念 3)資源管控參數 4)評估實際負載所需容量 4.1 根據實際負載估算容量 方法一 or: 方法二 4.2 基于硬件…

鴻蒙原生應用/元服務開發-AGC分發如何配置簽名信息

使用制作的私鑰(.p12)文件、在AGC申請的證書文件和Profile(.p7b)文件,在DevEco Studio配置工程的簽名信息,以構建攜帶發布簽名信息的APP。 1.打開DevEco Studio,菜單選擇“File > Project S…

va-Q-tec實現溫度敏感產品運輸過程質量控制溫控無憂

摘要:溫度敏感產品運輸對供應鏈全流程的溫度質量要求較高,往往需要借助特殊的溫濕度監測技術產品。va-Q-tec與虹科Comet合作,采用虹科Comet的U系列溫度記錄儀,為集裝箱運輸過程提供完整的溫控包裝解決方案。 一、客戶背景 va-Q-…

鈷電解液中凈化除鎳除銅樹脂

#鈷電解液中凈化除鎳除銅樹脂 鈷是生產各種合金及電池不可或缺的原材料,鈷資源供給主要來自于大型銅礦和鎳礦的伴生開采,鈷的主要應用領域為動力電池、3C消費電池、各種耐熱合金、硬質合金、防腐合金、磁性合金及各種鈷鹽等。其中,電池領域是…

【洛谷算法題】P5714-肥胖問題【入門2分支結構】

👨?💻博客主頁:花無缺 歡迎 點贊👍 收藏? 留言📝 加關注?! 本文由 花無缺 原創 收錄于專欄 【洛谷算法題】 文章目錄 【洛谷算法題】P5714-肥胖問題【入門2分支結構】🌏題目描述🌏輸入格式&a…

給項目快速接入鏈路追蹤

為什么需要鏈路追蹤? 我們程序員在日常工作中,最常做事情之一就是修bug了。如果程序只是運行在單機上,我們最常用的方式就是在程序上打日志,然后程序運行的過程中將日志輸出到文件上,然后我們根據日志去推斷程序是哪一…

py 打包的6種方式

Python打包有幾種方式取決于你的需求,以下是常見的幾種方式: 使用PyInstaller打包:PyInstaller是一個非常流行的Python打包工具,可以將Python程序打包成獨立的可執行文件。它支持Windows、Linux和macOS等操作系統,并且…

redis-cluster集群

1.redis-cluster集群 redis3.0引入的分布式存儲方案 集群由多個node節點組成,redis數據分布在這些節點之中。 在集群之中分為主節點和從節點 集群模式當中,主從一一對應,數據寫入和讀取與主從模式一樣,主負責寫,從…

網頁小游戲的開發流程

網頁小游戲的開發流程可以分為幾個關鍵步驟。這只是一個一般性的流程概述,具體的步驟可能會根據項目的規模和要求而有所不同。此外,還要考慮法律和版權問題,確保你的游戲開發過程是合法的。下面是一個簡要的概述,希望對大家有所幫…

Android WorldWind加載shapefile格式文件形成三維效果

目錄 1 前言2 實現思路3 繪制Polygons4 讀取shapefile文件5 加載立體模型6 問題1 前言 在項目中有時會加載shapefile格式的數據,要形成三維立體效果。但是查看worldwind NASA官網,在worldwind android的使用教程中并沒用加載shapefile格式的教程,然后源碼中也沒有開發加載s…

單片機調試技巧--棧回溯

在啟動文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…

透明數據加密與Data Pump的結合

我有2套數據庫環境: 源數據庫為19c,users表空間已加密目標數據庫為11g,表空間已加密 我需要遷移源數據庫users表空間上的employees表到目標數據庫上的加密表空間。 源數據庫上表的導出。為簡化實驗,我只導出數據,而…

java--static修飾成員變量

1.static 叫靜態,可以修飾成員變量、成員方法。 2.成員變量按照有無static修飾,分為兩種: ①類變量:有static修飾,屬于類,在計算機里只有一份,會被類的全部對象共享(不管那個類調用的&#x…

CyberRT-共享內存實現

CyberRT共享內存類圖 共享內存消息發布 數據用共享內存發布時,首先會創建ShmTransmitter對象,包含兩個主要成員segment和notifier,Segment用于創建共享內存(上面綠色部分),Notifer 最終構建ReadableInfo通…

Navicat 技術指引 | 適用于 GaussDB 的自動運行功能

Navicat Premium(16.2.8 Windows版或以上) 已支持對 GaussDB 主備版的管理和開發功能。它不僅具備輕松、便捷的可視化數據查看和編輯功能,還提供強大的高階功能(如模型、結構同步、協同合作、數據遷移等),這…

《第一行代碼:Android》第三版-2.4.2when語句

瀏覽器中輸入網址:play.kotlinlang.org 進去后黏貼代碼點擊Run就可以看到結果了。 when 語句允許傳入任何類型的參數,然后在when結構體中定義一系列條件when還可以進行類型匹配 /*** You can edit, run, and share this code.* play.kotlinlang.org*/ f…