すべてのプロダクト
Search
ドキュメントセンター

Function Compute:Function Computeを使用してOSSのファイルを自動的に解凍する

最終更新日:Oct 17, 2024

Serverless Devsfunction Computeコンソールを使用して関数をデプロイし、ファイルがObject Storage Service (OSS) にアップロードされた後、解凍ルールを満たすZIPファイルを自動的に解凍することができます。

使用上の注意

  • ファイルまたはフォルダーの名前をUTF-8またはGB 2312でエンコードすることを推奨します。 そうしないと、解凍されたファイルまたはフォルダの名前が文字化けしたり、解凍が中断されたりする可能性があります。

  • 圧縮ファイルをOSSバケットにアップロードするときは、アーカイブまたはコールドアーカイブストレージを選択しないでください。 それ以外の場合、関数は期待どおりに実行できません。

  • 標準のzipコマンドラインユーティリティを使用してファイルを圧縮し、解凍の失敗を防ぐことを推奨します。

  • OSSバケットにアップロードする圧縮ファイルのサイズは、1 GB以下である必要があります。 そうしないと、ファイルの解凍に失敗する可能性があります。

  • ZIPファイルを解凍する時間は、2時間を超えることはできません。 ZIPファイルが2時間以内に解凍されない場合、解凍タスクは停止されます。

  • デフォルトでは、OSSオブジェクトを解凍する関数のタイムアウト時間は2時間です。 ビジネス要件に基づいて実行タイムアウト期間を調整できます。

手順

image

Function Computeコンソールの使用

前提条件

手順

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。

  2. アプリケーションページで、アプリケーションの作成 をクリックします。

  3. [アプリケーションの作成] ページで、アプリケーションの作成方法を選択します。

    このトピックでは、[テンプレートを使用してアプリケーションを作成する] を選択します。

  4. [ホットテンプレート] タブをクリックします。 タブで、アップロードされたファイルを自動的に解凍するためのアプリケーションの作成に使用するカード (start-unzip-ossなど) にポインターを移動し、[今すぐ作成] をクリックします。

  5. アプリケーションの作成ページで、パラメーターを設定し、デフォルト環境の作成とデプロイをクリックします。

    手動設定が必要なパラメーターを次の表に示します。 他のパラメーターのデフォルト値を保持します。

    パラメーター

    説明

    基本設定

    展開タイプ

    [直接デプロイ] を選択します。

    ロール名

    デフォルトでは、AliyunFCServerlessDevsRoleが選択されています。 既存のポリシーが要件を満たしていない場合は、[ポリシーの追加] をクリックします。 表示されるダイアログボックスで、追加するポリシーを選択し、[追加] をクリックします。

    高度な設定

    リージョン

    アプリケーションをデプロイするリージョンを選択します。

    サービス名

    作成するアプリケーションが属するサービスの名称を设定します。

    関数名

    作成するアプリケーションが属する関数名を设定します。

    RAMのARN

    関数のトリガーに使用するロールを選択します。 AliyunOSSFullAccessおよびAliyunFCDefaultRolePolicyポリシーがロールにアタッチされていることを確認します。

    OSSバケット名

    既存のバケットを選択します。

    プレフィックス

    アップロードされたファイル名に含まれるプレフィックスを指定します。 デフォルト値はsrcです。 同じバケット内の2つのトリガーに同じプレフィックスを設定しないでください。

    解凍先ディレクトリ

    解凍されたファイルを保存するディレクトリを設定します。 デフォルト値はdstです。

    説明

    ループのトリガーを防ぐには、このディレクトリをプレフィックスの値とは異なる値に設定します。

    圧縮ファイル名をパスディレクトリとして使用するかどうか

    解凍したファイルを保存するディレクトリの名前として、圧縮ファイルの名前を使用するかどうかを指定します。 以下の点にご注意ください。

    • true: 圧縮ファイルの名前をディレクトリ名として使用します。 たとえば、解凍先ディレクトリtargetに設定され、圧縮ファイル名がsource.zipの場合、解凍されたファイルのパスはtarget/source/... です。

    • false: 圧縮ファイルの名前をディレクトリ名として使用しません。 上記の例では、解凍されたファイルパスはtarget/....

    トリガーRAMロールARN

    デフォルト値はAliyunOSSEventNotificationRoleです。 OSSはこのロールを使用してイベント通知を送信し、関数を呼び出します。

  6. アプリケーションをテストします。

    指定したプレフィックスに一致するディレクトリにZIPファイルをアップロードします。 関連付けられた関数は、decompress destination directoryパラメーターで指定されたディレクトリにファイルを解凍するようにトリガーされます。

    たとえば、Prefixsourceに設定し、Decompression Destination Directorytargetに設定した場合、ZIPファイルをsourceまたはsource1にアップロードすると、関数はファイルをtargetに解凍します。

(推奨) Serverless Devsの使用

前提条件

  • Function Computeが有効化されています。 詳細については、「関数の迅速な作成」の手順1をご参照ください。

手順

  1. 次のコマンドを実行してデモプロジェクトをダウンロードします。

    git clone git@github.com:awesome-fc/decompress-oss.git
  2. 次のコマンドを実行して、プロジェクトディレクトリに移動します。

    cd decompress-oss
  3. s.yamlファイルで設定情報を編集し、ファイルを保存します。

    • bucketNameパラメーターの値をyour-bucketから作成したバケットの名前に変更します。

    • (オプション) OSSトリガーのプレフィックスサフィックスPROCESSED_DIRパラメーターの値を変更します。

    説明

    この例では、src/ はOSSトリガーのプレフィックスです。 Prefixパラメーターを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. 拡張子の圧縮ファイルをアップロードします。zip, . tar、または。gzをバケット内の指定されたディレクトリに移動し、関数をトリガーしてファイルを解凍します。

    この例では、デフォルトのディレクトリはsrc/ です。 解凍されたファイルは、指定されたディレクトリdst/ に自動的に生成されます。

関連ドキュメント