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

Object Storage Service:Python

最終更新日:Feb 23, 2024

このトピックでは、アプリケーションサーバーでPythonコードを使用してリクエストに署名を追加し、アップロードコールバックを設定してから、フォームアップロードを使用してデータをObject Storage Service (OSS) にアップロードする方法について説明します。

手順

迅速な展開

Resource Orchestration Service (ROS) を使用して、1つのECS (Elastic Compute Service) インスタンスと1つのOSSバケットを設定し、ECSインスタンスにアプリケーションサーバーソースコード (Python)クライアントソースコードをデプロイできます。 ROSを使用してアプリケーションサーバーでPythonコードを使用して署名を計算し、アップロードコールバックを設定してから、フォームアップロードを使用してデータをOSSにアップロードするには、次の手順を実行します。

  1. 数回クリックするだけでクラウドリソースをデプロイできます。

    1. ROSコンソールで [Quick deployment template] リンクを開きます。

    2. ROSコンソールの [スタックの作成] ウィザードの [テンプレートの選択] ステップで、スタック名と作成するOSSバケットの名前を入力します。 購入するECSインスタンスのゾーン、インスタンスタイプ、システムディスクカテゴリ、およびパスワードを指定し、作成する をクリックします。

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

    3. スタックのステータスが [作成済み] になったら、[出力] タブをクリックして、数回クリックするだけでデプロイされるECSインスタンスやOSSバケットなどのリソースを表示します。

  2. アプリケーションサーバーから署名情報を取得し、OSSにデータをアップロードします。

    1. [出力] タブで、UploadPathの値をコピーしてブラウザで開きます。

    2. [WebクライアントからOSSへのデータ転送] ページで、[ファイルの選択] をクリックし、特定の種類のファイルを選択し、[アップロード] をクリックします。

  3. 不要なコストを回避するためにテストリソースをリリースします。

    1. スタックページの右上隅にある 削除 をクリックします。

    2. リソーススタックの削除 ダイアログボックスで、スタックを削除する方法リソースのリリース に設定し、決定 をクリックします。

手動展開

前提条件

  • アプリケーションサーバーのドメイン名は、インターネット経由でアクセスできます。

  • Python 2.6以降がアプリケーションサーバーにインストールされます。 Pythonのバージョンを表示するには、python -- versionコマンドを実行します。

  • JavaScriptはコンピュータのブラウザでサポートされています。

手順1: アプリケーションサーバーの設定

  1. Pythonでアプリケーションサーバーのソースコードパッケージをダウンロードします。

  2. この例では、Ubuntu 16.04が使用されます。 ソースコードパッケージを /home/aliyun/aliyun-oss-appserver-pythonディレクトリに解凍します。

  3. ディレクトリに移動し、appserver.pyファイルを開き、次のスニペットを変更します。

    # Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 これらの資格情報を使用してOSSで操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。RAMユーザーを作成するには、RAMコンソールにログインします。 
    access_key_id = 'yourAccessKeyId'
    access_key_secret = 'yourAccessKeySecret'
    # ホストのアクセスアドレスをhttps:// bucketname.endpoint形式で指定します。 
    host = 'https:// examplebucket.oss-cn-hangzhou.aliyuncs.com'
    # アップロードコールバック要求の送信先のアプリケーションサーバーのURLを指定します。 このURLは、アプリケーションサーバーとOSS間の通信に使用されます。 オブジェクトをアップロードした後、OSSはURLを使用して、オブジェクトのアップロードに関する情報をアプリケーションサーバーに送信します。 
    callback_url = "https:// 192.168.0.0:8888"
    # アップロードするオブジェクトのプレフィックスを指定します。 このパラメーターは空のままにできます。 このパラメーターを指定しない場合、オブジェクトはバケットのルートディレクトリにアップロードされます。 
    upload_dir = 'exampledir/' 

ステップ2: クライアントの設定

  1. クライアントソースコードパッケージをダウンロードします。

  2. パッケージをディレクトリに解凍します。 この例では、D:\aliyun\aliyun-oss-appserver-jsディレクトリが使用されています。

  3. ディレクトリに移動し、upload.jsファイルを開き、次のコードを見つけます。

    // serverUrlは、署名やアップロードポリシーなどの情報を返すアプリケーションサーバーのURLを指定します。 serverUrlの値をアプリケーションサーバーの実際のIPアドレスとポート番号に置き換えます。 
    serverUrl = 'http:// 192.0.2.0:8888 ' 
  4. 署名やアップロードポリシーなどの情報をクライアントに返すアプリケーションサーバーのURLにserverUrlを設定します。 この例では、serverUrlhttps:// 192.168.0.0:8888に設定されています。

ステップ3: CORSの設定

フォームアップロードを使用してクライアントからOSSにデータをアップロードすると、クライアントはブラウザを使用してOriginヘッダーを含むリクエストをOSSに送信します。 次に、Originヘッダーを含むリクエストが、バケットに対して設定したクロスオリジンリソース共有 (CORS) ルールと一致するかどうかを確認します。 したがって、POSTメソッドを使用してバケットにデータをアップロードする前に、バケットのCORSルールを設定する必要があります。

  1. OSSコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションツリーで、[コンテンツセキュリティ] > [CORS] を選択します。

  4. CORSページで、[ルールの作成] をクリックし、次の図に示すパラメーターを設定します。

    重要

    データのセキュリティを確保するために、OSSでリクエストを許可する実際のドメイン名を [ソース] フィールドで指定することを推奨します。 詳細については、「CORSの設定」をご参照ください。

ステップ4: アップロードコールバック要求を送信する

  1. アプリケーションサーバーを起動します。

    /home/aliyun-oss-appserver-pythonディレクトリで、python appserver.py 11.22.XX.XX 1234コマンドを実行して、アプリケーションサーバーを起動します。

    説明

    IPアドレスとポート番号を、構成したアプリケーションサーバーのIPアドレスとポート番号に置き換えます。

  2. クライアントを起動します。

    コンピュータにインストールされているクライアントで、クライアントソースコードのディレクトリにあるindex.htmlファイルを開きます。

    重要 index.htmlファイルは、Internet Explorer 10以前と互換性がない場合があります。 Internet Explorer 10以前を使用するときに問題が発生した場合は、デバッグを実行する必要があります。
  3. ファイルをアップロードします。

    [ファイルの選択] をクリックし、特定の種類のファイルを選択し、[アップロード] をクリックします。 オブジェクトをアップロードすると、アプリケーションサーバーから返されたコンテンツが表示されます。