全部產品
Search
文件中心

Function Compute:使用Function Compute實現多個檔案的打包下載

更新時間:Jul 06, 2024

當您需要從Object Storage Service中批量下載多個檔案時,可能會遇到批量下載不方便、小檔案較多等情況。 您可以通過Function Compute將Object Storage Service中的多個檔案打包下載至本地,既可以節約時間又可以節省流量和相關費用。

流程及實現細節

流程圖

使用Function Compute在Object Storage Service中同時下載多個檔案的流程圖如下:

  1. 按需調用函數,指定儲存空間及待壓縮檔。

  2. 調用函數後,Function Compute從Object Storage Service中下載目標檔案並壓縮成ZIP包。

  3. Function Compute將ZIP包上傳到Object Storage Service中。

  4. Function Compute將給您返回目標ZIP檔案在Object Storage Service中的地址。

  5. 您可以通過步驟4返回的地址下載目標檔案。

實現細節

流程圖中步驟2步驟3實現的原理如下。

使用這種調用方式有以下優勢:

  • 函數運行環境的磁碟空間是有限的,採用流式下載和上傳的方式,在記憶體中只緩衝少量資料。

  • 上傳ZIP檔案到Object Storage Service時,利用Object Storage Service分區上傳的特性,將分區以隊列的形式多線程並發上傳。

前提條件

操作步驟

  1. 執行以下命令,初始化專案。

    sudo s init start-zip-oss -d start-zip-oss 
  2. 執行以下命令,進入專案,並進行專案部署。

    cd start-zip-oss && sudo s deploy - y

    部署成功後,輸出樣本如下。記錄返回的system_url,在調用函數時需要使用。

    
     Checking Service, Function, Triggers (2.44s)
     Creating Service, Function, Triggers (1.18s)
    
    ......
    fc-zip-oss-service:
      region:   cn-hangzhou
      service:
        name: zip-oss
      function:
        name:       zip-oss-func
        runtime:    python3.9
        handler:    main.main_handler
        memorySize: 3072
        timeout:    1800
      url:
        system_url:          https://zip-oss-func-zip-oss-****.cn-hangzhou.fcapp.run
        system_intranet_url: https://zip-oss-func-zip-oss-****.cn-hangzhou-vpc.fcapp.run
      triggers:
        -
          type: http
          name: http-test
  3. 應用部署成功後,調用部署好的函數下載多個檔案。

    1. start-zip-oss目錄下建立event.json檔案,並在檔案中指定Bucket名稱以及待下載的檔案。

      • 通過source-dir指定要下載的檔案所在的目錄。

        cat <<EOF > event.json
        {
          "bucket": "bucketname", 
          "source-dir": "filepath/"
        }
        EOF
      • 通過source-files指定要下載的檔案清單。

        cat <<EOF > event.json
        {
          "bucket": "bucketname", 
          "source-files": ["files1.txt","filepath/files2.txt"]
        }
        EOF
    2. 使用curl命令直接調用函數。

      start-zip-oss目錄下建立一個檔案夾用於存放壓縮的檔案,本文以tmp檔案夾為例。執行的curl命令樣本如下:

      說明

      請將命令樣本中的訪問地址更新為您部署應用成功後返回的公網訪問地址system_url

      curl -v -L -o /tmp/my.zip -d @./event.json https://zip-oss-func-zip-oss-****.cn-hangzhou.fcapp.run

      調用成功後,您可以在start-zip-oss/tmp檔案夾中查看到下載的壓縮檔。同時登入Object Storage Service控制台,在相應的Bucket下的output目錄也可以看到下載的壓縮檔。

實驗資料

情境

檔案數

壓縮前總大小

壓縮後總大小

執行時間

1

7

1.2 MB

1.16 MB

0.4s

2

57

1.06 GB

0.91 GB

63s

您可以通過以上表格擷取以下兩個資訊:

  • 情境1說明使用Function Compute實現多個檔案的下載,可以減少檔案的儲存空間。

  • 情境2說明使用Function Compute實現多個檔案的下載,可以在短時間內下載大量檔案。

相關文檔