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

Object Storage Service:オブジェクトの ZIP パッケージ化とダウンロード

最終更新日:Sep 03, 2026

Object Storage Service (OSS) は Function Compute と統合されているため、さまざまなアプリケーションや機能を構築できます。このトピックでは、Function Compute を使用して複数の OSS オブジェクトを 1 つの ZIP ファイルにパッケージ化し、ローカルにダウンロードする方法について説明します。

前提条件

仕組み

OSS から複数のオブジェクト、特に多数の小さなオブジェクトを一括ダウンロードすると、時間がかかり不便です。Function Compute を使用すると、まず OSS 上のオブジェクトをパッケージ化し、圧縮パッケージをローカルコンピューターにダウンロードしてから解凍できます。この方法により、一括ダウンロードを高速化できます。Function Compute を使用して OSS オブジェクトをパッケージ化およびダウンロードするワークフローを次の図に示します。压缩OSS文件

  1. ユーザーが関数を呼び出し、圧縮するバケットとオブジェクトを指定します。

  2. Function Compute が OSS から指定されたオブジェクトをダウンロードし、ランダムな名前で ZIP パッケージを生成します。

  3. Function Compute が ZIP パッケージを OSS にアップロードします。

  4. Function Compute が ZIP パッケージのダウンロード URL をユーザーに返します。

  5. ユーザーは、返された永続的なダウンロード URL を使用して OSS からファイルをダウンロードします。

注意事項

  • 関数のランタイム環境のディスク領域は制限されています。そのため、関数はダウンロードとアップロードの両方でデータをストリーミングし、メモリには少量のデータのみをキャッシュします。

  • プロセスを高速化するため、Function Compute は ZIP ファイルの生成中に OSS へのアップロードを行います。

  • ZIP ファイルを OSS にアップロードする際、関数は OSS のマルチパートアップロード機能を使用して、複数のスレッドでパーツを並行してアップロードします。

  • Function Compute を使用したファイル圧縮の最大処理時間は 24 時間です。(テストデータ:合計サイズ 1.06 GB の 57 個のオブジェクトを 63 秒で処理)

操作手順

この例では、Function Compute を使用して、中国 (杭州) リージョンのexamplebucketバケット内のdir/ディレクトリから複数のオブジェクトをパッケージ化し、ローカルコンピューターにダウンロードする方法について説明します。

  1. アプリケーションをデプロイし、そのパブリックドメイン名を取得します。

    Resource Orchestration Service (ROS) によるワンクリックデプロイ

    Resource Orchestration Service (ROS) を使用して、Function Compute アプリケーションをワンクリックでデプロイします。

    1. ワンクリック設定テンプレートリンクを開きます。

    2. [パラメーターの設定] タブで、すべてのパラメーターをデフォルト設定のままにし、[次へ: チェックと確認] をクリックします。

    3. チェックと確認 タブで、[作成] をクリックします。

      スタック情報 タブの [ステータス] に [作成中] と表示されます。

    4. スタックの [ステータス] が [Create_Success] に変わったら、[出力] タブをクリックしてパブリックドメイン名を見つけます。

    Serverless Application Center によるワンクリックデプロイ

    1. Serverless Application Center から start-zip-oss アプリケーションテンプレートをデプロイします。

      [アプリケーションの作成] ページで、アプリケーションテンプレートは start-zip-oss、デプロイタイプは 直接デプロイ です。次の主要なパラメーターを設定します。

      • アプリケーション名:start-zip-oss-obvr

      • ロール名: AliyunFCServerlessDevsRole。アタッチされたポリシーには AliyunOSSReadOnlyAccess と AliyunFCFullAccess が含まれます。

      • サービスステータス:Function Compute と Object Storage Service (OSS) の両方がアクティブ化されています。

      • 詳細設定: リージョンとして 中国 (杭州) を選択し、サービス名を zip-oss に、関数名を zip-oss-func に、RAM ロール ARN を [AliyunFcDefaultRole] (アタッチされたポリシー: AliyunOSSFullAccess および AliyunFCDefaultRolePolicy) に設定します。

      設定が完了したら、[デフォルト環境を作成してデプロイ] をクリックします。

    2. パブリックドメイン名を取得します。

      1. [結果] タブをクリックします。

      2. triggers フィールドで、パブリックドメイン名 (urlInternet) を取得します。

        fc zip oss service.
          service:
            role: acs:ram::1379186349xxx:role/aliyunfcdefaultrole
            internetAccess: true
            name: zip-oss
            description: zip oss sample
          function:
            handler: main.main_handler
            initializationTimeout: 3
            memorySize: 3072
            instanceType: e1
            name: zip-oss-func
            runtime: python3.9
            description: This is default function description by fc-deploy component
            timeout: 1800
            instanceConcurrency: 1
          region: cn-hangzhou
          triggers:
            - urlInternet: https://zip-oss-func-zip-oss-ayouyexxx.cn-hangzhou.fcapp.run
              name: http-test
              type: http
              config:
                methods:
                  - GET
                  - POST
                  - PUT
                authType: anonymous

    Serverless Devs CLI を使用した手動デプロイ

    1. Serverless Devs をインストールします。

      npm install -g @serverless-devs/s

      インストールを確認します。

      s -v

      次の出力は、インストールが成功したことを示します。

      @serverless-devs/s: 2.1.1, s-home: /root/.s, linux-x64, node-v14.19.3
    2. Serverless Devs を設定します。

      s config add --AccessKeyID LTAI******** --AccessKeySecret  KZo1******** --access fc-access

      次の表でパラメータについて説明します。

      パラメータ

      説明

      --AccessKeyID

      Function Compute にアクセスするための AccessKey ID です。

      --AccessKeySecret

      Function Compute にアクセスするための AccessKey Secret です。

      --access

      認証情報のカスタムエイリアスです。

    3. start-zip-ossアプリケーションテンプレートをデプロイします。

      1. プロジェクトを初期化します。

      2. s init start-zip-oss -d start-zip-oss
      3. 次の例に基づいて設定項目の値を指定します。

      4. パラメータ

        例

        アプリケーションが配置されるリージョン

        cn-hangzhou

        アプリケーションが属する Function Compute サービス

        start-zip-oss

        アプリケーションの関数名

        zip-oss-func

        アプリケーションが属する Function Compute サービスに設定された RAM ロールの ARN

        acs:ram::137918634953****:role/test-role

      5. プロジェクトディレクトリに移動します。

      6. cd start-zip-oss
      7. プロジェクトをデプロイします。

      8. s deploy -y
      9. 出力からsystem_urlを記録します。

      10. fc-zip-oss-service:
          region:   cn-hangzhou
          service:
            name: start-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-start-zip-oss-ayouye****.cn-hangzhou.fcapp.run
          triggers:
            -
              type: http
              name: http-test
  2. サーバーまたは ECS インスタンスで次のコマンドを実行して、event.jsonファイルを生成します。このファイルに、バケット名とダウンロードするオブジェクトを含むディレクトリを指定します。

    cat <<EOF > event.json
    {
      "bucket": "examplebucket",
      "source-dir": "dir/"
    }
    EOF
    説明

    source-dirパラメータには、バケット内のディレクトリを指定する必要があります。ルートディレクトリはサポートされていません。

  3. 次のコマンドは、サンプルリクエストです。

    curl -v -L -o  oss.zip -d @./event.json https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run
    • oss.zip:ダウンロードした ZIP パッケージのローカル保存パス。

      説明

      Windows 標準の解凍ツールで失敗する場合は、7-Zip や WinRAR などのサードパーティツールを使用してください。

    • https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run:プロジェクトをデプロイしたときに返されたsystem_url。

    匿名ではなく認証された HTTP 関数として呼び出すには、次のいずれかの SDK を使用します。

よくある質問

ウォーターマークの追加

いいえ。ただし、次の方法を使用して OSS のオブジェクトにテキストまたは画像のウォーターマークを追加できます。

  • パブリック読み取りまたはパブリック読み書き権限を持つオブジェクトの場合

    オブジェクト URL にウォーターマークパラメータを追加します。詳細については、「画像ウォーターマーク」をご参照ください。

  • プライベート権限を持つオブジェクトの場合

    SDK で画像処理パラメータまたは画像スタイルパラメータを指定することでウォーターマークを追加します。詳細については、「SDK を使用した画像処理」をご参照ください。

期限付きダウンロード URL

いいえ。有効期限付きの URL を作成するには、Expires パラメータを含む署名付き URL を生成する必要があります。詳細については、「オブジェクト URL の使用」をご参照ください。

関連ドキュメント