Windows Azure ストレージのリリース - CORS、JSON、分単位メトリックなど各種機能の導入
このポストは、11 月 27 日に Windows Azure Storage Team が投稿した Windows Azure Storage Release - Introducing CORS, JSON, Minute Metrics, and More の翻訳です。
先日マイクロソフトは、新しい 2013-08-15 バージョンの Windows Azure ストレージをリリースしました。このバージョンでは、Windows Azure BLOB、テーブル、キューのそれぞれに新しい機能が多数導入されています。このバージョンで追加された主な機能は、次のとおりです。
1. CORS (Cross Origin Resource Sharing): Windows Azure BLOB、テーブル、キューで新たに CORS がサポートされました。これにより、Web ページのサービスを実行中のブラウザーから、アクセス中のリソースとは異なるドメインのリソースにアクセスしたり、操作することが可能になりました。CORS はオプトイン モデルで、有効にすると Set Service Properties および Get Service Properties を使用できます。Windows Azure ストレージでは、CORS のプレフライトの OPTIONS 要求、および実際の CORS 要求の両方がサポートされます。詳細については、https://msdn.microsoft.com/en-us/library/windowsazure/dn535601.aspx (英語) を参照してください。
2. JSON (JavaScript Object Notation): Windows Azure テーブルで、OData 3.0 (英語) の JSON 形式が新たにサポートされました。JSON 形式では、AtomPub では必須である、ペイロードの内容を事前に通知する部分を転送する必要がなくなり、通信効率が向上しました。
JSON では、次の 3 つの形式がサポートされます。
- メタデータなし – この形式は最も通信効率が高く、クライアントがカスタム プロパティのデータ型を正しく解釈できる場合に有効です。
- 最小限のメタデータを含む – この形式では、黙示的に解釈することができない特定の型のカスタム プロパティについて、データ型の情報が記載されます。一般的なツールや Azure テーブルのブラウザーなど、クライアントがデータ型を把握していない場合のクエリで有効です。
- メタデータをすべて含む – この形式は、システム プロパティ、および edit link や id などの必須の OData 情報でも型定義が必要な、一般的な OData リーダーで有効です。
Windows Azure テーブル向けの JSON の詳細については、https://msdn.microsoft.com/en-us/library/windowsazure/dn535600.aspx (英語) を参照してください。
3. Windows Azure ストレージ分析における分単位メトリック: これまで Windows Azure ストレージでは、時間単位の集計がサポートされていました。これはサービスの可用性、エラー、送受信状態、API の使用状態、アクセス パターンを監視し、クライアント アプリケーションを改良するうえで非常に有効です (詳細についてはこちら)。新しい 2013-08-15 バージョンでは、分単位メトリックが導入されました。これにより、データの集計が分単位で実施され、さらに、通常はそれを 5 分以内で利用できるようになりました。分単位で集計を行うことにより、1 時間単位で集計する場合と比べてクライアント アプリケーションの監視のリアルタイム性が向上します。このため、1 秒間あたりの要求数のスパイクなど、傾向をより細かく把握することができます。今回導入された分単位メトリックにより、時間単位および分単位メトリック結果が保存されるストレージ アカウントで、下記のテーブルが使用できるようになります。
- $MetricsHourPrimaryTransactionsBlob
- $MetricsHourPrimaryTransactionsTable
- $MetricsHourPrimaryTransactionsQueue
- $MetricsMinutePrimaryTransactionsBlob
- $MetricsMinutePrimaryTransactionsTable
- $MetricsMinutePrimaryTransactionsQueue
分単位メトリックの集計でもテーブル名が変更されているので、ご注意ください。名前は変更されましたが、古いデータは引き続き新しいテーブル名で使用できます。
分単位メトリックの構成には、2013-08-15 バージョンで Windows Azure BLOB、テーブル、キューで REST API の Set Service Properties を使用します。現時点では、Windows Azure ポータルから分単位メトリックを構成することはできませんが、今後実施できるように変更する予定です。
今回のリリースでは、ここまで説明した主要なものの他にも、次の機能が追加されます。2013-08-15 バージョンにおけるこの他の変更点の詳細については、https://msdn.microsoft.com/ja-jp/library/windowsazure/dd894041.aspx を参照してください。
- 同一ストレージ アカウント内でコピーを行う場合、Copy Blob で、宛先 BLOB に対して Shared Access Signature (SAS) を使用できるようになりました。
- Windows Azure BLOB サービスで Content-Disposition (英語) が新たにサポートされ、cache-control や content-disposition などの応答ヘッダーを SAS からクエリ パラメーターで制御できるようになりました。Content-Disposition は、Set Blob Properties で静的に設定することもできます。
- Windows Azure BLOB サービスで、Get Blob および Get Blob Properties において複数の HTTP 条件ヘッダーが新たにサポートされました。この機能は、Web ブラウザーからのアクセスがプロキシ サーバーまたは CDN サーバーを経由していて、ヘッダーの内容が追加されている場合に特に有効です。
- Windows Azure Blob サービスで、コミットされていない BLOB (Put Block 操作で作成されたが Put Block List API でのコミットが済んでいない BLOB) でも Delete Blob 操作が可能になりました。これまでは、BLOB の削除を行う場合は事前にコミットしておく必要がありました。
- 2013-08-15 バージョンから、List Containers、List Blobs、List Queues が、リソースに URL アドレス フィールドを返さなくなりました。これは、クライアント側で再構築可能なフィールドを削減するための措置です。
- 2013-08-15 バージョンから、Lease Blob および Lease Container が、ETag (英語) および Last Modified Time 応答ヘッダーを返すようになりました。これにより、最後の追跡の後にリソースが変更されたかどうか (BLOB またはそのメタデータが更新されたかどうか) をリース ホルダーが簡単に確認できるようになりました。ETag の値は、BLOB のリース操作によって変更されることはありません。2013-08-15 バージョンからは、コンテナーのリース操作でも ETag が変更されることはなくなります。
マイクロソフトは、上記の機能をサポートし、新機能のテスト用に使用可能な更新版の Windows Azure ストレージ クライアント ライブラリをこちらのページ (英語) で公開する予定です。また、2 か月以内に、Windows Azure SDK 2.2 用の Windows Azure ストレージ エミュレーターをリリースする予定です。この更新では、“2013-08-15” バージョンと新機能がサポートされます。
上記の変更に加えて、今回のリリースに関する既知の問題と重大な(互換性のない)変更について述べた記事があります。下記の 2 つのブログ ページをお読みください。
- https://blogs.msdn.com/b/windowsazurej/archive/2013/11/29/blog-windows-azure-storage-known-issues.aspx
- https://blogs.msdn.com/b/windowsazurej/archive/2013/11/29/blog-windows-azure-tables-breaking-changes.aspx
ご不明な点がありましたら、フォーラム (英語) またはこの記事のコメント欄までお寄せください。
Jai Haridas、Brad Calder