我的要求是通過啓動(創建)時間獲取訂閱中的所有虛擬機。我沒有在儀表板中找到虛擬機創建的時間,因爲在Activity log
找到了時間戳。我想獲取由一個訂閱ID創建的所有虛擬機以及創建的時間。使用Python API在Azure上創建虛擬機時間
(對於此帳戶的詳細信息2FA被啓用,因此 - UserPassCredentials將無法正常工作)的預定ID的所有虛擬機的
列表:
import os
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.compute import ComputeManagementClient
subscription_id = os.environ['AZURE_SUBSCRIPTION_ID']
credentials = ServicePrincipalCredentials(client_id=os.environ['AZURE_CLIENT_ID'], secret=os.environ['AZURE_CLIENT_SECRET'], tenant=os.environ['AZURE_TENANT_ID'])
compute_client = ComputeManagementClient(credentials, subscription_id)
for vm in compute_client.virtual_machines.list_all():
print("\tVM: {}".format(vm.name))
從Activity log
取創建時間:
import os
import datetime
from pprint import pprint
from azure.monitor import MonitorClient
from azure.common.credentials import ServicePrincipalCredentials
today = datetime.datetime.now().date()
filter = " and ".join([ "eventTimestamp le '{}T00:00:00Z'".format(today), "resourceGroupName eq 'test-group'" ])
subscription_id = 'xxxxx'
credentials = ServicePrincipalCredentials(client_id=os.environ['AZURE_CLIENT_ID'], secret=os.environ['AZURE_CLIENT_SECRET'], tenant=os.environ['AZURE_TENANT_ID'])
client = MonitorClient(credentials, subscription_id)
select = ",".join([ "Administrative", "Write VirtualMachines" ])
activity_logs = client.activity_logs.list(filter=filter, select=select)
for i in activity_logs:
pprint(i.__dict__)
我能夠獲得所有虛擬機(1s t示例程序),但是在試圖獲取Activity log
時出現一些錯誤(第二個示例程序)。
錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/msrest/paging.py", line 109, in __next__
self.advance_page()
File "/Library/Python/2.7/site-packages/msrest/paging.py", line 95, in advance_page
self._response = self._get_next(self.next_link)
File "/Library/Python/2.7/site-packages/azure/monitor/operations/activity_logs_operations.py", line 117, in internal_paging
raise models.ErrorResponseException(self._deserialize, response)
azure.monitor.models.error_response.ErrorResponseException: Operation returned an invalid status code 'Bad Request'
有人可以幫我找到這個問題好嗎?任何幫助真的很感激。
請參考我的答案,謝謝。它適用於我。 –