彷徨うおのこ

死ぬまで死なないぜ おれは

azureをpythonで動かす。リージョン取得API使う。

仕事でazureを使用することになったので、
その際の知見とハマったことをメモ。

リージョン取得API

参考

https://stackoverflow.com/questions/38494727/listing-locations-in-azure-using-python-azure-sdk-error
https://docs.microsoft.com/ja-jp/azure/cloud-services/cloud-services-python-how-to-use-service-management

ソース

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.subscription import SubscriptionClient

subscription_id = "xxxxxx"
client_id = "xxxxxx"
secret = "xxxxxx"
tenant_id = "xxxxxx"

creds = ServicePrincipalCredentials(client_id=client_id, secret=secret,
tenant=tenant_id)

subscription_client = SubscriptionClient(creds)
locations = subscription_client.subscriptions.list_locations(subscription_id)
for location in locations:
print(location.name)

実行結果


[root@xxxxx tmp]# python get_location.py 
Keyring cache token has failed: No recommended backend was available. Install the keyrings.alt package if you want to use the non-recommended backends. See README.rst for details.
Accept header absent and forced to application/json
eastasia
southeastasia
centralus
eastus
eastus2
westus
northcentralus
southcentralus
northeurope
westeurope
japanwest
japaneast
brazilsouth
australiaeast
australiasoutheast
southindia
centralindia
westindia
canadacentral
canadaeast
uksouth
ukwest
westcentralus
westus2
koreacentral
koreasouth
francecentral
francesouth
australiacentral
australiacentral2

やっていること

-subscriptionClientというクライアントオブジェクトを作成
-中身に各種idをいれこむ
-subscriptionClient.list_locationsというメソッドで、リージョンのリストを取得
-print()で出力

リージョン?

-クラウドストレージ特有の概念。使用可能な場所
-awsではAvailable Zone aka,AZ という
-azureはリージョンが最多
  • 西ヨーロッパ
  • 北ヨーロッパ
  • 東南アジア
  • 東アジア
  • 米国中央部
  • 米国中北部
  • 米国中南部
  • 米国西部
  • 米国東部
  • 東日本
  • 西日本
  • ブラジル南部
  • オーストラリア東部
  • オーストラリア南東部

サブスクリプション

-課金設定
-awsではCost?

id?

azureにログインして設定する項目たち


登録方法はググってください。
classは以下。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.subscription import SubscriptionClient

def get_credentials():
try:
subscription_id = "xxxxxx"
credentials = ServicePrincipalCredentials(
client_id = "xxxxxx",
secret = "xxxxxx",
tenant_id = "xxxxxx"
)
return credentials, subscription_id
except Exception as e:
print(e)

def azure_hoge():

try:
credentials, subscription_id = get_credentials()
subscription_client = SubscriptionClient(credentials)
locations = subscription_client.subscriptions.list_locations(subscription_id)
for location in locations:
print(location.name)

except Exception as e:
print(e)

if __name__ == "__main__":
azure_hoge()