はじめに

OSS FTP は、一般的な FTP 要求を受信したときにファイルやフォルダに対する操作を OSS インスタンスにマッピングする、特殊な FTP サーバーです。 このユーティリティを使用することで、FTP プロトコルを使用し、OSS インスタンスに保存されているファイルを管理できます。

OSS SDK は本番環境向けに設計されており、OSS FTP は主に個人ユーザー向けです。
  • 主な機能
    • クロスプラットフォーム: Windows、Linux、Mac の 32 ビットおよび 64 ビットの各オペレーティングシステムに対応しており、グラフィックとコマンドラインの両方のインターフェイスで使用できます。
    • インストール不要: このユーティリティは展開後にそのまま実行できます。
    • 設定不要: さらに設定を行うことなく、ユーティリティを実行できます。
    • 透明性: この FTP ユーティリティは Python で記述されているので、すべてのソースコードを見ることができます。 近日中に、GitHub でオープンソースを公開する予定です。
  • 主な機能
    • ファイルやフォルダのアップロード、ダウンロード、削除などの操作をサポート
    • 大きなファイルのマルチパートアップロードをサポート
    • ほとんどの FTP コマンドをサポートし、日常のニーズを満たします
    • 現在、インストールと展開を容易にするために、OSS FTP V1.0 は TLS 暗号化をサポートしていません。 FTP プロトコルはプレーンテキスト転送を実装しています。 パスワードの漏洩を防ぐために、FTP サーバーとクライアントを同じマシン上で実行し、127.0.0.1:por を使用してアクセスすることを推奨します。
    • このユーティリティは、名前の変更および移動操作をサポートしていません。
    • インストールパッケージの extract-to パスには漢字を含めないでください。
    • FTP サーバーの管理コントロールページは、初期の IE ブラウザーでは開けない可能性があります。
    • サポートされている Pythonのバージョンは Python 2.6 とPython 2.7 です。

ダウンロード

  • Windows: ossftp-1.0.3-win.zip

    既定では、Python 2.7 は Windows にインストールされていません。インストールパッケージに含まれているので、インストールや設定の手間がかかることなく、展開後に使用できます。

  • Linux/Mac: ossftp-1.0.3-linux-mac.zip

    既定では、Python 2.7 または Python 2.6 は Linux および Mac システムにインストールされています。そのため、Linux および Mac 用のインストールパッケージには実行可能な Python プログラムは含まれておらず、関連する依存ライブラリのみが含まれています。

実行

まず、ダウンロードしたファイルを展開します。 次に、環境条件に基づき、適切な実行モードを選択します。

  • Windows: start.vbs をダブルクリックして実行します。
  • Linux: ターミナルを起動し、実行します。
    $ bash start.sh
  • Mac: start.command をダブルクリックするか、またはターミナルで実行します。
    $ bash start.command

既定では、上記のプロセスは、127.0.0.1 のポート 2048 をリッスンする FTPサーバー を開始します。 また、FTP サーバーのステータスを簡単に制御できるように、プログラムは Web サーバーをアクティブにします。Web サーバーは 127.0.0.1 でポート 8192 をリッスンします。 システムにグラフィックインターフェイスがある場合は、コントロールページが自動的に開きます。

通常、FTP サーバーを実行する前に設定を行う必要はありません。 何らかの設定を行った場合には、変更を有効にするために必ず再起動してください。

FTP サーバーへの接続

FileZilla クライアントを使用して FTP サーバーに接続することを推奨します。 ダウンロードしてインストールしたら、次のようにして FTP サーバーに接続します。

  • ホスト: 127.0.0.1
  • ログオンの種類: 通常
  • ユーザー: access_key_id / bucket_name
  • パスワード: access_key_secret
    • スラッシュ記号 (/) は、両方の項目が必須ではないことを意味します。 たとえば、ユーザーは、 tSxyiUM3NKswPMEp/test-hz-jh-002でもよいです。
    • access_key_id および access_key_secret についての詳細は、「OSS アクセス制御」をご参照ください。

高度な使用方法

  • コンソールページから ftpserver を管理
    • リスニングアドレスの変更

      ネットワーク経由で ftpserver にアクセスする場合は、既定のアドレス 127.0.0.1 ではローカルアクセスしか許可されないため、リスニングアドレスを変更する必要があります。 リスニングアドレスはイントラネット IP またはインターネット IP に変更できます。

    • リスニングポートの変更

      ftpserver のリスニングポートを変更します。 1024 未満のポートには管理者のアクセス許可が必要なので、1024 を超えるポートを使用することを推奨します。

    • ログレベルの変更

      ftpserver のログレベルを設定します。 FTP サーバーのログは、data/ossftp/ ディレクトリに出力されます。 表示するには、コンソールページの [ログ] ボタンをクリックします。 既定のログレベルは INFO になっており、ログにはほとんど情報が記録されません。 より詳細なログ情報が必要な場合は、レベルを DEBUG に変更します。 ログ出力を減らしたい場合は、ログレベルを WARNING または ERROR に設定します。

    • バケットエンドポイントの設定

      既定では、ftpserver はバケットの位置情報を検索するので、後に続くリクエストを対応するリージョン (oss-cn-hangzhou.aliyuncs.comoss-cn-hangzhou.aliyuncs.com など) に送信することができます。 まず、ftpserver はイントラネットを介し、 OSS インスタンスへのアクセスを試みます。 たとえば、test-bucket-a.oss-cn-hangzhou.aliyuncs.comというバケットエンドポイントを設定した場合 、test-bucket-a にアクセスすると、oss-cn-hangzhou.aliyuncs.com という名前のドメインに接続されます。

    • 表示言語の設定

      cn / en を設定することで、FTP コントロールページの表示言語を中国語 / 英語に変更できます。

    • 変更を有効にするには、システムを再起動する必要があります。
    • 上記の変更はすべて、実際には ftp ディレクトリの config.json ファイルに対する変更です。 したがって、このファイルを直接変更することもできます。
  • ftpserver を直接起動する (Linux / Mac)。

    web_server のオーバーヘッドを回避するため、ossftp ディレクトリでのみ、ftpserver.py ファイルを実行できます。

    $ python ossftp/ftpserver.py &

    設定の変更方法は、上記の方法と同様です。

考えられる問題

  • FTP サーバーへの接続時にエラーが発生した場合

    エラーは 2 つの原因によって引き起こされている可能性があります。

    • 入力された access_key_id または access_key_secret にエラーがある可能性があります。

      解決策: 正しい情報を入力してやり直します。

    • 使用されている access_key 情報が RAM サブアカウントの access_key であり、そのサブアカウントにはバケットを一覧表示する権限がない。

      解決策: サブアカウントを使用するときは、コンソールページでバケットエンドポイントを指定し、特定のバケットへのアクセスに、どのエンドポイントを使用する必要があるかを、ftpserver に指示します。 また、サブアカウントには必要な権限がなければなりません。 OSS にアクセスするため、RAM を使用してアクセス制御を実装する方法については、「RAM」をご参照ください。 アクセス許可に関する詳細は以下のとおりです。

      • 読み取り専用:

        OSS-FTP には、[‘ListObjects’、’GetObject’、’HeadObject’] の各権限が必要です。 読み取り専用権限で RAM サブアカウントを作成する方法については、グラフィックチュートリアル「ファイル共有のために RAM を統合する方法」をご参照ください。

      • ファイルのアップロード

        RAM サブアカウントにファイルのアップロードを許可する場合は、['PutObject'] 権限を割り当てます。

      • ファイルの削除

        RAM サブアカウントにファイルの削除を許可する場合は、 [‘DeleteObject’] 権限を割り当てます。

  • FTP サーバーを Linux 上で実行している場合、FileZilla を使用してサーバーに接続すると、以下のエラーが発生する可能性があります。
    501 はパスをデコードできません (サーバーファイルシステムのエンコードは ANSI_X3.4-1968です)。

    これは通常、ローカルの中国語のコードでエラーが発生したときに生成されます。 start.sh を実行するターミナルに次のコマンドを入力します。 その後、プログラムを再起動します。

    $ export LC_ALL=en_US.UTF-8; export LANG="en_US.UTF-8"; locale