Comment puis-je évaluer et corriger automatiquement le volume croissant sur une instance Amazon EC2 lorsque l'espace disque disponible est faible ?

Date de la dernière mise à jour : 17/05/2022

Je souhaite savoir si les volumes attachés à mes instances Amazon Elastic Compute Cloud (Amazon EC2) doivent être étendus. De plus, l'extension de partitions et de systèmes de fichiers au niveau du système d'exploitation (SE) est une opération chronophage. Comment puis-je automatiser l'ensemble du processus ?

Brève description

Vous pouvez utiliser un ensemble de documents AWS Systems Manager Automation pour évaluer et étendre les volumes Amazon Elastic Block Store (Amazon EBS). Les documents Automation fonctionnent de concert, ce qui vous permet d'étudier et éventuellement de remédier à la faible utilisation du disque sur une instance Amazon EC2.

Le document AWSPremiumSupport-TroubleshootEC2DiskUsage Automation orchestre l'exécution des autres documents Systems Manager, en fonction du type de système d'exploitation.

Le premier ensemble de documents effectue des diagnostics de base et évalue s'il est possible de migrer en augmentant la taille du volume :

  • AWSPremiumSupport-DiagnoseDiskUsageOnWindows
  • AWSPremiumSupport-DiagnoseDiskUsageOnLinux

Le second ensemble de documents prend la sortie du premier document et exécute du code Python pour effectuer la modification du volume. Ensuite, l'automatisation accède à l'instance et étend la partition et le système de fichiers des volumes :

  • AWSPremiumSupport-ExtendVolumesOnWindows
  • AWSPremiumSupport-ExtendVolumesOnLinux

Suivez les étapes suivantes pour configurer les autorisations requises et exécuter le document Automation.

Solution

Accorder des autorisations

Vous devez accorder les autorisations suivantes pour utiliser les documents Automation.

Si vous ne l'avez pas déjà fait, créez un profil d'instance AWS Identity and Access Management (IAM) pour Systems Manager. Ensuite, attachez-le à l'instance cible.

Pour configurer le rôle AssumeRole, qui est nécessaire pour spécifier le paramètre AutomationAssumeRole lors du processus de configuration du document Automation, procédez comme suit :

1.    Créez une politique dans l'onglet JSON à l'aide du document de politique JSON suivant :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:DescribeVolumes",
        "ec2:DescribeVolumesModifications",
        "ec2:ModifyVolume",
        "ec2:DescribeInstances",
        "ec2:CreateImage",
        "ec2:DescribeImages",
        "ec2:DescribeTags",
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:StartAutomationExecution",
        "ssm:GetAutomationExecution",
        "ssm:DescribeAutomationStepExecutions",
        "ssm:DescribeAutomationExecutions"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ssm:SendCommand",
        "ssm:DescribeInstanceInformation",
        "ssm:ListCommands",
        "ssm:ListCommandInvocations"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}

2.    Créez le rôle assume et associez la politique créée à l'étape précédente.

3.    Modifiez cette instruction et remplacez "Resource": "*" par votre ARN pour le rôle assume.

{
  "Action": [
      "iam:PassRole"
    ],
    "Resource": "*",
    "Effect": "Allow"
  },

Exécutez le document Automation

Pour utiliser l'ensemble de documents Systems Manager Automation, vous devez exécuter uniquement le document initial AWSPremiumSupport-TroubleshootEC2DiskUsage. Procédez comme suit :

1.    Ouvrez la console Systems Manager, puis choisissez Automation dans le panneau de navigation.

2.    Choisissez « Execute automation » (Exécuter l'automatisation).

3.    Sélectionnez le bouton radio pour AWSPremiumSupport-TroubleshootEC2DiskUsage, puis choisissez Suivant.

4.    Pour Exécuter le document d'automatisation, sélectionnez Exécution simple.

5.    Sous Paramètres d'entrée :

Pour InstanceId, entrez votre ID d'instance Amazon EC2.

Pour AutomationAssumeRole, entrez l'ARN du rôle qui permet à Automation d'effectuer les actions en votre nom. Il s'agit du rôle assume que vous avez créé lors de l'octroi des autorisations.

6.    (Facultatif) Sous Paramètres d'entrée, spécifiez les entrées suivantes si vos exigences diffèrent des valeurs par défaut :

VolumeExpansionEnabled : contrôle si le document va étendre les volumes et les partitions concernés (par défaut : True)

VolumeExpansionUsageTrigger : pourcentage minimum d'espace de partition utilisé requis pour déclencher l'extension (par défaut : 85)

VolumeExpansionCapSize : taille maximale en Gio à laquelle le volume EBS augmentera (par défaut : 2048)

VolumeExpansionGibIncrease : augmentation du volume en Gio (par défaut : 20)

VolumeExpansionPercentageIncrease : augmentation du volume en pourcentage (par défaut : 20)

7.    Choisissez Exécuter.

La console affiche l'état de Automation.

Exemple

Votre volume actuel est de 30 Go et dispose de 4 Go disponibles, ce qui signifie que vous avez 26 Go d'espace utilisé. Vous spécifiez les paramètres d'entrée suivants :

  • VolumeExpansionUsageTrigger : 85
  • VolumeExpansionGibIncrease : 10
  • VolumeExpansionPercentageIncrease : 15
  • VolumeExpansionCapSize : 2048

Résultat :

L'augmentation se déclenche, car 26 Go d'espace utilisé sont supérieurs au seuil de 85 % spécifié pour VolumeExpansionUsageTrigger.

Le volume a augmenté de 10 Go. Cela est dû au fait que vous avez indiqué que le volume devait augmenter de 10 Go ou de 15 % par rapport à la taille actuelle du volume de 4,5 Go. Le document Automation utilise la plus forte augmentation nette entre VolumeExpansionGibIncrease et VolumeExpansionPercentageIncrease.

La nouvelle taille de volume est de 40 Go, ce qui se situe dans la limite spécifiée de VolumeExpansionCapSize de 2048.