BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース PythonでWindows Azureを操る

PythonでWindows Azureを操る

Leia em Português

MicrosoftのプログラムマネージャーであるSriram Krishnan氏(リンク)が、Windows AzureのデータストレージへのPythonラッパーを書いた。PythonはWindows Azureでサポートされる言語の1つである。

Microsoft AzureのWebサイト(リンク)によると、次のようにPythonはWindows Azureによってサポートされるツールおよび言語の1つになるようだ。

Windows AzureはMicrosoftの言語や環境に加え、Microsoft以外のものもサポートするオープンなプラットフォームです。Windows AzureはEclipse、Ruby、PHP、そしてPythonといった、3rdパーティ製のツールや言語を歓迎します...

世界中の何百万人もの開発者がすでに.NETフレームワークとその開発環境であるVisual Studioを利用しています。クラウドなアプリケーションの作成にもそのスキルを活かすことができます。それらのアプリケーションもすべてVisual Studioで書き、テストし、デプロイすることができるのです。近い将来、開発者はRuby on RailsやPythonで書かれたアプリケーションも同じようにデプロイできるようになるでしょう。

Sriram氏がPythonで作成したWindows Azureのデータストレージへのラッパー(リンク)のコードはGitHubにある(リンク)。データの保存と取得は次の例のようにして行うことができる。

conn = WAStorageConnection(DEVSTORE_HOST, DEVSTORE_ACCOUNT, DEVSTORE_SECRET_KEY)
    for (container_name,etag, last_modified ) in  conn.list_containers():
        print container_name
        print etag
        print last_modified
    conn.create_container("testcontainer", False)
    conn.put_blob("testcontainer","test","Hello World!" )
    print conn.get_blob("testcontainer", "test")

サインインは次のようになる。

def _get_auth_header(self, http_method, path, data, headers):
   # ドキュメントは http://msdn.microsoft.com/en-us/library/dd179428.aspx を参照
   string_to_sign =""

#最初の要素はメソッド
   string_to_sign += http_method + NEW_LINE

   # 2番目の要素はオプションのMD5コンテンツ
   string_to_sign += NEW_LINE

   #content type - 少なくとも空白で初期化する必要がある
   if headers.has_key("content-type"):
    string_to_sign += headers["content-type"]
   string_to_sign += NEW_LINE

   # date - 特別な日付ストレージヘッダーが常に付けてある実装なので、ここでヘッダーを追加する必要はない
   # always exists in our implementation
   string_to_sign += NEW_LINE

   # 正規化されたストレージヘッダーを組み立てる
   # TODO: いくつかの仕様が実装されてないので注意
   # 同じ名前のヘッダーフィールドを合成すること、,
   # unfolding long lines and trimming white spaces around the colon
   ms_headers =[header_key for header_key in headers.keys()
   if header_key.startswith(PREFIX_STORAGE_HEADER)]
   ms_headers.sort()
   for header_key in ms_headers:
    string_to_sign += "%s:%s%s" % (header_key, headers[header_key], NEW_LINE)

   #正規化されたリソースを追加する
   string_to_sign += "/" + self.account_name + path
   utf8_string_to_sign = unicode(string_to_sign).encode("utf-8")
   hmac_digest = hmac.new(self.secret_key,
    utf8_string_to_sign,
    hashlib.sha256).digest()
   return base64.encodestring(hmac_digest).strip()

Windows AzureにおけるMicrosoftのプランはGoogleが提供しているものを凌いでいるように見える。現在のところ、Google App EngineはPythonしかサポートしていない。とはいえ、Googleも将来はより多くの言語をサポートする計画があるようだ(リンク)

 

原文はこちらです:http://www.infoq.com/news/2008/11/Python-Windows-Azure
 

 

この記事に星をつける

おすすめ度
スタイル

BT