Microsoft Azure Storage サービスのバージョン削除に関する更新情報: 2016 年へ延期に

このポストは、10 月 19 日に投稿された Microsoft Azure Storage Service Version Removal Update: Extension to 2016 の翻訳です。 

 

概要

Azure Storage サービスでは、どの操作がサポートされるか、要求をどのように処理するか、どのような結果を返すかを管理するために、バージョン管理を利用しています。2014 年に、Microsoft Azure Storage サービスの特定のバージョンを 2015 年 12 月 9 日に削除することを発表しましたが、今回お客様からのフィードバックに基づき、以下のように変更することを決定しました。詳細については、下記の表をご覧ください。

  1. 一部の REST API バージョンおよび関連するクライアント ライブラリが削除される時期を延期します。今回の削除対象には、バージョン 2009-07-17 以前のすべての REST エンドポイントが含まれます。これらのサービスは、2016 年 8 月 1 日 に削除される予定です。
  2. 2011-08-18 および 2009-09-19 の各バージョンのエンドポイントの削除を無期限に延期します。この変更は即日適用されます。これらのバージョンは将来的に削除される予定ですが、少なくとも今後 12 か月間はサポートが継続されます。削除される正確な日付は、12 か月前にこのブログ フォーラムでお伝えします。
  3. 今後、SAS 認証および匿名のアクセスのバージョンが指定されていない場合、サービス バージョン 2014-04-05 が使用されます。ただし、バージョンが指定されていない SharedKey/SharedKeyLite 認証要求はすべて拒否されます。この変更は 2016 年 8 月 1 日 から適用されます。
  4. 2012-02-12 以降のバージョンについては、サポート レベルおよび有効性の変更はありません。

エンドポイント

変更内容

適用開始日

2008 (ドキュメント化されていませんが、バージョンが指定されていない要求の処理に使用されています)

削除

2016 年 8 月 1 日

バージョン 2009-04-14

削除

2016 年 8 月 1 日

バージョン 2009-07-17

削除

2016 年 8 月 1 日

バージョン 2009-09-19 (.NET クライアント ライブラリ バージョン 1.5.1 で使用)

延期

-

バージョン 2011-08-18 (.NET クライアント ライブラリ バージョン 1.7 で使用)

延期

-

バージョン 2012-02-12 バージョン 2013-08-15 バージョン 2014-02-14 (英語) バージョン 2015-02-21 (英語) バージョン 2015-04-05 (英語)

変更なし

-

 

サービス バージョンの削除による影響を避けるため、アプリケーションのアップグレードを早期に計画して実装するようにお願いいたします。また、最新機能をご利用いただけるように、定期的に最新のサービス バージョンおよびクライアント ライブラリに更新することをお勧めします。今回の削除による影響とその対応については、以降のセクションをお読みください。

今回の変更によるマニフェストの変更

バージョンを明示的に指定した要求

HTTP の x-ms-version 要求ヘッダーまたは api-version パラメーター (SAS 要求の場合) を削除対象のいずれかのバージョンに設定することでバージョンを明示的に指定した場合、要求は失敗して HTTP ステータス コード 400 (無効な要求) が返されます。この動作は、無効なバージョン ヘッダーが指定された要求の場合と同様です。

明示的にバージョンが指定されていない、 SharedKey/SharedKeyLite による要求

従来、アカウントの共有キーを使用して署名された要求については、HTTP の x-ms-version によって明示的にバージョンが指定されていない場合、ドキュメント化されていないバージョン 2008 で処理されていました。今後、バージョンが明示的に指定されていない場合、処理は失敗して HTTP ステータス コード 400 (無効な要求) が返されます。

“sv” パラメーターおよび “x-ms-version” が指定されていない SAS 要求

2012-02-12 より前のバージョンでは、SAS 要求の際に、SAS トークンの "sv" パラメーターでバージョンを指定していませんでした。このような要求における SAS トークンのパラメーターは、REST バージョン 2009-07-17 の処理規則に従って解釈されていました。これらの要求は引き続き有効ですが、今後はバージョン 2015-04-05 で処理されます。この場合、“x-ms-version” を削除対象のバージョン以外に設定して送信するか、アカウントの既定のバージョンを設定することをお勧めします。

明示的にバージョンが指定されていない匿名要求

バージョンが指定されていない匿名要求 (認証が指定されていない場合) については、バージョンに依存しないものと見なされます。2016 年 8 月 1 日から、匿名要求はバージョン 2015-04-05 で処理されます。匿名要求に使用されるバージョンは、今後再び変更される可能性があります。

ただし、バージョンが指定されていない要求が新しいサービス バージョンで処理された場合に致命的な変更があるかどうかについて、マイクロソフトでは一切保証しませんのでご注意ください。このような要求の例としては、ブラウザーから開始される HTTP 要求や、Storage クライアント ライブラリを使用しないアプリケーションから開始される、サービス バージョンが指定されていない HTTP 要求などが挙げられます。アプリケーションで匿名要求の x-ms-version を送信できない場合 (ブラウザーなど) は、Set Blob Service Properties (BLOB サービスの場合) などの REST API を使用してアカウントの既定の REST バージョンを指定できます。

既定のサービス バージョン

Set Blob Service Properties (REST API) を使用して要求の既定のバージョンをバージョン 2009-09-19 以降に設定している場合は、設定しているバージョンが使用されます。既定のサービス バージョンとして設定されたバージョンがその時点で削除されている場合、その要求では明示的にバージョンが指定されていると見なされ、処理は失敗してステータス コード 400 (無効な要求) が返されます。既定のサービス バージョンとして設定されたバージョンがその時点でもサポートされている場合、そのバージョンが引き続き使用されます。

クライアント ライブラリ

すべてのクライアント ライブラリおよびツールの最新バージョンには、今回の発表による影響はありません。ただし、.NET クライアント ライブラリ バージョン 1.5.1 はバージョン 2009-09-19 を使用しており、将来的にこのバージョンが削除される際に影響を受けることになります。このライブラリを現在も使用している場合は、削除される前に最新の .NET クライアント ライブラリに更新する必要があります。各種 REST エンドポイントを使用している .NET クライアント ライブラリの一覧については、https://msdn.microsoft.com/ja-jp/library/azure/dn744252.aspx をご確認ください。.NET 以外のライブラリを使用している場合は、今回の発表による影響はありません。詳細については、こちらの記事の「 サポート対象の最も古いバージョン/ライブラリ/SDK」のセクションを参照してください。

Azure CloudDrive

Azure CloudDrive では REST バージョン 2009-09-19 を使用しているため、今回の発表による影響はありません。なお、CloudDrive の移行については近日中の発表を予定しています。

お客様にご対応いただくこと

古いバージョンの削除後もアプリケーションを引き続き適切に機能させるには、以下の対応を行っていただく必要があります。

アプリケーションで使用しているバージョンの確認

まず、アプリケーションで使用している REST バージョンを確認します。アプリケーションをご自身で管理しており、Azure Storage への呼び出しを行うすべてのコンポーネントを確実に把握している場合は、使用しているコンポーネントを上記の表に照らしてチェックします。また、お客様が Storage への呼び出しを行うコードを独自に作成している場合は、そのコードで使用している REST バージョンを確認します。

より確実にチェックしたい場合や、デプロイされているコンポーネントのバージョンがわからない場合は、ログ記録を有効すれば、ストレージ アカウントへの要求をログに記録することが可能です。このログには要求で使用されているバージョンも記録されるため、これを利用して削除予定のバージョンを使用した要求が行われているかどうかを確認できます。

以下のログ エントリの例では、使用されているバージョンを太字で示しています。この例ではバージョンが指定されていない匿名の GetBlob 要求が実行されており、暗黙的に 2009-09-19 バージョンが使用されています。

1.0;2011-08-09T18:52:40.9241789Z;GetBlob;AnonymousSuccess;200;18;10;anonymous;;myaccount;blob;"https:// myaccount.blob.core.windows.net/thumbnails/lake.jpg?timeout=30000";"/myaccount/thumbnails/lake.jpg";a84aa705-8a85-48c5-b064-b43bd22979c3;0;123.100.2.10;2009-09-19;252;0;265;100;0;;;"0x8CE1B6EA95033D5";Friday, 09-Aug-11 18:52:40 GMT;;;;"8/9/2011 6:52:40 PM ba98eb12-700b-4d53-9230-33a3330571fc"

上記の例のように、ログ エントリを確認することで、削除されるサービス バージョンが参照されていないかどうかを確認することができます。

変更いただく内容

削除対象のバージョンが使用されていることを示すログ エントリが見つかった場合、該当するコンポーネントを特定すると共に、それが引き続き機能することを確認する (暗黙的に使用されるバージョンが更新されるだけなので、バージョンを指定しない要求でも引き続き機能する可能性があります。前述の説明を参照してください) か、使用するバージョンを変更するための適切な手順を実行する必要があります。一般的には、以下の 2 つの手順のいずれかを実施します。

  1. 要求で指定されているバージョンを変更します。クライアント ライブラリを使用している場合は、より新しいバージョンのライブラリおよびツールに移行します。この際、最も多くの機能強化やバグ修正によるメリットが得られるように、なるべく最新バージョンに移行するようにしてください。
  2. 既定のサービス バージョンをいずれかのサポート対象バージョンに設定します。この対応は、削除前に動作を確認できるようにすぐに実施することをお勧めします。なお、この設定が適用されるのは明示的にバージョンが指定されていない匿名要求のみです。

アプリケーションを新しいバージョンに移行する場合、前述の各サービス バージョンのリンク先に記載されている変更点を確認し、更新後もアプリケーションが適切に機能するように入念にテストしてください。なお、サービス バージョンの更新には、構文上の変更と意味上の変更の両方が含まれています。前者の場合、要求を行うと失敗の応答または形式が大きく異なる応答が返され、後者の場合、要求を行うと形式は似ていても意味が異なる応答が返されます。

移行後の検証

移行後は、サポート対象外となる古いバージョンが使用されていないことをログで確認する必要があります。この場合、実行頻度の低いタスクやワークロード (1 日に 1 回実行されるスケジュールされたタスクなど) でも移行前のバージョンが使用されていないことを確認するために、十分に長い期間のログをチェックしてください。

まとめ

ユーザーの皆様には、2016 8 1 に初期のサービス バージョンが削除される際に影響を受けないように、アプリケーションのアップグレードを今すぐ始めていただくことをお勧めします。また、Storage サービスに対するすべての要求でバージョンを明示的に指定することが理想的です。Azure Storage におけるバージョン管理とベスト プラクティスについては、MSDN の記事を参照してください。

今後ともよろしくお願いいたします。

Dinesh Murthy
Microsoft Azure Storage 担当
主任プログラム マネージャー