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