AWS CloudFormation을(를) 사용하여 Amazon EC2 인스턴스 구성
다음 코드 조각은 AWS CloudFormation을(를) 사용하여 Amazon EC2 인스턴스를 구성하는 방법을 보여 줍니다.
코드 조각 카테고리
일반적인 Amazon EC2 구성
다음 코드 조각은 AWS CloudFormation을(를) 사용하는 Amazon EC2 인스턴스의 일반적인 구성을 보여 줍니다.
예제 코드 조각
지정된 가용 영역에서 Amazon EC2 인스턴스 생성
다음 코드 조각은 AWS::EC2::Instance 리소스를 사용하여 지정된 가용 영역에서 Amazon EC2 인스턴스를 생성합니다. 가용 영역의 코드는 리전 코드와 문자 식별자를 조합한 것입니다. 단일 가용 영역에서 인스턴스를 시작할 수 있습니다.
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "AvailabilityZone": "
aa-example-1a
", "ImageId": "ami-1234567890abcdef0
" } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: AvailabilityZone:
aa-example-1a
ImageId:ami-1234567890abcdef0
EBS 볼륨 및 사용자 데이터를 사용하여 태그가 지정된 Amazon EC2 인스턴스 구성
다음 코드 조각은 태그, EBS 볼륨 및 사용자 데이터를 사용하여 Amazon EC2 인스턴스를 생성합니다. AWS::EC2::Instance 리소스를 사용합니다. 동일한 템플릿에서 AWS::EC2::SecurityGroup 리소스, AWS::SNS::Topic 리소스 및 AWS::EC2::Volume 리소스를 정의해야 합니다. KeyName
은(는) 템플릿의 Parameters
섹션에서 정의해야 합니다.
태그를 사용하면 용도, 소유자 또는 환경 등 원하는 기준에 따라 AWS 리소스를 분류할 수 있습니다. 사용자 데이터를 사용하면 시작 중에 인스턴스에 사용자 지정 스크립트 또는 데이터를 프로비저닝할 수 있습니다. 이 데이터는 초기화 중에 인스턴스에 대한 작업 자동화, 소프트웨어 구성, 패키지 설치 및 기타 작업을 용이하게 합니다.
리소스 태그 지정에 대한 자세한 내용은 Amazon EC2 리소스 태깅을 참조하세요.
사용자 데이터에 대한 내용은 인스턴스 메타데이터를 사용하여 EC2 인스턴스를 관리합니다.를 참조하세요.
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "KeyName": { "Ref": "KeyName" }, "SecurityGroups": [ { "Ref": "Ec2SecurityGroup" } ], "UserData": { "Fn::Base64": { "Fn::Join": [ ":", [ "PORT=80", "TOPIC=", { "Ref": "MySNSTopic" } ] ] } }, "InstanceType": "
aa.size
", "AvailabilityZone": "aa-example-1a
", "ImageId": "ami-1234567890abcdef0
", "Volumes": [ { "VolumeId": { "Ref": "MyVolumeResource" }, "Device": "/dev/sdk" } ], "Tags": [ { "Key": "Name", "Value": "MyTag" } ] } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: KeyName: !Ref KeyName SecurityGroups: - !Ref Ec2SecurityGroup UserData: Fn::Base64: Fn::Join: - ":" - - "PORT=80" - "TOPIC=" - !Ref MySNSTopic InstanceType:
aa.size
AvailabilityZone:aa-example-1a
ImageId:ami-1234567890abcdef0
Volumes: - VolumeId: !Ref MyVolumeResource Device: "/dev/sdk" Tags: - Key: Name Value: MyTag
Amazon EC2 인스턴스 시작을 위한 사용자 데이터에 DynamoDB 테이블 이름 정의
다음 코드 조각은 Amazon EC2 인스턴스를 생성하고 시작 시 인스턴스에 전달할 DynamoDB 테이블 이름을 사용자 데이터에 정의합니다. AWS::EC2::Instance 리소스를 사용합니다. 사용자 데이터에 파라미터 또는 동적 값을 정의하여 시작 시 EC2 인스턴스를 전달할 수 있습니다.
사용자 데이터에 대한 자세한 내용은 인스턴스 메타데이터를 사용하여 EC2 인스턴스를 관리합니다.를 참조하세요.
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "TableName=", { "Ref": "DynamoDBTableName" } ] ] } }, "AvailabilityZone": "
aa-example-1a
", "ImageId": "ami-1234567890abcdef0
" } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: Fn::Join: - '' - - 'TableName=' - Ref: DynamoDBTableName AvailabilityZone:
aa-example-1a
ImageId:ami-1234567890abcdef0
DeletionPolicy
을(를) 사용하여 Amazon EBS 볼륨 생성
다음 코드 조각은 Amazon EC2 AWS::EC2::Volume 리소스를 사용하여 Amazon EBS 볼륨을 생성합니다. Size
또는 SnapshotID
속성을 사용하여 볼륨을 정의할 수 있지만 둘 다 사용할 수는 없습니다. 스택을 삭제할 때 볼륨의 스냅샷을 생성하도록 DeletionPolicy
속성이 설정됩니다.
DeletionPolicy
속성에 대한 자세한 내용은 DeletionPolicy
속성을 참조하세요.
Amazon EBS 볼륨 생성에 대한 자세한 내용은 Amazon EBS 볼륨 생성을 참조하세요.
JSON
이 코드 조각은 지정된 크기로 Amazon EBS 볼륨을 생성합니다. 크기는 10으로 설정되어 있지만 필요에 따라 조정할 수 있습니다. AWS::EC2::Volume 리소스를 사용하면 크기 또는 스냅샷 ID를 지정할 수 있지만 둘 다 지정할 수는 없습니다.
"MyEBSVolume": { "Type": "AWS::EC2::Volume", "Properties": { "Size": "
10
", "AvailabilityZone": { "Ref": "AvailabilityZone" } }, "DeletionPolicy": "Snapshot" }
이 코드 조각은 제공된 스냅샷 ID를 사용하여 Amazon EBS 볼륨을 생성합니다. AWS::EC2::Volume 리소스를 사용하면 크기 또는 스냅샷 ID를 지정할 수 있지만 둘 다 지정할 수는 없습니다.
"MyEBSVolume": { "Type": "AWS::EC2::Volume", "Properties": { "SnapshotId" : "
snap-1234567890abcdef0
", "AvailabilityZone": { "Ref": "AvailabilityZone" } }, "DeletionPolicy": "Snapshot" }
YAML
이 코드 조각은 지정된 크기로 Amazon EBS 볼륨을 생성합니다. 크기는 10으로 설정되어 있지만 필요에 따라 조정할 수 있습니다. AWS::EC2::Volume 리소스를 사용하면 크기 또는 스냅샷 ID를 지정할 수 있지만 둘 다 지정할 수는 없습니다.
MyEBSVolume: Type: AWS::EC2::Volume Properties: Size:
10
AvailabilityZone: Ref: AvailabilityZone DeletionPolicy: Snapshot
이 코드 조각은 제공된 스냅샷 ID를 사용하여 Amazon EBS 볼륨을 생성합니다. AWS::EC2::Volume 리소스를 사용하면 크기 또는 스냅샷 ID를 지정할 수 있지만 둘 다 지정할 수는 없습니다.
MyEBSVolume: Type: AWS::EC2::Volume Properties: SnapshotId:
snap-1234567890abcdef0
AvailabilityZone: Ref: AvailabilityZone DeletionPolicy: Snapshot
인스턴스의 블록 디바이스 매핑 지정
블록 디바이스 매핑은 인스턴스에 연결할 블록 디바이스(인스턴스 스토어 볼륨 및 EBS 볼륨 포함)를 정의합니다. AMI를 생성할 때 블록 디바이스 매핑을 지정하면 AMI에서 실행되는 모든 인스턴스가 해당 매핑을 사용할 수 있습니다. 또는 인스턴스를 실행할 때 블록 디바이스 매핑을 지정하여 해당 매핑이 인스턴스가 실행된 AMI에서 지정된 매핑을 재정의하도록 할 수 있습니다.
다음 템플릿 코드 조각을 사용하면 AWS::EC2::Instance 리소스의 BlockDeviceMappings
속성을 사용하여 EBS 또는 인스턴스 스토어 볼륨의 블록 디바이스 매핑을 지정할 수 있습니다.
블록 디바이스 매핑에 대한 자세한 내용은 Amazon EC2 사용 설명서의 블록 디바이스 매핑을 참조하세요.
두 EBS 볼륨의 블록 디바이스 매핑 지정
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Fn::FindInMap": [ "
AWSRegionArch2AMI
", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch
", { "Ref": "InstanceType" }, "Arch" ] } ] }, "KeyName": { "Ref": "KeyName" }, "InstanceType": { "Ref": "InstanceType" }, "SecurityGroups": [{ "Ref": "Ec2SecurityGroup" }], "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1
", "Ebs": { "VolumeSize": "50
" } }, { "DeviceName": "/dev/sdm
", "Ebs": { "VolumeSize": "100
" } } ] } } }
YAML
EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [
AWSRegionArch2AMI
, !Ref 'AWS::Region', !FindInMap [AWSInstanceType2Arch
, !Ref InstanceType, Arch]] KeyName: !Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName:/dev/sda1
Ebs: VolumeSize:50
- DeviceName:/dev/sdm
Ebs: VolumeSize:100
인스턴스 스토어 볼륨의 인스턴스 블록 디바이스 매핑 지정
JSON
"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "
AWSRegionArch2AMI
", { "Ref" : "AWS::Region" }, "HVM64
" ]}, "KeyName" : { "Ref" : "KeyName" }, "InstanceType": { "Ref": "InstanceType" }, "SecurityGroups" : [{ "Ref" : "Ec2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc
", "VirtualName" : "ephemeral0
" } ] } }
YAML
EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap -
AWSRegionArch2AMI
- !Ref AWS::Region - HVM64 KeyName: !Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName:/dev/sdc
VirtualName:ephemeral0