Como posso avaliar e corrigir automaticamente o volume crescente em uma instância do Amazon EC2 quando o espaço livre em disco é pouco?

Data da última atualização: 17/5/2022

Quero ver se os volumes anexados às minhas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) precisam ser estendidos. Além disso, estender partições e sistemas de arquivos no nível do sistema operacional (SO) é uma operação demorada. Como posso automatizar todo o processo?

Breve descrição

Você pode usar um conjunto de documentos do AWS Systems Manager Automation para avaliar e estender os volumes do Amazon Elastic Block Store (Amazon EBS). Os documentos de automação funcionam em conjunto, permitindo que você investigue e, se desejar, corrija o pouco uso do disco em uma instância do Amazon EC2.

O documento de automaçãoAWSPremiumSupport-TroubleshootEC2DiskUsage organiza a execução de outros documentos do Systems Manager, com base no tipo de sistema operacional.

O primeiro conjunto de documentos realiza diagnósticos básicos e avalia se é possível migrar expandindo o tamanho do volume:

  • AWSPremiumSupport-DiagnoseDiskUsageOnWindows
  • AWSPremiumSupport-DiagnoseDiskUsageOnLinux

O segundo conjunto de documentos pega a saída do primeiro documento e executa o código Python para realizar a modificação do volume. Em seguida, a automação acessa a instância e estende a partição e o sistema de arquivos dos volumes:

  • AWSPremiumSupport-ExtendVolumesOnWindows
  • AWSPremiumSupport-ExtendVolumesOnLinux

Use as etapas a seguir para configurar as permissões necessárias e executar o documento de automação.

Resolução

Conceder permissões

Você deve conceder as seguintes permissões para usar os documentos de automação.

Se você ainda não fez isso, crie um perfil de instância do AWS Identity and Access Management (IAM) para o Systems Manager. Em seguida, anexe-o à instância de destino.

Para configurar o AssumeRole, que é necessário para especificar o parâmetro AutomationAssumeRole durante o processo de configuração do documento de automação, siga estas etapas:

1.    Crie uma política na guia JSON usando o seguinte documento de política 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.    Crie a função assumir e anexe a política criada na etapa anterior.

3.    Modifique esta instrução e substitua “Resource”: “* ”, pelo seu ARN para a função assumir.

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

Executar o documento de automação

Para usar o conjunto de documentos do Systems Manager Automation, você precisa executar somente o documento inicial AWSPremiumSupport-TroubleshootEC2DiskUsage. Siga estas etapas:

1.    Abra o console do Systems Manager e escolha Automation (Automação) no painel de navegação.

2.    Escolha Execute automation (Executar automação).

3.    Selecione o botão de opção para AWSPremiumSupport-TroubleshootEC2DiskUsage, e, em seguida, escolha Next (Avançar).

4.    Para Execute automation document (Executar documento de automação), escolha Simple execution (Execução simples).

5.    Em Parâmetros de entrada:

Para InstanceId, insira seu ID de instância do Amazon EC2.

Para AutomationAssumeRole, insira o ARN da função que permite que a Automação execute as ações em seu nome. Essa é a função assumida que você criou ao conceder permissões.

6.    (Opcional) Em Input parameters (Parâmetros de entrada), especifique as seguintes entradas se seus requisitos forem diferentes dos valores padrão:

VolumeExpansionEnabled: controla se o documento estenderá os volumes e partições afetados (padrão: True)

VolumeExpansionUsageTrigger: porcentagem mínima de espaço de partição usado necessário para acionar a expansão (padrão: 85)

VolumeExpansionCapSize: tamanho máximo em GiB para o qual o volume do EBS aumentará (padrão: 2048)

VolumeExpansionGibIncrease: aumento de volume em GiB (padrão: 20)

VolumeExpansionPercentageIncrease: aumento de volume em porcentagem (padrão: 20)

7.    Escolha Execute (Executar).

O console exibe o status da automação.

Exemplo

Seu volume atual é de 30 GB e 4 GB livres, o que significa que você tem 26 GB de espaço usado. Você especifica os seguintes parâmetros de entrada:

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

Resultado:

O aumento é acionado, porque 26 GB de espaço usado estão acima do limite de 85% especificado para VolumeExpansionUsageTrigger.

O volume aumentou em 10 GB. Isso ocorre porque você especificou que o volume deve aumentar em 10 GB ou em 15% do tamanho do volume atual de 4,5 GB. O documento Automação usa o maior aumento líquido entre VolumeExpansionGibIncrease e VolumeExpansionPercentageIncrease.

O novo tamanho do volume é de 40 GB, que está dentro do 2048VolumeExpansionCapSize especificado.