In che modo è possibile valutare e correggere automaticamente l'aumento del volume su un'istanza Amazon EC2 quando lo spazio libero su disco è insufficiente?

Ultimo aggiornamento: 17-05-2022

Desidero vedere se i volumi allegati alle mie istanze Amazon Elastic Compute Cloud (Amazon EC2) necessitano di essere estesi. Inoltre, l'estensione di partizioni e file system a livello di sistema operativo (SO) è un'operazione che richiede molto tempo. Come posso automatizzare l'intero processo?

Breve descrizione

È possibile utilizzare un set di documenti di AWS Systems Manager Automation per valutare ed estendere i volumi di Amazon Elastic Block Store (Amazon EBS). I documenti di Automation funzionano all'unisono, permettendo di analizzare e, facoltativamente, rimediare allo scarso utilizzo del disco per un'istanza Amazon EC2.

Il documento di Automation AWSPremiumSupport-TroubleshootEC2DiskUsage orchestra l'esecuzione degli altri documenti di Systems Manager in base al tipo di SO.

Il primo set di documenti esegue la diagnostica di base e valuta se è possibile eseguire la migrazione espandendo le dimensioni del volume:

  • AWSPremiumSupport-DiagnoseDiskUsageOnWindows
  • AWSPremiumSupport-DiagnoseDiskUsageOnLinux

Il secondo set di documenti recupera l'output del primo documento ed esegue il codice Python per effettuare la modifica del volume. Quindi, l'automazione accede all'istanza ed estende la partizione e il file system dei volumi:

  • AWSPremiumSupport-ExtendVolumesOnWindows
  • AWSPremiumSupport-ExtendVolumesOnLinux

Completa i seguenti passaggi per impostare le autorizzazioni richieste ed eseguire il documento di Automation.

Risoluzione

Concedi le autorizzazioni

È necessario concedere le seguenti autorizzazioni per utilizzare i documenti di Automation.

Se non l'hai ancora fatto, crea un profilo dell'istanza AWS Identity and Access Management (IAM) per Systems Manager. Quindi, allegalo all'istanza di destinazione.

Per impostare AssumeRole, necessario per specificare il parametro AutomationAssumeRole durante il processo di configurazione del documento di Automation, completa i seguenti passaggi:

1.    Crea una policy nella scheda JSON utilizzando il seguente documento della policy JSON:

{
  "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.    Crea AssumeRole e allega la policy creata nel passaggio precedente.

3.    Modifica questa istruzione e sostituisci "Resource": "*" con il tuo ARN per AssumeRole.

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

Esegui il documento di Automation

Per utilizzare il set di documenti di Systems Manager Automation, è necessario eseguire solo il documento iniziale AWSPremiumSupport-TroubleshootEC2DiskUsage. Completa i seguenti passaggi:

1.    Apri la console di Systems Manager, quindi scegli Automation dal pannello di navigazione.

2.    Scegli Esegui automazione.

3.    Seleziona il pulsante di opzione per AWSPremiumSupport-TroubleshootEC2DiskUsage, quindi scegli Avanti.

4.    Per Esegui documento di automazione, seleziona Esecuzione semplice.

5.    In Parametri di input:

Per InstanceID, inserisci l'ID dell'istanza Amazon EC2.

Per AutomationAssumeRole, inserisci l'ARN del ruolo che permette ad Automation di eseguire le operazioni per tuo conto. Questo è l'AssumeRole creato durante la concessione delle autorizzazioni.

6.    (Facoltativo) In Parametri di input, specifica i seguenti input se i requisiti in tuo possesso differiscono dai valori di default:

VolumeExpansionEnabled: controlla se il documento estenderà i volumi e le partizioni interessati (di default: True)

VolumeExpansionUsageTrigger: percentuale minima di spazio di partizione utilizzato richiesto per attivare l'espansione (di default: 85)

VolumeExpansionCapSize: dimensione massima in GiB a cui il volume EBS aumenterà (di default: 2048)

VolumeExpansionGibIncrease: aumento del volume in GiB (di default: 20)

VolumeExpansionPercentageIncrease: aumento del volume in percentuale (di default: 20)

7.    Scegli Esegui.

La console mostra lo stato di Automation.

Esempio

Il volume attuale è di 30 GB e dispone di 4 GB gratuiti, il che significa che hai 26 GB di spazio utilizzato. È possibile specificare i seguenti parametri di input:

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

Risultato:

L'aumento viene attivato, perché 26 GB di spazio utilizzato superano la soglia dell'85% specificata per VolumeExpansionUsageTrigger.

Il volume è aumentato di 10 GB. Questo perché è stato specificato che il volume debba aumentare di 10 GB o del 15% della dimensione attuale del volume, pari a 4,5 GB. Il documento di Automation utilizza il maggiore aumento netto tra VolumeExpansionGibIncrease e VolumeExpansionPercentageIncrease.

La nuova dimensione del volume è di 40 GB, che rientra nel limite di 2048 specificato per VolumeExpansionCapSize.