CloudFormation을 사용하여 VPC + 서브넷 + EC2 구성 만들기
15081 단어 EC2CloudFormationvpcAWS
"이것은 실제로 만져 보는 것이 좋을 것 같습니다."라고 느꼈기 때문에 시도했습니다.
CloudFormation이란 무엇인가요?
개요를 잡는 계기가 되면 매우 기쁩니다.
【AWS】CloudFormation에 대해 정리하기: 학습 메모
이 구성을 만듭니다.
이번은 여러 사정(※)에 의해 오하이오리전에서 작성합니다.
여러분 적당히 좋아하는 리전으로 해 보세요.
※자사의 sandbox 환경에서 도쿄 리전에 작성하려고 하면, VPC의 상한수에 이르고 있어 만들 수 없었다
사전 준비 ①: 템플릿 준비
YAML/JSON 두 형식 모두 대단합니다.
코멘트를 넣을 수 있다는 점에서 YAML 쪽이 좋을까라고 생각하기 때문에, 이번은 YAML로 했습니다.
test-template.ymlAWSTemplateFormatVersion: '2010-09-09'
Description: Test cfn Template
# ----------------------------------------------------------------
# Parameters
# ----------------------------------------------------------------
Parameters:
InstanceType:
Type: String
Default: t2.micro
AllowedValues:
- t2.micro
- t2.small
- t2.medium
Description: Select EC2 instance type.
KeyPair:
Description: Select KeyPair Name.
Type: AWS::EC2::KeyPair::KeyName
# ----------------------------------------------------------------
# Resources
# ----------------------------------------------------------------
# -------------------- VPCの定義ここから --------------------
Resources:
cfnVpc:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: '192.168.0.0/16'
Tags:
- Key: 'Name'
Value: 'test-vpc'
# -------------------- VPCの定義ここまで --------------------
# -------------------- サブネットの定義ここから --------------------
cfnSubnet:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock: '192.168.1.0/24'
MapPublicIpOnLaunch: true
Tags:
- Key: 'Name'
Value: 'test-cfn-subnet'
VpcId: !Ref cfnVpc
# -------------------- サブネットの定義ここまで --------------------
# -------------------- ネットワーク周りの定義ここから --------------------
cfnInternetGateway:
Type: 'AWS::EC2::InternetGateway'
Properties:
Tags:
- Key: 'Name'
Value: 'test-cfn-igw'
cfnAttachGateway:
Type: 'AWS::EC2::VPCGatewayAttachment'
Properties:
VpcId: !Ref cfnVpc
InternetGatewayId: !Ref cfnInternetGateway
cfnRouteTable:
Type: 'AWS::EC2::RouteTable'
Properties:
Tags:
- Key: 'Name'
Value: 'test-cfn-rt'
VpcId: !Ref cfnVpc
cfnRoute:
Type: 'AWS::EC2::Route'
DependsOn: cfnInternetGateway
Properties:
RouteTableId: !Ref cfnRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref cfnInternetGateway
cfnSubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref cfnSubnet
RouteTableId: !Ref cfnRouteTable
# -------------------- ネットワーク周りの定義ここまで --------------------
# -------------------- EC2の定義ここから --------------------
cfnEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: "ami-07c8bc5c1ce9598c3" # オハイオリージョンの最新のAmazon Linux 2 AMI にしています
InstanceType: !Ref InstanceType
SubnetId: !Ref cfnSubnet
BlockDeviceMappings:
- DeviceName: '/dev/xvda'
Ebs:
VolumeType: 'gp2'
VolumeSize: 8
Tags:
- Key: 'Name'
Value: 'test-cfn-ec2-instance'
SecurityGroupIds:
- !Ref cfnSecurityGroup
KeyName: !Ref KeyPair
cfnSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "cfnSecurityGroup"
VpcId: !Ref cfnVpc
Tags:
- Key: 'Name'
Value: 'test-cfn-ssh-sg'
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
# -------------------- EC2の定義ここまで --------------------
※ 상기라면 네트워크의 보안이 느슨해지므로 적절히 수정하여 사용하십시오.
※ 참고:AWS 공식 샘플 템플릿 가 다수 공개되고 있는 것 같습니다
사전 준비 ② : 키 페어 작성
이번에 작성하는 EC2 인스턴스에 SSH 접속할 수 있도록 하고 싶으므로, 미리 키 페어를 만들어 둡니다.
「키 페어 어디에서 만들까?」라고 되어 버렸으므로, 여기 를 보면서 만들었습니다.
작업 절차
1. AWS 콘솔에 로그인
2. [CloudFormation]을 입력하고 Enter 키를 누릅니다.
CloudFormation에서 스택 만들기
1. 스택 만들기를 클릭합니다.
2. 스택 만들기 > 새 리소스 사용(표준)을 클릭합니다.
1단계: 템플릿 지정
1. 다음을 설정하고 [다음]을 클릭합니다.
YAML/JSON 두 형식 모두 대단합니다.
코멘트를 넣을 수 있다는 점에서 YAML 쪽이 좋을까라고 생각하기 때문에, 이번은 YAML로 했습니다.
test-template.yml
AWSTemplateFormatVersion: '2010-09-09'
Description: Test cfn Template
# ----------------------------------------------------------------
# Parameters
# ----------------------------------------------------------------
Parameters:
InstanceType:
Type: String
Default: t2.micro
AllowedValues:
- t2.micro
- t2.small
- t2.medium
Description: Select EC2 instance type.
KeyPair:
Description: Select KeyPair Name.
Type: AWS::EC2::KeyPair::KeyName
# ----------------------------------------------------------------
# Resources
# ----------------------------------------------------------------
# -------------------- VPCの定義ここから --------------------
Resources:
cfnVpc:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: '192.168.0.0/16'
Tags:
- Key: 'Name'
Value: 'test-vpc'
# -------------------- VPCの定義ここまで --------------------
# -------------------- サブネットの定義ここから --------------------
cfnSubnet:
Type: 'AWS::EC2::Subnet'
Properties:
CidrBlock: '192.168.1.0/24'
MapPublicIpOnLaunch: true
Tags:
- Key: 'Name'
Value: 'test-cfn-subnet'
VpcId: !Ref cfnVpc
# -------------------- サブネットの定義ここまで --------------------
# -------------------- ネットワーク周りの定義ここから --------------------
cfnInternetGateway:
Type: 'AWS::EC2::InternetGateway'
Properties:
Tags:
- Key: 'Name'
Value: 'test-cfn-igw'
cfnAttachGateway:
Type: 'AWS::EC2::VPCGatewayAttachment'
Properties:
VpcId: !Ref cfnVpc
InternetGatewayId: !Ref cfnInternetGateway
cfnRouteTable:
Type: 'AWS::EC2::RouteTable'
Properties:
Tags:
- Key: 'Name'
Value: 'test-cfn-rt'
VpcId: !Ref cfnVpc
cfnRoute:
Type: 'AWS::EC2::Route'
DependsOn: cfnInternetGateway
Properties:
RouteTableId: !Ref cfnRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref cfnInternetGateway
cfnSubnetRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref cfnSubnet
RouteTableId: !Ref cfnRouteTable
# -------------------- ネットワーク周りの定義ここまで --------------------
# -------------------- EC2の定義ここから --------------------
cfnEC2Instance:
Type: 'AWS::EC2::Instance'
Properties:
ImageId: "ami-07c8bc5c1ce9598c3" # オハイオリージョンの最新のAmazon Linux 2 AMI にしています
InstanceType: !Ref InstanceType
SubnetId: !Ref cfnSubnet
BlockDeviceMappings:
- DeviceName: '/dev/xvda'
Ebs:
VolumeType: 'gp2'
VolumeSize: 8
Tags:
- Key: 'Name'
Value: 'test-cfn-ec2-instance'
SecurityGroupIds:
- !Ref cfnSecurityGroup
KeyName: !Ref KeyPair
cfnSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: "cfnSecurityGroup"
VpcId: !Ref cfnVpc
Tags:
- Key: 'Name'
Value: 'test-cfn-ssh-sg'
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
# -------------------- EC2の定義ここまで --------------------
※ 상기라면 네트워크의 보안이 느슨해지므로 적절히 수정하여 사용하십시오.
※ 참고:AWS 공식 샘플 템플릿 가 다수 공개되고 있는 것 같습니다
사전 준비 ② : 키 페어 작성
이번에 작성하는 EC2 인스턴스에 SSH 접속할 수 있도록 하고 싶으므로, 미리 키 페어를 만들어 둡니다.
「키 페어 어디에서 만들까?」라고 되어 버렸으므로, 여기 를 보면서 만들었습니다.
작업 절차
1. AWS 콘솔에 로그인
2. [CloudFormation]을 입력하고 Enter 키를 누릅니다.
CloudFormation에서 스택 만들기
1. 스택 만들기를 클릭합니다.
2. 스택 만들기 > 새 리소스 사용(표준)을 클릭합니다.
1단계: 템플릿 지정
1. 다음을 설정하고 [다음]을 클릭합니다.
1. AWS 콘솔에 로그인
2. [CloudFormation]을 입력하고 Enter 키를 누릅니다.
CloudFormation에서 스택 만들기
1. 스택 만들기를 클릭합니다.
2. 스택 만들기 > 새 리소스 사용(표준)을 클릭합니다.
1단계: 템플릿 지정
1. 다음을 설정하고 [다음]을 클릭합니다.
2단계: 스택 세부정보 지정
이 템플릿에서 [Parameters]를 정의했기 때문에 매개 변수 필드가 표시됩니다.
EC2 인스턴스 유형 · SSH 연결할 때 사용할 키 쌍을 선택합니다.
1. 원하는 스택 이름을 입력하고 다음을 클릭합니다.
3단계: 스택 옵션 설정
1. 임의의 항목을 입력하고 [다음]을 클릭합니다.
여기에 태그를 설정하면 이번에 작성한 모든 리소스에 동일한 태그가 붙어 있으므로 매우 유용합니다.
(템플릿 내에서 하나 하나 쓰는 것보다 여기에서 설정하는 것이 편하다)
내 사내 샌드박스 환경에서 실행했기 때문에 내가 알 수 있도록 아래 태그를 지정했습니다.
4단계: 리뷰
1. 설정값에 오류가 없는지 확인하고 스택 생성을 클릭합니다.
스택 작성 중에는 이런 느낌
이벤트 열에서 작성 진행 상황을 확인할 수 있습니다.
상태가 [CREATE_COMPLETE]가되면 완성됩니다!
EC2 인스턴스에 대한 SSH 로그인도 제대로
다음 명령으로 SSH 로그인할 수 있습니다.
ssh -i [秘密鍵のパス] ec2-user@[EC2のIPv4パブリックIP]
이번에 만든 녀석을 다 지우고 싶은데?
스택마다 삭제하면 모두 사라집니다.
꾸준히 삭제해 나가지 않아도 좋기 때문에 베리.
참고
Reference
이 문제에 관하여(CloudFormation을 사용하여 VPC + 서브넷 + EC2 구성 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kanadeee/items/de8c1780e3c37811eb57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)