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

Object Storage Service:複数オブジェクトをパッケージとしてダウンロードする

最終更新日:Jul 29, 2025

Object Storage Service (OSS) は関数計算をサポートしています。 関数計算を使用して、あらゆる種類のアプリケーションと関数を構築できます。 このトピックでは、関数計算を使用して複数のオブジェクトをパッケージに圧縮し、そのパッケージを OSS からローカルコンピュータにダウンロードする方法について説明します。

前提条件

ソリューション

一度に OSS から複数のオブジェクトをダウンロードすると、特別なケースでは不便になる可能性があります。 たとえば、多数の小さなオブジェクトを一度にダウンロードすると、ダウンロード速度が遅くなります。 一度に多数のオブジェクトをダウンロードする際のエクスペリエンスを向上させるには、関数計算を使用してオブジェクトをパッケージに圧縮し、パッケージをローカルコンピュータにダウンロードしてから、パッケージを解凍します。 次の図は、関数計算を使用してオブジェクトをパッケージに圧縮し、パッケージをダウンロードする方法を示しています。压缩OSS文件

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

  2. 関数計算は、指定されたオブジェクトを OSS からダウンロードし、ランダムな名前を持つ ZIP パッケージを生成します。

  3. 関数計算は、ZIP パッケージを OSS にアップロードします。

  4. 関数計算は、ZIP パッケージをユーザーにダウンロードするために使用される URL を返します。

  5. ユーザーは、URL を使用して OSS から ZIP パッケージをダウンロードします。この URL は長期間有効です。

使用上の注意

  • 関数のディスク容量が限られているため、ストリーミングダウンロードとストリーミングアップロードを使用して ZIP パッケージを転送します。 少量のデータのみがメモリにキャッシュされます。

  • ZIP パッケージの転送を高速化するために、関数計算は ZIP パッケージを生成し、同時に OSS にアップロードします。

  • マルチパートアップロードを使用して、ZIP パッケージを OSS に並行してパーツでアップロードします。

  • 関数計算は、オブジェクトをパッケージに圧縮するのに最大 24 時間かかります。 テストデータによると、関数計算は合計サイズが 1.06 GB の 57 個のオブジェクトをパッケージに圧縮するのに約 63 秒かかりました。

手順

この例では、関数計算を使用して、中国 (杭州) リージョンの examplebucket バケットの dir/ ディレクトリにある複数のオブジェクトをローカルコンピュータにダウンロードします。

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

    ROS を使用してアプリケーションをデプロイする

    Resource Orchestration Service (ROS) を使用して関数計算アプリケーションをデプロイし、そのパブリックドメイン名を取得するには、次の手順を実行します。

    1. ROS コンソールで スタックの作成 ウィザードを使用します。

    2. [パラメータの構成] ステップで、すべてのパラメータのデフォルト設定を保持し、[次へ:確認] をクリックします。

    3. [確認] ステップで、[作成] をクリックします。

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

    4. スタックが [作成済み] ステータスになったら、[出力] タブをクリックしてパブリックドメイン名を表示します。

    Serverless Application Center を使用してアプリケーションをデプロイする

    1. Serverless Application Center にアクセスして、start-zip-oss アプリケーションテンプレートをデプロイします。

      デプロイメントタイプで [直接デプロイ] を選択します。 アプリケーションテンプレートのバケットのリージョンを選択します。 その他のパラメータのデフォルト設定を保持し、「デフォルト環境の作成とデプロイ」をクリックします。 次の図は、構成の詳細を示しています。1

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

      1. 表示されるページの「バージョンのデプロイ」パネルで、[結果] タブをクリックします。

      2. トリガーフィールドで、urlInternet パラメータからパブリックドメイン名を取得します。

        2

    Serverless Devs を使用してアプリケーションをデプロイする

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

      curl -o- -L http://cli.so/install.sh | bash

      Serverless Devs がインストールされているかどうかを確認します。

      s -v

      Serverless Devs がインストールされている場合、次の出力が返されます。

      @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

      関数計算へのアクセスに使用される AccessKey ID。

      --AccessKeySecret

      関数計算へのアクセスに使用される AccessKey シークレット。

      --Access

      カスタムキーエイリアス。

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

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

      2. s init start-zip-oss -d start-zip-oss
      3. 次の表は、start-zip-oss アプリケーションテンプレートのサンプル構成について説明しています。

      4. 構成項目

        アプリケーションをデプロイするリージョンの ID

        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:    python2.7
            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. 次のコマンドを実行して 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
    • /test/oss.zip: dir/ ディレクトリにオブジェクトを格納するために使用されるローカルパス。

      説明

      Windows の組み込み解凍ツールが失敗した場合は、サードパーティの解凍ツール (7-Zip や WinRAR など) を使用してください。

    • https://zip-oss-func-zip-oss-ayouye****.cn-hangzhou.fcapp.run: プロジェクトのデプロイ時に返される system_url の値。

    前の例の匿名の非認証 HTTP 関数を認証済み HTTP 関数に変更する場合は、次の OSS SDK のいずれかを使用できます。

よくある質問

関数計算を使用してオブジェクトをパッケージに圧縮してダウンロードするときに、オブジェクトに透かしを追加できますか?

いいえ、関数計算を使用してオブジェクトをパッケージに圧縮してダウンロードするときに、オブジェクトに透かしを追加することはできません。 ただし、関数計算を使用してオブジェクトをパッケージに圧縮してダウンロードする前に、次のいずれかの方法を使用して、OSS のオブジェクトにテキストまたは画像の透かしを追加できます。

  • アクセス制御リスト (ACL) が public-read または public-read-write のオブジェクト

    オブジェクト URL に watermark パラメータを追加します。 詳細については、「透かしを追加する」をご参照ください。

  • ACL が private のオブジェクト

    OSS SDK を使用して、画像処理 (IMG) パラメータまたは画像スタイルパラメータを構成します。 詳細については、「OSS SDK を使用して画像を処理する」をご参照ください。

関数計算を使用して複数のオブジェクトをパッケージとしてダウンロードするときに、関数計算は有効期間のあるダウンロード URL を生成できますか?

いいえ、関数計算は有効期間のあるダウンロード URL を生成できません。 ダウンロード URL に有効期間を設定する場合は、生成された URL に Expires パラメータを含めることができます。 詳細については、「オブジェクト URL を使用する」をご参照ください。

参考資料

  • 関数計算の概要と請求ルールについては、「製品紹介」および「請求」をご参照ください。

  • 関数計算を OSS と一緒に使用する場合のテンプレートとアプリケーションについては、「サンプルコード」をご参照ください。