全部產品
Search
文件中心

Function Compute:使用Function Compute實現OSS壓縮檔的自動解壓

更新時間:Oct 16, 2024

您可以通過使用Serverless DevsFunction Compute控制台完成函數的部署,當匹配解壓規則的ZIP檔案上傳到OSS後,會觸發函數自動解壓。

注意事項

  • 建議使用UTF-8或GB 2312編碼命名您的檔案或檔案夾,否則可能導致解壓後的檔案或檔案夾名稱出現亂碼、解壓過程中斷等問題。

  • 向Bucket上傳壓縮檔時,請不要選擇Archive Storage或冷Archive Storage類型,否則無法正常觸發函數執行。

  • 壓縮檔建議使用標準的ZIP命令列進行壓縮,防止解壓失敗。

  • 向Bucket上傳的壓縮檔中,單個檔案大小不要超過1 GB,否則可能導致解壓失敗。

  • 解壓單個壓縮包的最大時間為2小時,超過2小時未完成的任務會解壓失敗。

  • 預設設定的函數執行時間長度為2小時,您可以調整函數的執行逾時時間來滿足業務需求。

操作流程

使用Function Compute控制台實現壓縮檔的自動解壓

前提條件

操作步驟

  1. 登入Function Compute控制台,在左側導覽列,單擊應用
  2. 應用頁面,單擊建立應用

  3. 建立應用頁面,選擇建立應用的方式。

    本文以通過模板建立應用方式為例進行介紹。

  4. 在下方模板地區,選擇熱門 App頁簽,找到OSS上傳zip檔案自動解壓卡片,游標放到該卡片,然後單擊立即建立

  5. 建立應用頁面,設定以下配置項,然後單擊建立並部署

    主要配置項說明如下,其餘配置項選擇預設值即可。

    配置項

    說明

    基本資料

    部署類型

    選擇直接部署

    角色名稱

    預設為角色AliyunFCServerlessDevsRole。如果現有許可權不足,單擊+添加策略,在彈出的對話方塊選擇要添加的策略,然後單擊添加

    進階配置

    地區

    選擇應用部署的地區。

    服務名

    設定要建立的應用所屬的服務名稱。

    函數名

    設定要建立的應用所屬的函數名稱。

    RAM角色ARN

    選擇OSS觸發函數時所用的角色。請確保已為該角色配置AliyunOSSFullAccessAliyunFCDefaultRolePolicy權限原則。

    OSS儲存桶名

    選擇已建立的Bucket。

    首碼

    設定檔案首碼。預設為src。同一個Bucket下的不同觸發器的檔案首碼不能重複。

    解壓目標目錄

    設定檔案解壓後的目標儲存目錄。預設為dst

    說明

    為了防止迴圈觸發函數,請將此目錄設定為不同於首碼的目標目錄。

    是否保留壓縮檔名為路徑目錄

    設定是否保留壓縮檔名為路徑的目錄。取值說明如下:

    • true:保留壓縮檔名為路徑目錄。例如,設定的解壓目標目錄target,壓縮檔名為source.zip,解壓後檔案路徑為target/source/...

    • false:直接解壓到目標目錄中。上述樣本中,解壓後檔案路徑為target/...

    觸發器RAM角色ARN

    預設為角色AliyunOSSEventNotificationRole,OSS會使用此角色發送事件通知調用函數。

  6. 測試應用。

    上傳.zip檔案至與您設定的首碼匹配的目錄時,觸發應用所屬函數執行,自動將.zip檔案解壓並儲存至您設定的解壓目標目錄

    例如,您設定的首碼source解壓目標目錄target。將.zip檔案上傳至sourcesource1時,均觸發函數執行,並自動解壓儲存檔案至target

(推薦)使用Serverless Devs實現壓縮檔的自動解壓

前提條件

操作步驟

  1. 執行以下命令,下載樣本工程。

    git clone git@github.com:awesome-fc/decompress-oss.git
  2. 執行以下命令,進入專案目錄。

    cd decompress-oss
  3. 編輯s.yaml檔案內的配置資訊並儲存。

    • 將檔案內的bucketName的參數資訊your-bucket修改為您建立的Bucket的名稱。

    • 可選:按需修改OSS觸發器首碼Prefix、尾碼Suffix和解壓後檔案儲存的目錄PROCESSED_DIR的參數資訊。

    說明

    本文樣本中OSS觸發器首碼預設為src/,您可以設定為src;解壓後檔案儲存目錄預設為dst/

  4. 執行以下命令,部署專案。

    sudo s fc-decompress-oss-invoke-fc-EnhancedInstance deploy -y

    輸出樣本。

     Checking Service, Function, Triggers (18.63s)
     Creating Service, Function, Triggers (13.44s)
    
    There is auto config in the service: enhancedInstance-decompress
    
    Tips for next step
    ======================
    * Display information of the deployed resource: s info
    * Display metrics: s metrics
    * Display logs: s logs
    * Invoke remote function: s invoke
    * Remove Service: s remove service
    * Remove Function: s remove function
    * Remove Trigger: s remove trigge
    * Remove CustomDomain: s remove domain
    
    
    fc-decompress-oss-invoke-fc-EnhancedInstance:
      region:   cn-hangzhou
      service:
        name: enhancedInstance-decompress
      function:
        name:       oss-invoke-fc
        runtime:    python3
        handler:    index.handler
        memorySize: 4096
        timeout:    7200
      triggers:
        -
          type: oss
          name: zip-t
        -
          type: oss
          name: gz-t
        -
          type: oss
          name: tar-t
  5. 向Bucket中上傳尾碼為.zip、.tar、.gz等壓縮檔到指定的目錄並觸發解壓函數執行。

    本文樣本的預設目錄為src/,解壓後的檔案會自動產生到指定的目錄dst/

相關文檔