このトピックでは、アプリケーションサーバーでPythonコードを使用してリクエストに署名を追加し、アップロードコールバックを設定してから、フォームアップロードを使用してデータをObject Storage Service (OSS) にアップロードする方法について説明します。
手順
迅速な展開
Resource Orchestration Service (ROS) を使用して、1つのECS (Elastic Compute Service) インスタンスと1つのOSSバケットを設定し、ECSインスタンスにアプリケーションサーバーソースコード (Python) とクライアントソースコードをデプロイできます。 ROSを使用してアプリケーションサーバーでPythonコードを使用して署名を計算し、アップロードコールバックを設定してから、フォームアップロードを使用してデータをOSSにアップロードするには、次の手順を実行します。
数回クリックするだけでクラウドリソースをデプロイできます。
ROSコンソールで [Quick deployment template] リンクを開きます。
ROSコンソールの [スタックの作成] ウィザードの [テンプレートの選択] ステップで、スタック名と作成するOSSバケットの名前を入力します。 購入するECSインスタンスのゾーン、インスタンスタイプ、システムディスクカテゴリ、およびパスワードを指定し、作成する をクリックします。
表示されるページの [スタック情報] タブで、スタックのステータスは [作成中] になります。
スタックのステータスが [作成済み] になったら、[出力] タブをクリックして、数回クリックするだけでデプロイされるECSインスタンスやOSSバケットなどのリソースを表示します。
アプリケーションサーバーから署名情報を取得し、OSSにデータをアップロードします。
[出力] タブで、UploadPathの値をコピーしてブラウザで開きます。
[WebクライアントからOSSへのデータ転送] ページで、[ファイルの選択] をクリックし、特定の種類のファイルを選択し、[アップロード] をクリックします。
不要なコストを回避するためにテストリソースをリリースします。
スタックページの右上隅にある 削除 をクリックします。
リソーススタックの削除 ダイアログボックスで、スタックを削除する方法 を リソースのリリース に設定し、決定 をクリックします。
手動展開
前提条件
アプリケーションサーバーのドメイン名は、インターネット経由でアクセスできます。
Python 2.6以降がアプリケーションサーバーにインストールされます。 Pythonのバージョンを表示するには、python -- versionコマンドを実行します。
JavaScriptはコンピュータのブラウザでサポートされています。
手順1: アプリケーションサーバーの設定
Pythonでアプリケーションサーバーのソースコードパッケージをダウンロードします。
この例では、Ubuntu 16.04が使用されます。 ソースコードパッケージを /home/aliyun/aliyun-oss-appserver-pythonディレクトリに解凍します。
ディレクトリに移動し、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: クライアントの設定
クライアントソースコードパッケージをダウンロードします。
パッケージをディレクトリに解凍します。 この例では、D:\aliyun\aliyun-oss-appserver-jsディレクトリが使用されています。
ディレクトリに移動し、upload.jsファイルを開き、次のコードを見つけます。
// serverUrlは、署名やアップロードポリシーなどの情報を返すアプリケーションサーバーのURLを指定します。 serverUrlの値をアプリケーションサーバーの実際のIPアドレスとポート番号に置き換えます。 serverUrl = 'http:// 192.0.2.0:8888 '
署名やアップロードポリシーなどの情報をクライアントに返すアプリケーションサーバーのURLに
serverUrl
を設定します。 この例では、serverUrlはhttps:// 192.168.0.0:8888
に設定されています。
ステップ3: CORSの設定
フォームアップロードを使用してクライアントからOSSにデータをアップロードすると、クライアントはブラウザを使用してOrigin
ヘッダーを含むリクエストをOSSに送信します。 次に、Origin
ヘッダーを含むリクエストが、バケットに対して設定したクロスオリジンリソース共有 (CORS) ルールと一致するかどうかを確認します。 したがって、POSTメソッドを使用してバケットにデータをアップロードする前に、バケットのCORSルールを設定する必要があります。
ステップ4: アップロードコールバック要求を送信する
アプリケーションサーバーを起動します。
/home/aliyun-oss-appserver-pythonディレクトリで、python appserver.py 11.22.XX.XX 1234コマンドを実行して、アプリケーションサーバーを起動します。
説明IPアドレスとポート番号を、構成したアプリケーションサーバーのIPアドレスとポート番号に置き換えます。
クライアントを起動します。
コンピュータにインストールされているクライアントで、クライアントソースコードのディレクトリにあるindex.htmlファイルを開きます。
重要 index.htmlファイルは、Internet Explorer 10以前と互換性がない場合があります。 Internet Explorer 10以前を使用するときに問題が発生した場合は、デバッグを実行する必要があります。ファイルをアップロードします。
[ファイルの選択] をクリックし、特定の種類のファイルを選択し、[アップロード] をクリックします。 オブジェクトをアップロードすると、アプリケーションサーバーから返されたコンテンツが表示されます。