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

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

最終更新日:May 06, 2024

このトピックでは、Function Computeを使用して複数のオブジェクトをパッケージとしてオンプレミスのデバイスにダウンロードする方法について説明します。

前提条件

  • Function Computeが有効化されています。

    関数でFunction Computeを有効化できます。 Function Computeプロダクトページ

  • Function Computeには、Object Storage Service (OSS) へのアクセス許可が付与されています。

    詳細については、「他のAlibaba Cloudサービスへのアクセス権限付与」をご参照ください。

  • 複数のオブジェクトがバケットの特定のディレクトリにアップロードされます。 この例では、複数のオブジェクトが中国 (杭州) リージョンのexamplebucketバケットのdirディレクトリにアップロードされます。 詳細は、「簡易アップロード (Simple upload)」をご参照ください。

  • Function Computeでアプリケーションが属するサービスに対してRAMロールが作成され、RAMロールのAlibaba Cloud Resource Name (ARN) が記録されます。 詳細については、「信頼できるAlibaba CloudアカウントのRAMロールの作成」をご参照ください。

背景情報

OSSから一度に複数のオブジェクトをダウンロードすると、特別な場合に不便が生じることがあります。 たとえば、一度に多数の小さなオブジェクトをダウンロードすると、ダウンロード速度が遅くなります。 一度に多数のオブジェクトをダウンロードするエクスペリエンスを向上させるために、Function Computeを使用してオブジェクトをパッケージに圧縮し、パッケージをオンプレミスのデバイスにダウンロードしてから、パッケージを解凍することができます。 次の図は、Function Computeを使用してオブジェクトをパッケージに圧縮し、パッケージをダウンロードする方法を示しています。压缩OSS文件

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

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

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

  4. Function Computeは、ZIPパッケージのダウンロードに使用されるURLをユーザーに返します。

  5. ユーザーは、URLを使用してOSSからZIPパッケージをダウンロードします。

使用上の注意

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

  • ZIPパッケージの転送を高速化するために、Function ComputeはZIPパッケージをOSSにアップロードし、Function ComputeはZIPパッケージを生成します。

  • マルチパートアップロードは、ZIPパッケージを部品単位でOSSに並行してアップロードするために使用されます。

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

手順

この例では、Function Computeを使用して、中国 (杭州) リージョンのexamplebucketバケットのdir /ディレクトリにある複数のオブジェクトをオンプレミスデバイスにダウンロードします。

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

    ROSを使用したアプリケーションのデプロイ

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

    1. ROSコンソールの [スタックの作成] ウィザードに移動します。

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

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

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

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

    Serverless Application Centerを使用したアプリケーションのデプロイ

    1. に移動します。Serverlessアプリケーションセンターstart-zip-ossアプリケーションテンプレートをデプロイします。

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

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

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

      2. triggersフィールドで、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 ******** -- アクセスfc-access

      次の表に、上記のコマンドのパラメーターを示します。

      パラメーター

      説明

      -- AccessKeyID

      Function Computeへのアクセスに使用されるAccessKey ID。

      -- AccessKeySecret

      Function Computeへのアクセスに使用されるAccessKeyシークレット。

      -- アクセス

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

    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:
          リージョン: cn-hangzhou
          service:
            名前: start-zip-oss
          関数:
            名前: zip-oss-func
            ランタイム: python2.7
            handler: main.main_handler
            memorySize: 3072
            timeout: 1800
          url:
            system_url: https:// zip-oss-func-start-zip-oss-ayouye **** .cn-hangzhou.fcapp.ru n
          トリガー:
            -
              タイプ: http
              name: http-test 
  2. 次のコマンドを実行してevent.jsonファイルを生成し、バケット名とダウンロードするオブジェクトが格納されているディレクトリを指定します

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

    source-dirは、バケットのルートディレクトリ以外のディレクトリに設定する必要があります。

  3. 次のコマンドを実行して、関数をトリガーします。

    curl -v -L -o /test/oss.zip -d @./event.json https:// zip-oss-func-zip-oss-ayouye **** .cn-hangzhou.fcapp.ru n
    • /test/oss.zip: dir /ディレクトリにオブジェクトを格納するために使用されるローカルパス。

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

    説明

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

よくある質問

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

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

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

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

  • ACLがプライベートのオブジェクト

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

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

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

参考資料

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