# Utilisation de l'endpoint API CreateVms

## Description
Cette méthode permet de creating a vm with block device mappings.

## Endpoint API
L'endpoint API à utiliser est `/CreateVms`.

## Méthode HTTP
La méthode HTTP à utiliser est `post`.

## En-têtes et authentification
Assurez-vous d'inclure les en-têtes suivants dans votre requête :
- `Content-Type: application/json` : Indique le type de contenu de la requête
- `Authorization` : Utilisez l'authentification AWS Signature Version 4 (AWS-SigV4)

## Paramètres de requête
### Paramètres requis :
Aucun paramètre requis

### Paramètres optionnels :
- `ImageId` : L'identifiant ImageId (ex: "ami-12345678") (optionnel)
- `VmType` : L'identifiant VmType (ex: "tinav5.c1r1p2") (optionnel)
- `KeypairName` : L'identifiant KeypairName (ex: "keypair-example") (optionnel)
- `SecurityGroupIds` : Liste de SecurityGroupIds (ex: ["sg-12345678"]) (optionnel)
- `SubnetId` : L'identifiant SubnetId (ex: "subnet-12345678") (optionnel)
- `UserData` : L'identifiant UserData (ex: "...") (optionnel)
- `BlockDeviceMappings` : Liste de BlockDeviceMappings (ex: [{"DeviceName": "/dev/sda1", "Bsu": {"VolumeSize": 15, "VolumeType": "gp2"}}, {"DeviceName": "/dev/sdb", "Bsu": {"SnapshotId": "snap-12345678", "VolumeSize": 22, "VolumeType": "io1", "Iops": 150}}]) (optionnel)

### Exemple de structure JSON :
{
  "ImageId": "ami-12345678",
  "VmType": "tinav5.c1r1p2",
  "KeypairName": "keypair-example",
  "SecurityGroupIds": [
    "sg-12345678"
  ],
  "SubnetId": "subnet-12345678",
  "UserData": "...",
  "BlockDeviceMappings": [
    {
      "DeviceName": "/dev/sda1",
      "Bsu": {
        "VolumeSize": 15,
        "VolumeType": "gp2"
      }
    },
    {
      "DeviceName": "/dev/sdb",
      "Bsu": {
        "SnapshotId": "snap-12345678",
        "VolumeSize": 22,
        "VolumeType": "io1",
        "Iops": 150
      }
    }
  ]
}

## Exemple de requête cURL
```bash
curl -X POST https://api.$OSC_REGION.outscale.com/api/v1/CreateVms \
  --user $OSC_ACCESS_KEY:$OSC_SECRET_KEY \
  --aws-sigv4 'osc' \
  --header 'Content-Type: application/json' \
  --data '{"ImageId": "ami-12345678", "VmType": "tinav5.c1r1p2", "KeypairName": "keypair-example", "SecurityGroupIds": ["sg-12345678"], "SubnetId": "subnet-12345678", "UserData": "...", "BlockDeviceMappings": [{"DeviceName": "/dev/sda1", "Bsu": {"VolumeSize": 15, "VolumeType": "gp2"}}, {"DeviceName": "/dev/sdb", "Bsu": {"SnapshotId": "snap-12345678", "VolumeSize": 22, "VolumeType": "io1", "Iops": 150}}]}'
```

## Notes importantes
- Assurez-vous d'avoir les autorisations nécessaires
- Remplacez $OSC_REGION, $OSC_ACCESS_KEY et $OSC_SECRET_KEY par vos valeurs
- Vérifiez que tous les paramètres requis sont fournis
- Les paramètres optionnels peuvent être omis selon vos besoins
Ordres utilisateur possibles :
1. Crée une VM avec configuration de stockage personnalisée
2. Déploie une instance avec des volumes additionnels
3. Lance une VM avec des mappages de périphériques de bloc
4. Configure une machine virtuelle avec des volumes BSU
curl -X POST https://api.$OSC_REGION.outscale.com/api/v1/CreateVms \
  --user $OSC_ACCESS_KEY:$OSC_SECRET_KEY \
  --aws-sigv4 'osc' \
  --header 'Content-Type: application/json' \
  --data '{"ImageId": "ami-12345678", "VmType": "tinav5.c1r1p2", "KeypairName": "keypair-example", "SecurityGroupIds": ["sg-12345678"], "SubnetId": "subnet-12345678", "UserData": "...", "BlockDeviceMappings": [{"DeviceName": "/dev/sda1", "Bsu": {"VolumeSize": 15, "VolumeType": "gp2"}}, {"DeviceName": "/dev/sdb", "Bsu": {"SnapshotId": "snap-12345678", "VolumeSize": 22, "VolumeType": "io1", "Iops": 150}}]}'
curl -X POST https://api.$OSC_REGION.outscale.com/api/v1/CreateVms \
  --user $OSC_ACCESS_KEY:$OSC_SECRET_KEY \
  --aws-sigv4 'osc' \
  --header 'Content-Type: application/json' \
  --data '{"ImageId": "wrong-image-id", "VmType": "tinav5.c1r1p2", "KeypairName": "keypair-example", "SecurityGroupIds": "invalid-sg", "SubnetId": "subnet-12345678", "UserData": "...", "BlockDeviceMappings": [{"DeviceName": "/dev/sda1", "Bsu": {"VolumeSize": 15, "VolumeType": "gp2"}}, {"DeviceName": "/dev/sdb", "Bsu": {"SnapshotId": "snap-12345678", "VolumeSize": 22, "VolumeType": "io1", "Iops": 150}}]}'