AWS CloudFormation 템플릿을 사용하여 생성한 Amazon EC2 인스턴스의 루트 볼륨 속성을 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 22일

AWS CloudFormation 템플릿을 사용하여 생성한 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 루트 볼륨 속성을 설정하려고 합니다. 예를 들어, 루트 볼륨의 크기를 변경하거나 루트 볼륨의 암호화를 활성화하고 싶습니다.

간략한 설명

EC2 인스턴스의 루트 볼륨 속성을 설정하려면 Amazon Machine Image(AMI) 루트 볼륨의 디바이스 이름을 알아야 합니다. 그런 다음, AWS::EC2::Instance 리소스의 BlockDeviceMapping 속성을 사용하여 루트 볼륨의 속성을 설정할 수 있습니다.

참고: 기본적으로 AMI의 블록 디바이스 매핑에 지정된 블록 디바이스는 EC2 인스턴스에서 사용됩니다. AMI 블록 디바이스 매핑을 재정의하려면 인스턴스 블록 디바이스 매핑을 사용하십시오. 루트 볼륨의 경우 볼륨 크기, 볼륨 유형 및 DeleteOnTermination 설정만 재정의할 수 있습니다. 인스턴스가 실행된 후에는 연결된 Amazon Elastic Block Store(Amazon EBS) 볼륨의 DeleteOnTermination 설정만 수정할 수 있습니다.

해결 방법

AMI 루트 볼륨의 디바이스 이름 확인

디바이스 이름을 찾으려면 Amazon EC2 콘솔 또는 AWS CLI(명령줄 인터페이스)에서 다음 단계를 완료하십시오.

Amazon EC2 콘솔 사용:

1.    Amazon EC2 콘솔을 엽니다.

2.    탐색 모음에서 인스턴스를 시작할 AWS 리전을 선택합니다.

3.    탐색 창에서 [AMI]를 선택합니다.

4.    [필터] 옵션을 사용하여 AMI를 찾은 다음, AMI를 선택합니다.

5.    [세부 정보] 탭에서 [루트 디바이스 이름]을 찾습니다. 여기에 루트 디바이스 이름이 나열되어 있습니다.

AWS CLI 명령 사용:

AWS CLI에서 다음 describe-images 명령을 실행합니다.

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이 루트 볼륨 크기가 30GB로 설정된 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'

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?