

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 et de la CLI AMS
<a name="understand-sent-api"></a>

L'API AWS Managed Services (AMS) est similaire à celle APIs des autres AWS services. Vous pouvez en savoir plus sur l'API AMS dans le manuel [AMS API Reference](https://docs.aws.amazon.com/managedservices/latest/ApiReference-cm/index.html).

## Points de terminaison HTTP de l'API AMS pour les appels REST
<a name="sent-api-endpoints"></a>

Outre les différents SDKs, AMS fournit une CLI ; vous pouvez également appeler des appels d'API REST contre le point de terminaison AMS.

Il existe deux AMS APIs (le point final pour les deux se trouve dans us-east-1) :
+ Gestion des modifications : utilisez cette API pour demander l'accès à votre infrastructure ou pour y apporter des modifications, notamment en créant et en mettant à jour RFCs, en déployant de nouvelles instances, en mettant à jour et en supprimant des instances, en obtenant des informations et en créant AMIs. CTs Le point de terminaison HTTP est :

  `https://amscm.us-east-1.amazonaws.com`
+ SKMS : utilisez cette API pour obtenir des informations sur votre infrastructure, notamment les piles VPCs, les sous-réseaux et. AMIs Le point de terminaison HTTP est :

  `https://amsskms.us-east-1.amazonaws.com`

## Installation ou mise à niveau de l'AMS CLI
<a name="install-sent-cli"></a>

La CLI AMS est un moyen facile d'interagir avec l'API AMS. Elle est utilisée dans les exemples de cette section. Pour les conventions d'utilisation des AWS CLI et AMS CLI, reportez-vous à la section [Utilisation de l'interface de ligne de AWS commande](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-using.html). 

Pour plus d'informations sur l'installation de SAML, consultez[Règle de réclamation AD FS et paramètres SAML](adfs-claim-rule-saml.md). 

Pour installer ou mettre à niveau l'AMS CLI, suivez ces instructions :
**Note**  
Vous devez disposer des informations d'identification d'administrateur pour cette procédure.

L'AWS CLI est une condition préalable à l'utilisation d'AWS Managed Services (AMS) CLIs (Change Management et SKMS).

1. Pour installer l'interface de ligne de commande AWS, consultez [la section Installation de l'interface de ligne de commande AWS](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) et suivez les instructions appropriées. Notez qu'au bas de cette page, vous trouverez des instructions pour utiliser différents programmes d'installation, [Linux](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux.html), [MS Windows](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html), [macOS](https://docs.aws.amazon.com/cli/latest/userguide/cli-install-macos.html), [Virtual Environment](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-virtualenv.html), [Bundled Installer (Linux, macOS ou Unix](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-bundle.html)).

   Après l'installation, exécutez `aws help` pour vérifier l'installation.

1. Une fois l'interface de ligne de commande AWS installée, pour installer ou mettre à niveau l'interface de ligne de commande AMS, téléchargez le fichier zip distribuable de l'**interface** de ligne de commande **AMS ou du SDK AMS** et décompressez-le. Vous pouvez accéder aux distribuables de l'AMS CLI via le lien [https://console.aws.amazon.com/managedservices/developerResources](https://console.aws.amazon.com/managedservices/developerResources) dans le menu de navigation gauche de la console AMS.

1. Le fichier README fournit des instructions pour toute installation.

   Ouvrez soit :
   + ZIP de la CLI : fournit uniquement la CLI AMS.
   + ZIP du SDK : fournit tous les AMS APIs et la CLI AMS.

   Pour **Windows**, exécutez le programme d'installation approprié (systèmes 32 ou 64 bits uniquement) :
   + 32 bits : **ManagedCloudAPI\$1x86.msi**
   + 64 bits : **ManagedCloudAPI\$1x64.msi**

   Pour **Mac/Linux**, exécutez le fichier nommé : **AWSManagedServices\$1InstallCLI.sh** en exécutant cette commande :. `sh AWSManagedServices_InstallCLI.sh` **Notez que les répertoires **amscm** et **amsskms** ainsi que leur contenu doivent se trouver dans le même répertoire que le fichier .sh. AWSManagedServices\$1InstallCLI**

1. Si les informations d'identification de votre entreprise sont utilisées par le biais de la fédération avec AWS (configuration par défaut d'AMS), vous devez installer un outil de gestion des informations d'identification qui peut accéder à votre service de fédération. Par exemple, vous pouvez utiliser ce blog de sécurité AWS consacré à la [mise en œuvre d'un accès fédéré aux API et CLI à l'aide de SAML 2.0 et d'AD FS](https://blogs.aws.amazon.com/security/post/Tx1LDN0UBGJJ26Q/How-to-Implement-Federated-API-and-CLI-Access-Using-SAML-2-0-and-AD-FS) pour vous aider à configurer vos outils de gestion des informations d'identification.

1. Après l'installation, lancez `aws amscm help` et consultez `aws amsskms help` les commandes et les options.
**Note**  
L'AMS CLI doit être installée pour que ces commandes fonctionnent. Pour installer l'API ou la CLI AMS, rendez-vous sur la page **Ressources pour développeurs** de la console AMS. Pour des informations de référence sur l'API AMS CM ou l'API AMS SKMS, consultez la section Ressources d'information AMS du guide de l'utilisateur. Vous devrez peut-être ajouter une `--profile` option d'authentification ; par exemple,`aws amsskms ams-cli-command --profile SAML`. Vous devrez peut-être également ajouter `--region` cette option car toutes les commandes AMS sont exécutées à partir de us-east-1, par exemple. `aws amscm ams-cli-command --region=us-east-1`

# Utilisation de l'API AMS en CLI, Ruby, Python et Java
<a name="sent-api-ruby-python-java"></a>

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](https://aws.amazon.com/tools/) 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
<a name="cli-list-ct-summaries"></a>

Après avoir installé l'AMS CLI (nécessite l'interface de ligne de AWS commande ; voir[Installation ou mise à niveau de l'AMS CLI](understand-sent-api.md#install-sent-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` ou`aws 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](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-using.html).

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
<a name="python-list-ct-summaries"></a>

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](understand-sent-api.md#install-sent-cli).

1. Installez boto3, le AWS SDK pour Python. Pour plus d'informations, consultez cet article de blog [Now Available — AWS SDK for Python (Boto3](https://aws.amazon.com/blogs/aws/now-available-aws-sdk-for-python-3-boto3/)).

   `import boto3`

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

   `cm = boto3.client('amscm')`

1. Obtenez l'AMS CTs :

   `cts = cm.list_change_type_classification_summaries()`

   `print(cts)`

### Exemples Python
<a name="python-examples"></a>

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
<a name="python-examples-create-ec2"></a>

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.

1. 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
<a name="python-examples-lambda"></a>

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).

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

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

1. 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 \$1

```
# 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\$1DATA \$1PATH. 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).

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

   ```
   cp ~/.aws/models ./models
   ```

1. 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 \$1

```
# 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\$1DATA \$1PATH. 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
   ```

1. 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
<a name="ruby-list-ct-summaries"></a>

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](understand-sent-api.md#install-sent-cli).

1. Installez le SDK AWS Ruby. Consultez la section [Outils pour Amazon Web Services](https://aws.amazon.com/tools/).

1. Configurez Ruby avec les commandes suivantes :

   `require 'aws-sdk'`

   `config = { `

   ` region: 'us-east-1',`

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

1. 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
<a name="java-list-ct-summaries"></a>

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](understand-sent-api.md#install-sent-cli).

1. Installez le SDK AWS Java. Consultez la section [Outils pour Amazon Web Services](https://aws.amazon.com/tools/).

1. 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() {`

1. 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");`

1. Créez le client AMS Change Management :

   `final AWSManagedServicesCMClient cmClient =`

   ` new AWSManagedServicesCMClient(awsCredsCm);`

1. 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);`

   `}`