Cosmos 用のカスタム HTTP PEP プロキシ¶
コンテンツ:
インストール¶
前提条件¶
Identity Manager (ここでは Keyrock の実装を見つけることができます) がインストールされていない場合、この PEP プロキシは意味をなしません。Cosmos も同様です。
cosmos-proxy は Node.js アプリケーションですので、公式ダウンロードからインストールしてください。先進的な選択肢は、creationix/Tim Caswellによって、Node Version Manager (nvm)をインストールすることです。これにより、Node.js のいくつかのバージョンを持ち、それらの間で切り替えることができます。
もちろん、git
と curl
のような一般的なツールが必要とされるかもしれません。
インストール¶
これは、JavaScript で書かれたソフトウェアです。特に、Node.js (サーバサイドのJavaScript) に適しています。JavaScript はインタプリタ型のプログラミング言語なので、コンパイルやパッケージの構築は不要です。マシンのどこかにソースコードをダウンロードしておけば十分です。
まず作成されていなければ、cosmos-proxy
という名前の Unixユーザを作成します。アプリケーションのインストールと実行に必要です。これは、root または別の sudoer ユーザとしてのみ行うことができます :
$ sudo useradd cosmos-proxy
$ sudo passwd cosmos-proxy <choose_a_password>
sudoer ユーザである間は、選択したパスの cosmos-proxy
下にログトレースを保存するためのフォルダを作成します。通常は /var/log/cosmos/cosmos-proxy
で、所有者として cosmos-proxy
を設定します :
$ sudo mkdir -p /var/log/cosmos/cosmos-proxy
$ sudo chown cosmos-proxy:cosmos-proxy /var/log/cosmos/cosmos-proxy
さらに、sudo ユーザの場合は、プロキシのシャットダウン時に user:token
ペアを提供するキャッシュ・ファイルを格納するためのフォルダを作成します。
$ sudo mkdir -p /etc/cosmos/cosmos-proxy
$ sudo chown cosmos-proxy:cosmos-proxy /etc/cosmos/cosmos-proxy
次に、新しいフレッシュな cosmos-proxy
ユーザに変更してください :
$ su - cosmos-proxy
次に、あなたのディレクトリのどこかに Cosmos リポジトリをクローンします :
$ git clone https://github.com/telefonicaid/fiware-cosmos.git
cosmos-proxy
ディレクトリに変更し、master
から develop
にブランチを変更し、インストール・コマンドを実行します :
$ cd fiware-comos/cosmos-proxy
$ git checkout release/x.y.z
$ npm install
node_modules
ディレクトリの下のすべての依存関係をダウンロードする必要があります。
単体テスト¶
未定
構成¶
cosmos-proxy は JSON ファイルで設定します。使用可能なパラメータは次のとおりです :
- host: プロキシを実行しているホストの FQDN または IP アドレス
- port: プロキシされたリクエストを受信するための TCP リスニングポート
- target:
- host: 実サービスを実行しているホストの FQDN または IP アドレス
- port: 実際のサービスの TCP リスニングポート
- idm:
- host: Identity Manager が実行される FQDN または IP アドレス。これを URL 形式で書いてはいけません!
- port: Identity Manager がリクエストをリスンするポート。通常は、443
- public_paths_list: すべてのユーザに到達できるパス
- superuser: すべての HDFS パスにアクセスする権限を与えられたスーパーユーザ
- log:
- file_name: ログのトレースが 1日単位で保存されるファイルのパス。このファイルは、
cosmos-auth
ユーザが所有するログフォルダ内に存在する必要があります - date_pattern: ログファイルがローテーションされたときにログファイル名に追加されるデータパターン
- file_name: ログのトレースが 1日単位で保存されるファイルのパス。このファイルは、
- cache_file:
user:token
ペアが保存されるファイルのパス。このファイルは、プロキシのシャットダウン時に使用されます
実行¶
cosmos-proxy によって実装される PEP プロキシは、現在のディレクトリが cosmos-proxy
であると仮定して実行されます :
$ npm start
すべてがうまくいけば、/var/log/cosmos/cosmos-proxy
に、次のログが表示されるはずです :
{"level":"info","message":"Starting cosmos-proxy in 0.0.0.0:14000","timestamp":"2016-07-14T11:48:10.968Z"}
管理¶
cosmos-proxy には、ログを管理するのに便利な情報ソースが1つあります。
ロギング・トレースは通常、/var/log/cosmos/cosmos-proxy
下に保存されます。これらのトレースは、レベル、メッセージ、タイムスタンプの各フィールドを持つ JSON 形式で記述されています。例えば :
{"level":"info","message":"Starting cosmos-proxy in 0.0.0.0:14000","timestamp":"2016-07-14T11:48:10.968Z"}
ロギング・レベルは、次の階層に従います :
debug < info < warn < error < fatal
ログの中にはinfo、多くのメッセージと、いくつかの warn
か error
タイプがあります。特に興味があるのはエラーです :
- Authentication error: Keyrock Identity Manager との通信がダウンしているためにトークンが有効でないため、ユーザを認証できませんでした
- Authorization error: ユーザは、リクエストされた Cosmos リソースを承認または使用できませんでした : ユーザの ID はリソース内の Cosmos ID と一致しませんでした