Blog Archives

AWS CLIにオレオレwaitコマンドを追加する

aws cliには API 呼び出し後、特定のステータスになるまでポーリングする wait コマンドがあります。 例えば ec2 インスタンスを起動する API を呼び出し後、インスタンスの起動が完了するまで待つには $ aws ec2 wait instance-running –instance-ids xxx のようにします。 この wait 機能が実装されるまでは というように、ポーリング処理を自前で実装しなければいけ ませんでした(例外処理も真面目にやるとさらにごちゃごちゃする)。 この wait 系コマンドを独自追加する方法をメモ。 cloudformationでスタック構築完了を待つ 例として cloudformation でスタックの作成APIをたたいたあと (crete-stack)、スタックの構築が完了するまでポーリングするコマンド $ aws cloudformation wait stack-completed を実装してみましょう。 AWS CLI で

Tagged with: , , ,
Posted in aws, python

bashでコマンドライン引数にファイルの中身を渡す

標準出力先としてファイル名を指定するのではなく、ファイルの中身(body)を引数として渡すにはどうすればよいのか? 実験用スクリプト 確認のため、次の簡易的なシェルスクリプトで各コマンドライン引数を表示させる。 入力ファイルとしては次のように改行やスペースを含んだ JSON ファイルを渡す 実行コマンド 結果論としては、以下のように printf と cat をコンボすればよい 解説 ポイントとなるのは次の箇所 ここを単純に $(cat test.json) や bash 方言のショートカットである $(< test.json) とすると、改行・スペースを引数の区切りとしてみなされてしまう この問題を回避するために、ファイルの中身全体を1文字列として扱うために printf ‘%s’ でラップさせるというわけ。 Reference linux – command line arguments from a file content – Stack Overflow

Tagged with: , , ,
Posted in linux

HTTP ベンチマークツール wrk についてメモ

モダンな HTTP ベンチマークツール wkr の簡単な使い方についてメモ。 wrk の特徴は以下。 C で書かれている マルチコア CPU を 活かした高負荷をかけられる スレッドと epoll/kqueue のイベントドリブンを活用して負荷をスケールさせる(NOTICE ファイルを読むと Redis Event Library(ae event loop) を拝借しているようです) Lua スクリプトで HTTP クライアントの処理や実行結果のレポートをカスタマイズできる Installing wrk in CentOS 6 まずはビルドに必要なパッケージをインストールします。 openssl-devel をインストールしていないと、make 時に以下のようなエラーが発生します。 次にソースコードから wrk をビルドします。 Usage 上の例では

Tagged with: , , ,
Posted in middleware

AWS Machine LearningのSchemaを自動生成する

やりたいこと AWS Machine Learning では学習・評価データのスキーマ定義が必要。 http://docs.aws.amazon.com/machine-learning/latest/dg/creating_datasources.html#creating-a-data-schema-for-amazon-ml マネージメントコンソールからデータセットを指定する時は、サーバーサイドでスキーマを推測してくれるがクライアントからAPIと叩く時は、スキーマは自分で用意しないといけない。 このスキーマ作成の作業を簡略化するために、AWS 中の人が作成したスキーマ推測ツールを利用してみる。 スキーマファイルの定義 まずはスキーマファイルのサンプルから 重要な属性は以下 rowId サロゲートキー このデータは学習には利用されず、予測結果も含めてリファレンス目的で利用。 dataFileContainsHeader 元データの1行目にヘッダー行が含まれていると true targetAttributeName 目的変数 attributeType データの各カラムのデータ型 カラム名とそのデータ型(NUMERIC/CATEGORICAL/TEXT/BINARY)で構成される。 詳細は次のURLを参照 http://docs.aws.amazon.com/machine-learning/latest/dg/creating_datasources.html#creating-a-data-schema-for-amazon-ml 最終的にはこの JSON 形式のスキーマをいい感じで自動生成したい。 スキーマを自動生成してみる github の次のレポジトリにある ml-tools-python ディレクトリにある guess_schema.py でスキーマを自動生成させる。 https://github.com/awslabs/machine-learning-samples にある ml-tools-python ディレクトリの guess_schema.py

Tagged with: ,
Posted in aws

Redisのレイテンシを計測

やりたいこと Redis に TCP でコマンドを投げた時 DNS Lookup -> Initial Connection -> Request Sent -> Waiting(TTFB) -> Content Download というような流れで処理される。 この一連の流れで Redis の内部処理にかかった Waiting(TTFB) を除く通信の時間を計測する方法をメモ。 通信のレイテンシ Redis には疎通確認向けのコマンド PING がある。 クライアントがこのコマンドを実行すると、サーバーは PONG を返すだけ。 このコマンドに対してサーバー(Redis)の処理は極めて軽微なため、PING を実行してから PONG がかえってくるまでの時間をレイテンシとみなして計測するのが次のコマンド。 上の例で言えば 103 回 PING

Tagged with: ,
Posted in middleware

Amazon Machine LearningのチュートリアルをAWS CLIから実行してみる

Summary “Amazon Machine Learning Developer Guide” には “Tutorial: Using Amazon ML to Predict Responses to a Marketing Offer” というこのサービスの初心者向けのチュートリアルが含まれている。 Tutorial: Using Amazon ML to Predict Responses to a Marketing Offer http://docs.aws.amazon.com/machine-learning/latest/mlconcepts/mlconcepts.html チュートリアルはマネージドコンソールから操作しているので、将来のスクリプト化を見据えて AWS CLI から操作してみる。 チュートリアルの流れ University of California, Irvine

Tagged with: ,
Posted in aws

[Linux]trickleを使ってプログラムごとにアドホックに帯域制御する

ネットワークの帯域制御は用途や手段に応じて様々な手段が存在する。 今回は、Linux 環境下で trickle を使ってプログラム単位でアドホックに帯域制御する方法をメモ。 trickle とは ユーザースペースで動作するトラフィックシェイパー ダイナミックローダーのプリローダー(LD_PRELOAD)を利用して socket の送受信に割り込んでトラフィックを制御 プログラム単位で制御 trickle をインストール RedHat Installation epel レポジトリからインストールする Ubuntu Installation 何も考えずに apt-get でインストールできる trickle を使う standalone mode(単一プログラムでの制御) collaborative mode(複数プログラム合算での制御) の2モードがある。 standalone mode プログラムごとにトラフィックを制御する trickle が一番得意とすると思われる用途 実行例 要は、コマンドの先頭に trickle {制御条件} を追加するだけと非常にお手軽。

Tagged with: , ,
Posted in linux
Archives