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

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

最終更新日:Sep 25, 2024

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

前提条件

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

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

  • Function Computeには、OSSへのアクセス権限が付与されています。

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

  • OSSバケットは、関数と同じリージョン内に存在する必要があります。

  • 複数のオブジェクトがバケットの特定のディレクトリにアップロードされます。 この例では、複数のオブジェクトが中国 (杭州) リージョンの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にアップロードします。

  • マルチパートアップロードは、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 <<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 /ディレクトリにオブジェクトを格納するために使用されるローカルパス。

    • 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の概要と課金ルールの詳細については、「製品紹介」と「課金」をご参照ください。

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