2016-02-18 3 views
1

Я пытаюсь использовать API Azure ARM REST. Учитывая пример, чтобы создать группу ресурсов, это API упоминается в лазурной документацииИспользование Azure Resource Manager REST API

https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group-name}?api-version={api-version} 

Мой код:

import httplib, urllib, base64 

headers = { 
    # Request headers 
    'Content-Type': 'application/json', 
    'Ocp-Apim-Subscription-Key': 'xxxxxx', 
    'Authorization': 'xxxxx', 
    'Identifier' : 'xxxxx' 
} 

params = urllib.urlencode({ 
"location":"Central US" 
}) 

try: 
    conn = httplib.HTTPSConnection('xxxx.azure-api.net') 
    conn.request("PUT", "/resourcegroups/resourcename?api-version=2015-01-01%s" % params, "{body}", headers) 
    response = conn.getresponse() 
    data = response.read() 
    print(response.status) 
    conn.close() 
except Exception as e: 
    print("[Errno {0}] {1}".format(e.errno, e.strerror)) 

Я получаю сообщение об ошибке 404. Не могли бы вы помочь мне узнать, где я ошибаюсь. Спасибо.

+0

Разве вы не забыли часть/subscriptions/{subscription-id} в URI, которые у вас есть в строке, указанной в документации? – jakobandersen

+0

@miracledev, как я понимаю, это то, что соответствует параметру 'Ocp-Apim-Subscription-Key' –

+0

@MichaelB. Вы уверены, что применимы к API REST Resource Manager? Разве это не функция управления API? – jakobandersen

ответ

0

Основываясь на моем понимании, я думаю, что есть некоторые ошибки в вашем коде, как показано ниже.

  1. Согласно the package httplib API reference, то API REST URL должен быть разделен на host, path & query string (или params) в качестве аргументов для функции httplib.HTTPSConnection & conn.request, как @ miracledev замечания сказал. Таким образом, статус ответа не был найден 404.
  2. Запрос HTTP функции conn.request также не хватало для Common parameters and headers & location required header из REST API как headers что содержание Authorization заголовка будет получил от authenticating Azure Resource Manager request.

enter image description here

Надеется, что это помогает. С наилучшими пожеланиями.

+0

Привет, я изменил заголовок и conn.request, как вы уже упоминали. Теперь мой заголовок включает в себя cotent-type, client_id, tenant_id и authentication_key. Связь thisrequest такая. conn = httplib.HTTPSConnection ('management.azure.com') conn.request ("GET", "/ subscriptions/xxxx/resourcegroups/rapidresource? api-version = 2015-01-01% s"% params, "{ body} ", заголовки). Но теперь его ошибка 401 авторизации. Есть ли какой-либо другой параметр, который я должен включить в раздел заголовка? – shwetha

+0

@shwetha Заголовки должны включать необходимые элементы, которые вы можете найти в документе REST API. «Client_id», «tenant_id» и «authentication_key» используются для запроса токена доступа, который используется в заголовке «Авторизация», пожалуйста, обращайтесь к документу https://msdn.microsoft.com/en-us/library/azure /dn790557.aspx. –

+0

Итак, я сделал «pip install adal» и передал эти параметры, чтобы получить токен доступа. Затем я использовал его в разделе заголовка. Но его все еще бросает мне ошибку 401. – shwetha

Смежные вопросы