Löschen Sie in AWS IoT das Zertifikat, das nicht an das Objekt angehängt ist. Wenn Sie eine große Anzahl unnötiger Zertifikate erstellt haben.
import boto3
class CertKiller():
def __init__(self):
#Instanziieren Sie eine Klasse, die AWS IoT betreibt
self.client = boto3.client('iot')
return
def delete_not_attached_cert_all(self):
'''
Löschen Sie Zertifikate, die nicht an Dinge angehängt sind
'''
#Holen Sie sich eine Liste der Zertifikatinformationen
list_cert = self.get_list_cert()
#Löschen Sie Zertifikate, die nicht an Dinge angehängt sind
for cert in list_cert:
self.__delete_not_attached_cert(cert)
return
def get_list_cert(self):
'''
Holen Sie sich eine Liste der Zertifikatinformationen
'''
list_cert = self.client.list_certificates(pageSize=100)['certificates']
return list_cert
def __delete_not_attached_cert(self, cert):
'''
Löschen, wenn das Zertifikat keinem Objekt zugeordnet war
'''
#Zertifikatinformationen abrufen
cert_arn = cert['certificateArn']
cert_id = cert['certificateId']
#Holen Sie sich eine Liste der Dinge mit einem Zertifikat beigefügt
thing_attached_cert = self.client.list_principal_things(principal=cert_arn)['things']
print(cert_arn, thing_attached_cert)
#Löschen, wenn das Zertifikat keinem Objekt zugeordnet war
if len(thing_attached_cert) == 0:
self.__delete_cert(cert_arn, cert_id)
else:
pass
return
def __delete_cert(self, cert_arn, cert_id):
'''
Zertifikat löschen
'''
#Muss vor dem Löschen deaktiviert werden
self.client.update_certificate(certificateId=cert_id, newStatus='INACTIVE')
#Die Richtlinie muss vor dem Löschen getrennt werden
self.__detach_all_policy(cert_arn, cert_id)
#Löschen
self.client.delete_certificate(certificateId=cert_id, forceDelete=False)
print('{} has been deleted.'.format(cert_arn))
return
def __detach_all_policy(self, cert_arn, cert_id):
'''
Trennen Sie alle an das Zertifikat angehängten Richtlinien
'''
#Rufen Sie eine Liste der an das Zertifikat angehängten Richtlinien ab
list_policy = self.client.list_attached_policies(target=cert_arn)['policies']
#Ablösen
for policy in list_policy:
policy_name = policy['policyName']
self.client.detach_policy(policyName=policy_name, target=cert_arn)
return
cert_killer = CertKiller()
cert_killer.delete_not_attached_cert_all()
Ich bin ein sehr Anfänger, daher würde ich es begrüßen, wenn Sie auch die kleinsten Dinge hervorheben und kommentieren könnten.
Recommended Posts