AWS CloudFormation テンプレートを使用して作成した Amazon EC2 インスタンスのルートボリュームのプロパティを設定する方法を教えてください。

最終更新日: 2020 年 5 月 22 日

AWS CloudFormation テンプレートを使用して作成した Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのルートボリュームのプロパティを設定したいと考えています。例えば、ルートボリュームのサイズを変更したり、ルートボリュームの暗号化を有効にしたりしたいと考えています。

簡単な説明

EC2 インスタンスのルートボリュームのプロパティを設定するには、Amazon マシンイメージ (AMI) のルートボリュームのデバイス名を指定する必要があります。次に、AWS::EC2::Instance リソースの BlockDeviceMapping プロパティを使用して、ルートボリュームのプロパティを設定できます。

注: デフォルトでは、AMI のブロックデバイスマッピングで指定されたブロックデバイスが EC2 インスタンスによって使用されます。AMI ブロックデバイスマッピングを上書きするには、インスタンスブロックデバイスマッピングを使用します。ルートボリュームの場合、ボリュームサイズ、ボリュームタイプ、DeleteOnTermination 設定のみを上書きできます。インスタンスの実行後は、アタッチされた Amazon Elastic Block Store (Amazon EBS) ボリュームの DeleteOnTermination 設定のみを変更できます。

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

解決方法

AMI のルートボリュームのデバイス名を特定する

デバイス名を確認するには、Amazon EC2 コンソールまたは AWS CLI で以下のステップを実行します。

Amazon EC2 コンソールを使って以下を実行します。

1.    Amazon EC2 コンソールを開きます。

2.    ナビゲーションバーから、インスタンスを起動する AWS リージョンを選択します。

3.    ナビゲーションペインで [AMI] を選択します。

4.    [フィルター] オプションを使用して AMI を見つけ、お客様の AMI を選択します。

5.    [詳細] タブで、[ルートデバイス名] を見つけます。これは、ルートデバイス名が表示される場所です。

AWS CLI のコマンドを使用して、以下のとおり操作します。

AWS CLI で、次のコマンドを実行します。

aws ec2 describe-images \
    --region us-east-1 \
    --image-ids ami-1234567890AWSEXAMPLE

注: us-east-1 をお客様のリージョンに置き換えます。ami-1234567890AWSEXAMPLE をお客様の AMI に置き換えます。

前述のコマンドの出力は、ルートボリュームのデバイス名を示す RootDeviceName フィールドを返します。

EC2 インスタンスのルートボリュームのプロパティを設定する

AWS::EC2::Instance リソースの BlockDeviceMapping プロパティを使用して、EC2 インスタンスのルートボリュームのプロパティを設定します。

次の JSON および YAML の例では、AWS CloudFormation によって、ルートボリュームのサイズが 30 GB に設定された EC2 インスタンスが作成されます。

JSON および YAML テンプレートでは、ルートボリュームの DeleteOnTermination プロパティが trueに設定されます。指定した AMI が Amazon Linux 2 AMI であるため、DeviceName/dev/xvda に設定されます。最後に、Encrypted プロパティが true に設定され、ルートボリュームのデフォルトの暗号化が有効になります。

重要: テンプレートで、/dev/xvda を、先ほど特定した Root Device Name プロパティの値に置き換えます。その後、要件に基づいてテンプレートの Ebs プロパティを変更します。

JSON テンプレート:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "AWS CloudFormation Sample Template that shows how to increase the size of the root volume. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resource used if you create a stack from this template.",
  "Parameters": {
    "KeyName": {
      "Type": "AWS::EC2::KeyPair::KeyName",
      "Description": "Name of an existing EC2 KeyPair to enable SSH access to the EC2 instance."
    },
    "InstanceType": {
      "Description": "EC2 instance type",
      "Type": "String",
      "Default": "t2.micro",
      "ConstraintDescription": "Please choose a valid instance type."
    },
    "AMIID": {
      "Description": "The Latest Amazon Linux 2 AMI taken from the public AWS Systems Manager Parameter Store",
      "Type": "AWS::SSM::Parameter::Value<String>",
      "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2"
    }
  },
  "Resources": {
    "LinuxInstance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": {
          "Ref": "AMIID"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "KeyName": {
          "Ref": "KeyName"
        },
        "BlockDeviceMappings": [
          {
            "DeviceName": "/dev/xvda",
            "Ebs": {
              "VolumeType": "gp2",
              "VolumeSize": "30",
              "DeleteOnTermination":"false",
              "Encrypted": "true"
            }
          }
        ]
      }
    }
  }
}

YAML テンプレート:

AWSTemplateFormatVersion: 2010-09-09
Description: >-
  AWS CloudFormation Sample Template that shows how to increase the size of the root volume. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resource used if you create a stack from this template.
Parameters:
  KeyName:
    Type: 'AWS::EC2::KeyPair::KeyName'
    Description: Name of an existing EC2 KeyPair to enable SSH access to the EC2 instance.
  InstanceType:
    Description: EC2 instance type
    Type: String
    Default: t2.micro
    ConstraintDescription: Please choose a valid instance type.
  AMIID:
    Description: >-
      The Latest Amazon Linux 2 AMI taken from the public Systems Manager
      Parameter Store
    Type: 'AWS::SSM::Parameter::Value<String>'
    Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
  LinuxInstance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: !Ref AMIID
      InstanceType: !Ref InstanceType
      KeyName: !Ref KeyName
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            VolumeType: gp2
            VolumeSize: '30'
            DeleteOnTermination: 'false'
            Encrypted: 'true'

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?