空きディスク容量が少なくなったときに、Amazon EC2 インスタンスでボリュームの増加を自動的に評価して修正する方法を教えてください。

最終更新日: 2022 年 5 月 17 日

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに添付されたボリュームを拡張する必要があるかどうかを確認したい。また、オペレーティングシステム (OS) レベルでパーティションとファイルシステムを拡張することは、時間のかかるオペレーションです。プロセス全体を自動化する方法を教えてください。

簡単な説明

一連の AWS Systems Manager Automation のドキュメントを使用して、Amazon Elastic Block Store (Amazon EBS) ボリュームを評価および拡張できます。自動化ドキュメントは連携して機能するため、Amazon EC2 インスタンスのディスク使用量の低下を調査し、オプションで修正することができます。

AWSPremiumSupport-TroubleshootEC2DiskUsage オートメーションドキュメントは、OS タイプに基づいて、他の Systems Manager ドキュメントの実行をオーケストレートします。

最初のドキュメントセットは、基本的な診断を実行し、ボリュームサイズを拡大して移行できるかどうかを評価します。

  • AWSPremiumSupport-DiagnoseDiskUsageOnWindows
  • AWSPremiumSupport-DiagnoseDiskUsageOnLinux

2 番目のドキュメントセットは、最初のドキュメントの出力を受け取り、Python コードを実行してボリュームの変更を実行します。次に、オートメーションによってインスタンスにアクセスし、ボリュームのパーティションとファイルシステムを拡張します。

  • AWSPremiumSupport-ExtendVolumesOnWindows
  • AWSPremiumSupport-ExtendVolumesOnLinux

以下の手順を使用して、必要な許可を設定し、自動化ドキュメントを実行します。

解決方法

許可を付与する

オートメーションドキュメントを使用するには、次の許可を付与する必要があります。

まだ行っていない場合は、Systems Manager 用の AWS Identity and Access Management (IAM) インスタンスプロファイルを作成します。次に、それをターゲットインスタンスに添付します。

オートメーションドキュメントの設定プロセス中に AutomationAssumeRole パラメーターを指定するために必要な AssumeRole を設定するには、次の手順に従います。

1.    次の JSON ポリシードキュメントを使用して [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.    Assume Role を作成し、前の手順で作成したポリシーを添付します。

3.    このステートメントを変更し、「Resource」:「 *」を、Assume Role の ARN に置き換えます。

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

オートメーションドキュメントを実行する

一連の Systems Manager オートメーションドキュメントを使用するには、最初の AWSPremiumSupport-TroubleshootEC2DiskUsage ドキュメントのみを実行する必要があります。以下の手順を実行してください。

1.    Systems Manager コンソールを開き、ナビゲーションペインから [オートメーション] を選択します。

2.    [Execute automation] を選択します。

3.    AWSPremiumSupport-TroubleshootEC2DiskUsage のラジオボタンを選択し、[次へ] を選択します。

4.    [オートメーションドキュメントの実行] で、[シンプルな実行] を選択します。

5.    [入力パラメータ] の下。

InstanceId には、Amazon EC2 インスタンス ID を入力します。

AutomationAssumeRole には、オートメーションがユーザーに代わってアクションを実行することを許可するロールの ARN を入力します。これは、許可を付与するときに作成した AssumeRole です。

6.    (オプション) 要件がデフォルト値と異なる場合は、[入力パラメーター] で次の入力を指定します。

VolumeExpansionEnabled: ドキュメントが影響を受けるボリュームとパーティションを拡張するかどうかを制御する (デフォルト: True)

VolumeExpansionUsageTrigger: 拡張をトリガーするために必要な使用済みパーティションスペースの最小パーセンテージ (デフォルト: 85)

VolumeExpansionCapSize: EBS ボリュームが増加する最大サイズ (GiB) (デフォルト: 2048)

VolumeExpansionGibIncrease: ボリュームの増加 (GiB) (デフォルト: 20)

VolumeExpansionPercentageIncrease: ボリューム増加率 (%) (デフォルト: 20)

7.    [Execute] (実行) を選択します。

コンソールに [オートメーション] ステータスが表示されます。

現在のボリュームは 30 GB で、4 GB の空き容量があります。つまり、26 GB の容量が使用されています。次の入力パラメータを指定します。

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

成果:

26 GB の使用済み領域が VolumeExpansionUsageTrigger に指定された 85% のしきい値を超えているため、この増加がトリガーされます。

ボリュームが 10 GB 増加しました。これは、ボリュームを 10 GB 増やすか、現在のボリュームサイズである 4.5 GB の 15% 増やすように指定したためです。オートメーションドキュメントは、VolumeExpansionGibIncreaseVolumeExpansionPercentageIncrease の間の最大の純増加を使用します。

新しいボリュームサイズは 40 GB で、指定された 2048 VolumeExpansionCapSize の範囲内です。