Guten Morgen Anderson Dies ist mein Memorandum. Speichern Sie es
In AWS Lambda gab es ein Skript, das sich mit EC2-Instanzinformationen (description_instances) befasst. Mir ist aufgefallen, dass ich nicht alle Instanz-IDs erhalten habe. Ja, boto3 verfügt über eine API namens NextToken, die eine Obergrenze für die gleichzeitige Erfassung aufweist.
Bitte lesen Sie das boto3-Dokument ... es wird nichts tun ... Siehe hier als Beispiel https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_instances
EC2 description_instances API Antwort-Syntax zurückgeben
'string'
Es sollte einen Wert geben.
Wie viele Werte können gleichzeitig genommen werden? ich bin neugierig
** Vielleicht ungefähr 50? ** Vielleicht hängt es von der API ab. Wenn der Wert von MaxResults die Obergrenze ist, beträgt description_instances bis zu 1000.
Wie auch immer, der Schlüssel wie Next Token ist das Symbol für "Holen Sie es von hier als nächstes".
Zur Zeit habe ich ein Skript bekommen, das alle Fälle aufnehmen kann.
Fragen Sie den Support oder lesen Sie die Dokumentation für Details (schrecklich)
Was! ?? Diese Side-Dressing-Sache! Gib mir das Ergebnis! ??
Verstehen.
# Beispiel für ein Skriptbeispiel
```python
NextToken = None
while True:
if NextToken is None:
ec2_var = ec2_cli.describe_instances()
else:
ec2_var = ec2_cli.describe_instances(NextToken=NextToken)
#Rufen Sie den erforderlichen Wert aus dem EC2-Rückgabewert (JSON) ab.
for Reservations in ec2_var['Reservations']:
for instances in Reservations['Instances']:
#Hostname (Tag/Name) Extraktion
ec2_list_nametag.append(instances['Tags'][0]['Value'])
#Extraktion der Hostinstanz-ID
ec2_list_id.append(str(instances['InstanceId']))
#Extraktion von Host-Platzierungs-AZ-Informationen
ec2_list_az.append(instances['Placement']['AvailabilityZone'])
#Extraktion des Hoststatus
ec2_list_status.append(instances['State']['Name'])
if not 'NextToken' in ec2_var:
break
NextToken = ec2_var['NextToken']
else:
print(NextToken)
#Kombinieren Sie die Werte in der extrahierten EC2-Liste
ec2_list = [ec2_list_nametag,ec2_list_id,ec2_list_az,ec2_list_status]
#(Beispiel) AZ-Holen Sie sich den Host, in dem Sie sich befinden.
for i in ec2_list[0]:
if 'hoge' in i:
num =ec2_list[0].index(i)
if ec2_list[2][num] == 'ap-northeast-1a':
hostname = str(i)
#(Beispiel) Überprüfen des Status Ihres Ziels.
if hostname in != '': #Lass es uns tun, wenn du danach suchst
for i in ec2_list[0]:
if hostname in i:
num =ec2_list[0].index(i)
host_status = str(ec2_list[3][num])
else:
print('Sieht es nicht so aus, als hättest du keine Adresse?')
Mit dem obigen Skript konnten wir alle Instanzinformationen in einer Variablen speichern. Graben Sie dann die erforderlichen Werte im internen für aus und erstellen Sie eine Liste. Aufgrund eines lächerlichen Spielzeugs namens EMR kann EC2, selbst wenn es einige Male ausgeführt wird, schnell genommen werden.
Ich verwende ein mehrdimensionales Array, aber mit diesem kann ich auf verschiedene Weise aus der gesamten Menge eines Arrays graben. Was möchten Sie sagen? Wenn Sie auf die API klicken und gute Laune haben, wird dies zu einer Drosselung führen und die Verarbeitung wird langsam sein. Wenn Sie so etwas wie einen Wiederholungsvorgang hinzufügen möchten, ist es einfacher, ihn zuerst mit einem Schuss auszuführen, nicht wahr? Das ist die Theorie. Wow das Wenn Sie also den gleichen Rückgabewert mit for von oben verfolgen, ist die Reihenfolge dieselbe, oder? Das ist die Theorie. Wow das Ist es leicht zu erkennen, dass ich die Einschlussartnotation nicht verwendet habe? Es ist meine eigene Sorge, dass jeder es verstehen kann. Möglicherweise werden Sie gebeten, über die Speichernutzung von Variablen nachzudenken. Wenn Sie diese jedoch unter AWS Lambda ausführen, sollten Sie sich ein wenig Sorgen machen. Speichermenge.
Das ist es.