Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

仮想マシン情報をBLOBのメタデータから取得する

仮想マシンV1では、仮想ディスクのリポジトリ的な概念があって、Add-AzureDisk等で明示的にディスク登録しないと、仮想マシンから接続できなかったのに対して、仮想マシンV2ではこのような概念が無くなってしまったようです。

例えば、VHDを基点としてどの仮想マシンに接続されているかを知りたいときにちょっと面倒くさいことになってしまいます。ということを考えながら、BLOBを触っていると、ふとヘッダに情報が付加されているが目に付きました。

ストレージクライアントからも属性を取得すれば、Metadata Propertyに格納されるようです。

HTTP/1.1 200 OK
Content-Length: 136367309312
Content-Type: application/octet-stream
Content-MD5: M7FTnYH43CgjBhWcGCzG8g==
Last-Modified: Wed, 25 Nov 2015 02:19:10 GMT
Accept-Ranges: bytes
ETag: "0x8D2F53ECE3D9C1B"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 5271c75b-0001-003b-0e36-2cf028000000
x-ms-version: 2015-04-05
x-ms-meta-MicrosoftAzureCompute_ResourceGroupName: HOGE_RG
x-ms-meta-MicrosoftAzureCompute_VMName: HOGE_VM
x-ms-meta-MicrosoftAzureCompute_DiskId: 243489b9-81ae-4276-81bc-c4eefe0549f1
x-ms-meta-MicrosoftAzureCompute_DiskName: HOGE_DISK
x-ms-meta-MicrosoftAzureCompute_DiskType: OSDisk
x-ms-lease-status: locked
x-ms-lease-state: leased
x-ms-lease-duration: infinite
x-ms-blob-type: PageBlob
x-ms-blob-sequence-number: 1
x-ms-copy-id: 5d13ba30-005a-4ca1-bb9e-bba39f2eb62d
x-ms-copy-source: https://rdfepirv2kw1prdstr01.blob.core.windows.net/ar-699494373c04fc0bc8f2bb1389d6106-r14/Windows-Server-2012-R2-20151022-en.us-127GB.vhd?sv=2014-02-14&sr=b&si=PirCacheAccountPublisherContainerPolicy&sig=Fl1oTDMSS89zaQzaBlHlMqN2S26HQTJuZJIaxdnsw9Q%3D
x-ms-copy-status: success
x-ms-copy-progress: 136367309312/136367309312
x-ms-copy-completion-time: Wed, 25 Nov 2015 02:06:21 GMT
Date: Tue, 01 Dec 2015 12:46:02 GMT

上記からは、

  • リソースグループ名
  • リソース名(仮想マシン名)
  • ディスク名
  • ディスクタイプ

などが分かります。実際、リソースグループ名とリソース名(仮想マシン名)があれば、仮想マシン情報は取得できるので、この情報があれば十分使えそうです。

ただ正式に言及されているドキュメントがなさそうなので、ふとしたことで仕様が変わってしまうと可能性があるため、利用には注意が必要そうです。