2016-05-24 13 views
1

私は、PythonでBillilling APIを使用してMicrosoftのAzureのレート表をダウンロードする簡単なスクリプトを作成しようとしています。PythonでのAzure課金API - 空の応答

token_response = adal.acquire_token_with_client_credentials(
'https://login.microsoftonline.com/' + TENANT_ID, 
CLIENT-ID, 
CLIENT-KEY) 

access_token = token_response.get('accessToken') 

endpoint = "https://management.azure.com/subscriptions/[SUBSCRIPTION-ID]/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&$filter=OfferDurableId eq 'MS-AZR-0003P' and Currency eq 'GBP' and Locale eq 'en-GB' and RegionInfo eq 'GB'" 
headers = {"Authorization": 'Bearer ' + access_token} 

out = requests.get(endpoint,headers=headers) 

json_output = out.json() 
print son_output 

クエリが正しく実行されているようです。認可はOKと思われ、私は200 OKメッセージの応答を得ています。しかし、出力は空です:{u'value ':[]}。私は多分、私は、適切な権限を委任していないが、私は、Active Directoryに接続アプリケーションを作成して、生成されたかしら...

を異なるOfferIDs、異なる$フィルタ文字列と、今、それは怒っ私を運転だが試してみましたキー、および委任されたアクセス許可をWindows Azure Service Managementに適用しますか?それが問題だった場合、私はエラーを受け取りませんか?

同じことをやって別の方法を聞いて幸せな、しかし、Pythonは、私は本当に知っているすべてです...

+0

これは奇妙です! Google Postmanで同じエンドポイントを試したところ、Azure Subscriptionで返されたレート表のデータを確認できました。それをやってみることもできますか? –

+0

ありがとう@GauravMantri、しかし私はまだ郵便配達員に[]を得ています。これは私が許可またはAD設定と関係があると思いますか? –

+0

私は別のアクセストークン(グラフAPIのために取得)で試して、期待どおりに401エラーが発生しました。私はログインしたユーザー(この場合はサービスプリンシパル)へのアクセス許可と関係があると思う傾向があります。サービスプリンシパルがAzureサブスクリプションにアクセスできるかどうか確認できますか?このリンクを参照してください:https://azure.microsoft.com/en-in/documentation/articles/resource-group-create-service-principal-portal/ –

答えて

1

あなたが課金および使用方法APIと対話するために使用しているユーザーアカウントがアクセス権を持っていることを確認してください。 Azureサブスクリプションへ。あなたのケースではService Principalを使用していますので、このユーザーにサブスクリプションの役割が割り当てられていることを確認してください。

Service Principalを割り当てるには、このリンクが役立ちます。https://azure.microsoft.com/en-in/documentation/articles/resource-group-create-service-principal-portal/

このユーザーが唯一の不注意による変更がAzureのサブスクリプションに行うことができないようにReader役割に行くために、その優れた、データを読み取る必要があるので、それは、役割を割り当てることになります。

関連する問題