Comment gérer mes instantanés et créer des sauvegardes pour mes instances Lightsail à l'aide des commandes CLI AWS ?

Dernière mise à jour : 11-01-2021

Je souhaite gérer mes instantanés et créer des sauvegardes pour mes instances Amazon Lightsail à l'aide des commandes de l'interface AWS CLI (AWS Command Line Interface). Comment dois-je procéder ?

Brève description

Pour obtenir la liste des commandes AWS CLI pour Amazon Lightsail, consultez Document de référence sur les commandes AWS CLI et Document de référence sur l'API Amazon Lightsail.

Vous trouverez ci-dessous des scénarios courants d'utilisation des commandes AWS CLI dans vos instances Lightsail pour gérer les instantanés et les sauvegardes :

  • Gestion des sauvegardes manuelles :
    Créer des sauvegardes manuelles pour votre instance
    Dresser la liste des instantanés disponibles
  • Gestion des instantanés automatiques :
    Vérifier si des instantanés automatiques sont activés sur vos instances
    Activer les instantanés automatiques
    Dresser la liste des instantanés automatiques et créer une nouvelle instance à partir d'une sauvegarde via une offre de plus grande taille ou un plan Lightsail supérieur

Important : gardez ce qui suit à l'esprit lorsque vous utilisez les commandes AWS CLI :

macOS :

Supprimez le point décimal de l'horodatage et tous les chiffres situés à droite du point décimal, puis exécutez la commande suivante :

# date -r 1602175741 -u
Thu Oct  8 16:49:01 UTC 2020

Linux :

Exécutez la commande suivante :

# date -d @1602175741.603 -u
Thu Oct  8 16:49:01 UTC 2020

Windows :

Convertissez l'horodatage à l'aide d'un convertisseur comme epochconverter.com.

Solution

Gestion des sauvegardes manuelles

Créer une sauvegarde manuelle pour une instance Lightsail

Exécutez la commande create-instance-snapshot pour créer un instantané de l'instance Lightsail.

L'exemple suivant crée un instantané de l'instance SnapshotTestLightsailInstance1 dans la région eu-west-1. Remplacez --instance-snapshot-name, --instance-name et --region par les valeurs correspondant à votre requête.

# aws lightsail create-instance-snapshot --instance-name TestLightsailInstance1 --instance-snapshot-name SnapshotTestLightsailInstance1
{
    "operations": [
        {
            "id": "d3196be7-3dc6-4508-b335-16ce45f11c90",
            "resourceName": "SnapshotTestLightsailInstance1",
            "resourceType": "InstanceSnapshot",
            "createdAt": 1602180831.638,
            "location": {
                "availabilityZone": "all",
                "regionName": "eu-west-1"
            },
            "isTerminal": false,
            "operationDetails": "TestLightsailInstance1",
            "operationType": "CreateInstanceSnapshot",
            "status": "Started",
            "statusChangedAt": 1602180831.638
        },
        {
            "id": "df237a33-bca9-4fc3-8f46-ea5d12606f5c",
            "resourceName": "TestLightsailInstance1",
            "resourceType": "Instance",
            "createdAt": 1602180831.638,
            "location": {
                "availabilityZone": "eu-west-1a",
                "regionName": "eu-west-1"
            },
            "isTerminal": false,
            "operationDetails": "SnapshotTestLightsailInstance1",
            "operationType": "CreateInstanceSnapshot",
            "status": "Started",
            "statusChangedAt": 1602180831.638
        }
    ]
}

Dresser la liste des instantanés disponibles

Exécutez la commande get-instance-snapshots afin de dresser la liste de tous les instantanés pour vos instances Lightsail. L'exemple suivant illustre en détail les instantanés disponibles dans eu-west-1. Remplacez la valeur --region par la valeur correspondant à votre requête.

# aws lightsail get-instance-snapshots --region eu-west-1 --query 'instanceSnapshots[].{name:name,createdAt:createdAt,resourceType:resourceType,state:state,fromInstanceName:fromInstanceName,sizeInGb:sizeInGb}' --output table
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|                                                                                                GetInstanceSnapshots                                                                                                 |
+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------+-----------+-------------+
|    createdAt   |            fromInstanceName             |                                                   name                                                     |   resourceType    | sizeInGb  |    state    |
+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------+-----------+-------------+
|  1602180831.638|  TestLightsailInstance1                 |  SnapshotTestLightsailInstance1                                                                            |  InstanceSnapshot |  40       |  available  |
+----------------+-----------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------+-----------+-------------+

Gestion des instantanés automatiques

Vérifier si des instantanés automatiques sont activés sur vos instances

Exécutez la commande suivante pour vérifier si des instantanés automatiques sont activés sur votre instance et pour consulter le calendrier défini. Remplacez TestLightsailInstance1 par le nom de votre instance et --region par la région qui convient.

# aws lightsail get-instances --region eu-west-1  --query 'instances[].{addOns:addOns,name:name,publicIpAddress:publicIpAddress,AutoMatciSnapshotStatus:(addOns[].status),Schedule:(addOns[].snapshotTimeOfDay)}' --output text| grep -w "TestLightsailInstance1"
['Enabled']     ['20:00']       [{'name': 'AutoSnapshot', 'status': 'Enabled', 'snapshotTimeOfDay': '20:00'}]   TestLightsailInstance1  3.250.xx.xx

Activer les instantanés automatiques

Exécutez la commande enable-add-on afin d'activer les instantanés automatiques pour vos instances Lightsail. L'exemple suivant crée des instantanés automatiques quotidiens définis sur un incrément horaire en UTC (08PM UTC). Remplacez --resource-name, snapshotTimeOfDay et --region par les valeurs correspondant à votre requête.

# aws lightsail enable-add-on --region eu-west-1 --resource-name TestLightsailInstance1 --add-on-request addOnType=AutoSnapshot,autoSnapshotAddOnRequest={snapshotTimeOfDay=20:00}
{
    "operations": [
        {
            "id": "823bb162-9848-4897-b845-8f41c375801a",
            "resourceName": "TestLightsailInstance1",
            "resourceType": "Instance",
            "createdAt": 1602181856.652,
            "location": {
                "availabilityZone": "eu-west-1",
                "regionName": "eu-west-1"
            },
            "isTerminal": false,
            "operationDetails": "EnableAddOn - AutoSnapshot",
            "operationType": "EnableAddOn",
            "status": "Started"
        }
    ]
}

Dresser la liste des instantanés automatiques et créer une nouvelle instance à partir de la sauvegarde via une offre de plus grande taille ou un plan Lightsail supérieur

1. Exécutez la commande get-auto-snapshots afin de dresser la liste des instantanés automatiques disponibles pour votre disque ou vos instances Lightsail. L'exemple suivant illustre en détail les instantanés disponibles pour l'instance TestLightsailInstance1. Remplacez les valeurs --resource-name et --region par les valeurs correspondant à votre requête.

# aws lightsail get-auto-snapshots --region eu-west-1 --resource-name TestLightsailInstance1
{
    "resourceName": "TestLightsailInstance1",
    "resourceType": "Instance",
    "autoSnapshots": [
        {
            "date": "2020-10-08",
            "createdAt": 1602188663.0,
            "status": "Success",
            "fromAttachedDisks": []
        }
    ]
}

2. Exécutez la commande create-instances-from-snapshot pour créer une ou plusieurs instances Lightsail à partir d'une sauvegarde manuelle ou automatique. L'exemple suivant crée une instance dans la région eu-west-1 avec une sauvegarde spécifique et une offre de plus grande taille. Remplacez les valeurs --instance-snapshot-name, --instance-names, bundle-id et --region par les valeurs correspondant à votre requête.

# aws lightsail create-instances-from-snapshot --region eu-west-1 --instance-snapshot-name SnapshotTestLightsailInstance1 --instance-names RestoredTestLightsailInstance1-New  --availability-zone eu-west-1a --bundle-id large_2_0
{
    "operations": [
        {
            "id": "09f7d1bb-90f4-48dc-b304-543499e11208",
            "resourceName": "RestoredTestLightsailInstance1-New",
            "resourceType": "Instance",
            "createdAt": 1602182374.625,
            "location": {
                "availabilityZone": "eu-west-1a",
                "regionName": "eu-west-1"
            },
            "isTerminal": false,
            "operationType": "CreateInstancesFromSnapshot",
            "status": "Started",
            "statusChangedAt": 1602182374.625
        }
    ]
}

L'exemple suivant crée une nouvelle instance basée sur la sauvegarde spécifiée et sur une offre de plus grande taille :

# aws lightsail get-instances --region eu-west-1 --query 'instances[].{name:name,createdAt:createdAt,blueprintId:blueprintId,blueprintName:blueprintName,publicIpAddress:publicIpAddress}' --output table |grep -i RestoredTestLightsailInstance1-New

|  wordpress      |  WordPress     |  1602182374.625 |  RestoredTestLightsailInstance1-New      |  34.247.xx.xx    |