[PYTHON] [AWS] Jugez de l'existence du prochain jeton et prenez toutes les valeurs [boto3]

Bonjour Anderson Ceci est mon mémorandum. Sauvegarde le

Le début de l'affaire

Il y avait un script sur AWS Lambda qui fouille avec les informations d'instance EC2 (describe_instances). J'ai remarqué que je n'ai pas obtenu tous les ID d'instance. Oui, boto3 a une API appelée NextToken, qui a une limite supérieure pour l'acquisition à la fois.

Qu'est-ce que c'est

Veuillez lire le document boto3 ... il ne fera rien ... Voir ici comme exemple https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_instances

API describe_instances EC2 Syntaxe de la réponse de retour

'string'


 Il devrait y avoir une valeur.

 Combien de valeurs peuvent être prises à la fois? je suis curieux
 ** Peut-être environ 50? ** Cela dépend peut-être de l'API. Si la valeur de MaxResults est la limite supérieure, describe_instances sera jusqu'à 1000.
 Quoi qu'il en soit, la clé telle que Next Token est le symbole "Get it from here next".

 Pour le moment, j'ai un script qui peut prendre tous les cas.
 Eh bien, demandez au support ou lisez la documentation pour plus de détails (terrible)

 quoi! ?? Ce truc de côté! Donnez-moi le résultat! ??
 Reconnaître.

# Exemple d'exemple de script
```python
NextToken = None
while True:
    if NextToken is None:
        ec2_var = ec2_cli.describe_instances()
    else:
        ec2_var = ec2_cli.describe_instances(NextToken=NextToken)
    
    #Obtenez la valeur requise à partir de la valeur de retour EC2 (JSON).
    for Reservations in ec2_var['Reservations']:
        for instances in Reservations['Instances']:
            #Nom d'hôte (balise/Nom) Extraction
            ec2_list_nametag.append(instances['Tags'][0]['Value'])
            #Extraire l'ID d'instance d'hôte
            ec2_list_id.append(str(instances['InstanceId']))
            #Extraction des informations AZ de placement d'hôte
            ec2_list_az.append(instances['Placement']['AvailabilityZone'])
            #Extraction de l'état de l'hôte
            ec2_list_status.append(instances['State']['Name'])
    
    if not 'NextToken' in ec2_var:
        break
    NextToken = ec2_var['NextToken']
else:
    print(NextToken)

#Combinez les valeurs de la liste EC2 extraite
ec2_list = [ec2_list_nametag,ec2_list_id,ec2_list_az,ec2_list_status]

#(Exemple) AZ-Obtenez l'hôte que vous êtes dans A.
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)

#(Exemple) Vérification de l'état de votre destination.
if hostname in != '': #Faisons-le si vous le cherchez
    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('Ne semble-t-il pas que vous n'aviez pas d'adresse?')

résultat

En utilisant le script ci-dessus, nous avons pu stocker toutes les informations d'instance dans une variable. Ensuite, fouillez les valeurs requises dans le for interne et faites une liste. En raison d'un jouet ridicule appelé EMR, même si EC2 fonctionne plusieurs fois, il pourra être pris rapidement.

Supplément

J'utilise un tableau multidimensionnel, mais en l'utilisant, je peux creuser diverses choses à partir d'un seul. Que voulez-vous dire? Si vous appuyez sur l'API et que vous êtes de bonne humeur, cela entraînera une limitation et le traitement sera lent. Si vous souhaitez ajouter quelque chose comme un processus de nouvelle tentative, il est plus facile de commencer par un seul coup, n'est-ce pas? Telle est la théorie. Wow ça Donc, si vous tracez la même valeur de retour avec for à partir du haut, l'ordre sera le même, non? Telle est la théorie. Wow ça Est-il facile de voir que je n'ai pas utilisé la notation de type d'inclusion? C'est ma propre préoccupation que n'importe qui puisse le comprendre. Vous pouvez être invité à réfléchir à l'utilisation de la mémoire des variables, mais si vous l'exécutez sur AWS Lambda, vous devriez être un peu inquiet. Quantité de mémoire.

C'est tout.

Recommended Posts

[AWS] Jugez de l'existence du prochain jeton et prenez toutes les valeurs [boto3]
[AWS S3] Confirmation de l'existence de dossiers sur S3
Pensez à la nouvelle génération de Rack et WSGI
Comment obtenir toutes les clés et valeurs du dictionnaire