Python 使用Azure资源管理器REST API
我正在尝试使用Azure ARM REST API。考虑创建资源组的示例,这是azure文档中提到的APIPython 使用Azure资源管理器REST API,python,python-2.7,rest,azure,azure-resource-manager,Python,Python 2.7,Rest,Azure,Azure Resource Manager,我正在尝试使用Azure ARM REST API。考虑创建资源组的示例,这是azure文档中提到的API https://management.azure.com/subscriptions/{subscription-id}/resourcegroups/{resource-group-name}?api-version={api-version} 我的代码: import httplib, urllib, base64 headers = { # Request headers
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错误。你能帮我找出哪里出了问题吗。谢谢。根据我的理解,我认为您的代码中有一些错误,如下所示
主机
,路径
,查询字符串
(或参数
),作为函数httplib.HTTPSConnection
和conn.request
的参数,正如@dev的评论所说。因此,响应状态为404未找到conn.request
的HTTP请求对于restapi的&asheaders
也丢失,而Authorization
header内容可以从中获取希望能有帮助。致以最诚挚的问候。我认为最好使用msrest库而不是普通的http,因为它将为您完成大部分工作。例如,它将获得适当的访问令牌。 它还可以正确处理轮询 这里有一些自动生成的Python REST示例:
难道您没有忘记文档行中URI中的/subscriptions/{subscription id}部分吗?@miracledev,据我所知,
Ocp Apim subscription Key
参数就是这样的is@MichaelB您确定这适用于资源管理器REST API吗?这不是API管理功能吗?@miracledev我从端点azure API.net
(可能错过了问题标题!)做出了假设,所以是的,您可能是对的,OP需要额外的URI参数。我对APIM参数的来源感到困惑。如果您只是调用ARM API,那么您应该使用作为基址,而不是xxxx.azure-API.net,并且您需要按照@miracledev所说的那样包含订阅。您好,正如您所提到的,我已经更改了我的头和conn.request。现在,我的头包括内容类型、客户端id、租户id和身份验证密钥。控制室的要求是这样的。conn=httplib.HTTPSConnection('management.azure.com')conn.request(“GET”,“/subscriptions/xxxx/resourcegroups/rapidresource?api version=2015-01-01%s”%params,{body}”,headers)。但现在它是一个错误。是否有任何其他参数应该包含在我的标题部分?@shwetha标题应该包含您可以在REST API文档中找到的必需元素。client\u id
、tenant\u id
和authentication\u key
用于请求头Authorization
中使用的访问令牌,请关注文档。好的,我安装了pip adal
,并传递了这些参数以获取访问令牌。然后我在标题部分使用了它。但它仍然会给我一个401错误。@shwetha用于在Azure SDK For Python中验证ARM,请参阅。如果您想使用SDK创建资源组,您可以看到。@shwetha您可以尝试使用工具Postman
来请求这些REST API,并使用包含401错误原因的响应信息进行调试。