Utilisation de l'API AMS en CLI, Ruby, Python et Java - Guide de l'utilisateur avancé d'AMS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de l'API AMS en CLI, Ruby, Python et Java

Vous trouverez ci-dessous une liste d'extraits de code pour le ListChangeTypeClassificationSummaries fonctionnement de l'API AMS, dans toutes les langues disponibles.

Pour Python, Ruby et Java SDKs, consultez Outils pour Amazon Web Services et faites défiler la page jusqu'à la SDKs section. Chaque programme d'installation du SDK contient un fichier README avec des extraits de code supplémentaires.

Exemple d'API AMS vers CLI

Après avoir installé l'AMS CLI (nécessite l'interface de ligne de AWS commande ; voirInstallation ou mise à niveau de l'AMS CLI), vous pouvez exécuter n'importe quelle opération d'API AMS en réformant l'appel en spécifiant d'abord quelle API AMS, aws amscm ouaws amsskms, puis en exécutant l'action avec des tirets remplaçant Camel Case. Enfin, fournissez des informations d'identification, telles que SAML.

Pour en savoir plus, consultez la section Utilisation de l'interface de ligne de AWS commande.

Exemple :

  • API : 'ChangeTypeClassificationSummaries[].[Category,Subcategory,Item,Operation,ChangeTypeId]'

  • CLI : amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries[*].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table

Note

Si vous vous authentifiez avec SAML, ajoutez-le aws --profile saml au début de la commande. Par exemple,

aws --profile saml amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries[*].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table

Exemple d'API AMS pour Python

Pour utiliser l'API AMS avec Python, installez l'AMS CLI et installez boto3. Procédez comme suit :

  1. Installez l'AMS CLI. Consultez Installation ou mise à niveau de l'AMS CLI.

  2. Installez boto3, le AWS SDK pour Python. Pour plus d'informations, consultez cet article de blog Now Available — AWS SDK for Python (Boto3).

    import boto3

  3. Téléchargez le client AMS Change Management :

    cm = boto3.client('amscm')

  4. Obtenez l'AMS CTs :

    cts = cm.list_change_type_classification_summaries()

    print(cts)

Exemples Python

Voici quelques exemples d'utilisation de Python dans AMS, pour créer des EC2 instances, and/or utilisez Lambda.

Exemple en Python pour créer un EC2

Cet exemple montre comment utiliser l' RESTFul API amscm depuis le code Python pour archiver et exécuter des processus RFC.

  1. Installez la CLI AMS à un endroit auquel vous avez accès ; vous avez besoin des fichiers qu'elle fournit.

  2. Appelez les bibliothèques Python et créez l' EC2 instance :

    import boto3 import json import time # Create the amscm client cm = boto3.client('amscm') # Define the execution parameters for EC2 Create AMSExecParams = { "Description": "EC2-Create", "VpcId": "VPC_ID", "Name": "My-EC2", "TimeoutInMinutes": 60, "Parameters": { "InstanceAmiId": "INSTANCE_ID", "InstanceSubnetId": "SUBNET_ID" } } # Create the AMS RFC cts = cm.create_rfc( ChangeTypeId="ct-14027q0sjyt1h", ChangeTypeVersion="3.0", Title="Python Code RFC Create", ExecutionParameters=json.dumps(AMSExecParams) ) # Extract the RFC ID from the response NewRfcID = cts['RfcId'] # Submit the RFC RFC_Submit_Return=cm.submit_rfc(RfcId=NewRfcID) # Check the RFC status every 30 seconds RFC_Status = cm.get_rfc(RfcId=NewRfcID) RFC_Status_Code = RFC_Status['Rfc']['Status']['Name'] while RFC_Status_Code != "Success": if RFC_Status_Code == "PendingApproval": print(RFC_Status_Code) time.sleep(30) elif RFC_Status_Code == "InProgress": print(RFC_Status_Code) time.sleep(30) elif RFC_Status_Code == "Failure": print(RFC_Status_Code) break else: print(RFC_Status_Code) RFC_Status = cm.get_rfc(RfcId=NewRfcID) RFC_Status_Code = RFC_Status['Rfc']['Status']['Name']

Exemple de Python avec Lambda

Cet exemple montre comment intégrer les modèles AMS à votre code afin de pouvoir l'utiliser avec Lambda, ou EC2 dans des endroits que vous ne voulez pas ou ne pouvez pas installer. amscli

Note

AMS ne fournit pas de SDK Python importable spécifique à AMS. Le script amscli d'installation installe les modèles de données de service AMS dans le chemin normal de l'interface de ligne de commande. Pour l'utilisation de la CLI et du système Python, c'est très bien, car awscli les deux boto3 lisent leurs modèles de service à partir des mêmes emplacements par défaut (~/.aws/models). Cependant, lorsque vous souhaitez utiliser les services AMS via boto3 dans Lambda (ou dans tout autre environnement d'exécution non local), cela se bloque car vous ne disposez plus des modèles de données. Voici une méthode pour résoudre ce problème en empaquetant les modèles de données avec la fonction.

Vous pouvez suivre des étapes simples pour exécuter votre code Python intégré à AMS dans Lambda ou dans un autre environnement d'exécution tel que EC2 Fargate, etc. Le flux de travail suivant montre les étapes nécessaires pour les fonctions Lambda intégrées à AMS.

En ajoutant les modèles de données au package de déploiement du code et en mettant à jour le chemin de recherche du SDK, vous pouvez simuler une expérience du SDK.

Important

Cet exemple et toutes les commandes autres que Python présentées ont été testés sur un ordinateur Mac.

Exemple de flux de travail :

  1. Installez la amscli. Cela crée un dossier ~/.aws/models sur votre ordinateur (Mac).

  2. Copiez les modèles dans un répertoire local :cp ~/.aws/models ./models.

  3. Incluez les modèles dans le package de déploiement de votre code.

  4. Mettez à jour votre code de fonction pour ajouter les nouveaux modèles au chemin du SDK. Notez que ce code doit être exécuté avant que boto3 ou botocore ne soient importés !

# Force Python to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore
Note

Comme les modèles d'exemple se trouvent dans un répertoire nommémodels, nous les ajoutons ./models à AWS_DATA _PATH. Si le répertoire était nommé/ams/boto3models, nous ajouterions le code suivant :

import os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore

Votre code devrait réussir à trouver les modèles AMS. Pour un exemple plus précis concernant l'emballage, voici le flux de travail spécifique à Lambda.

Exemple de flux de travail AMS Lambda :

Ces étapes appliquent l'exemple générique précédent à la création d'une fonction AWS Lambda.

  1. Installez l'amscli. Cela crée un dossier ~/.aws/models sur votre ordinateur (Mac).

  2. Copiez les modèles dans un répertoire local :

    cp ~/.aws/models ./models
  3. Ajoutez les modèles au fichier zip de déploiement de votre fonction :

    zip -r9 function.zip ./models
Important

Mettez à jour votre code de fonction pour ajouter les nouveaux modèles au chemin du SDK. Notez que ce code doit être exécuté avant que boto3 ou botocore ne soient importés !

# Force Python to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore
Note

Comme les modèles d'exemple se trouvent dans un répertoire nommémodels, nous les ajoutons ./models à AWS_DATA _PATH. Si le répertoire était nommé/ams/boto3models, nous ajouterions le code suivant :

import os os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore

Maintenant, déployez votre fonction :

  1. Ajoutez votre code de fonction au fichier zip de déploiement (si ce n'est pas déjà fait) :

    zip -g function.zip lambda-amscm-test.py
  2. Créez ou mettez à jour votre fonction avec le fichier zip que vous avez créé (console ou CLI) :

    aws lambda update-function-code --function-name lambda-amscm-test --zip-file fileb://function.zip --region us-east-1

Votre Lambda Python intégré à AMS devrait maintenant fonctionner.

Note

Votre fonction doit disposer d'autorisations IAM pour, amscm sinon vous recevrez une erreur d'autorisation.

Exemple de code de fonction Lambda pour tester amscm (contenu du fichier .py) : lambda-amscm-test

import json # Force lambda to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore def lambda_handler(event, context): use_session = boto3.session.Session(region_name="us-east-1") try: cm = use_session.client("amscm") cts = cm.list_change_type_categories() print(cts) except botocore.exceptions.UnknownServiceError: print("amscm not found") return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }

Résultats du test (succès) :

Réponse de la fonction :

{ "statusCode": 200, "body": "\"Hello from Lambda!\"" } Request ID: "1cea13c0-ed46-43b1-b102-a8ea28529c27"

Journaux de fonctions :

START RequestId: 1cea13c0-ed46-43b1-b102-a8ea28529c27 Version: $LATEST {'ChangeTypeCategories': ['Deployment', 'Internal Infrastructure Management', 'Management'], 'ResponseMetadata': {'RequestId': 'e27276a0-e081-408d-bcc2-10cf0aa19ece', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'e27276a0-e081-408d-bcc2-10cf0aa19ece', 'content-type': 'application/x-amz-json-1.1', 'content-length': '89', 'date': 'Sun, 10 May 2020 23:21:19 GMT'}, 'RetryAttempts': 0}} END RequestId: 1cea13c0-ed46-43b1-b102-a8ea28529c27

Exemple d'API AMS pour Ruby

Pour utiliser l'API AMS avec Ruby, installez le SDK AWS Ruby et la CLI AMS. Procédez comme suit :

  1. Installez l'AMS CLI. Consultez Installation ou mise à niveau de l'AMS CLI.

  2. Installez le SDK AWS Ruby. Consultez la section Outils pour Amazon Web Services.

  3. Configurez Ruby avec les commandes suivantes :

    require 'aws-sdk'

    config = {

     region: 'us-east-1',

     credentials: Aws::Credentials.new('ACCESS_KEY','SECRET_KEY')}

  4. Obtenez l'AMS CTs :

    ams_cm = Aws::amscm::Client.new(config)

    cts = ams_cm.list_change_type_classification_summaries

    print(cts)

Exemple d'API AMS vers Java

Pour utiliser l'API AMS avec Java, installez le SDK AWS Java et la CLI AMS. Procédez comme suit :

  1. Installez l'AMS CLI. Consultez Installation ou mise à niveau de l'AMS CLI.

  2. Installez le SDK AWS Java. Consultez la section Outils pour Amazon Web Services.

  3. Configurez Java à l'aide des commandes suivantes :

    import com.amazonaws.auth.BasicAWSCredentials;

    import com.amazonaws.services.amscm.model.AWSManagedServicesCMClient;

    import com.amazonaws.services.amscm.model.ListChangeTypeClassificationSummariesRequest;

    import com.amazonaws.services.amscm.model.ListChangeTypeClassificationSummariesResult;

    public static void getChangeTypeClassificationSummaries() {

  4. Définissez les informations d'identification. Nous vous recommandons de ne pas le coder en dur.

    final BasicAWSCredentials awsCredsCm =

     new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY");

  5. Créez le client AMS Change Management :

    final AWSManagedServicesCMClient cmClient =

     new AWSManagedServicesCMClient(awsCredsCm);

  6. Obtenez l'AMS CTs :

    final ListChangeTypeClassificationSummariesRequest listCtsRequest = new ListChangeTypeClassification SummariesRequest();

    final ListChangeTypeClassificationSummariesResult listCtsResult =

    cmClient.listChangeTypeClassificationSummaries(listCtsRequest);

    System.out.println("List of CTs");

    listCtsResult.getChangeTypeClassificationSummaries().stream()

    .map(x -> x.getCategory() + "/" + x.getSubcategory() + "/" + x.getItem() + "/" + x.getOperation())

    .forEach(System.out::println);

    }