今天終於要來講部署 EC2 的方法拉!不過在講 EC2 之前要先介紹 VPC 畢竟沒有 VPC 就沒有地方可以放機器拉 ~
CDK 建立 VPC
如果要在 CDK 新增一個簡單的 VPC 非常簡單只要簡單的一行即可,創建完的預設
- CIDR:10.0.0.0/16
- AZ:預設為 3
- NAT gateway:預設為每個 AZ 各一個
const vpc = new ec2.Vpc(this, 'VPC');
Subnet 分為三種
- Public (開放 subnet): Public subnet 直接連接 Internet 希望直接可以取得 public IP 請將機器放在這個 subnet
- Private (私人 subnet): 無法直接使用 Internet 預設會在每個 subnet 創建一個 NAT gateway
NAT gateway 是需要付費的這點需要請大家注意一下
- Isolated (隔離 subnet): subnet 不會連接 Internet 也不會連接 NAT gateway 一個隔離的 subnet,它只能連到 VPC 裡面的機器或是被 VPC 裡面的其他機器連
NAT gateway
如果沒有 NAT gateway 需求可以把 natGateways
設定為 0,不過這樣就不會創建 Private subnet
const vpc = new ec2.Vpc(this, "VPC", {
natGateways: 0,
});
可以檢查一下 NAT Gateway 並不會看到有服務
如果想要有 Private subnet 又不想要 NAT gateway 這麼多可以把 natGateways
設定為 1 他們就會自動共用 NAT gateway
const vpc = new ec2.Vpc(this, "VPC", {
natGateways: 1,
});
可以檢查一下 NAT Gateway 會看到有服務
CDK 建立 EC2
創建簡單的 EC2 只要以下程式就可以創建,不過目前這台機器沒有開放 SG,而且放在 Isolated Subnet 或是 Private Subnet 因此一般來說是摸不到它的
const vpc = new ec2.Vpc(this, 'VPC');
const ec2Instance = new ec2.Instance(this, "Instance", {
vpc,
instanceType: ec2.InstanceType.of(
ec2.InstanceClass.T3,
ec2.InstanceSize.NANO
),
machineImage: new ec2.AmazonLinuxImage(),
});
但是如果需求是 IAM image 開起來就可以用的需求就只要修改一下 machineImage
就可以了
設定一台外網可以連入的 EC2
要達成外網可以連入的需求我們需要完成幾件事情
- SG 設定 22 port 可以連入
- EC2 要在 Public Subnet
- EC2 需要含有 Public Key
通常我們應該會把 SSH port 設定成只有某個 Static 可以連入,不過因為範例的關係就先全開。範例的 keyName 為 KeyPair,大家平常應該會有自己習慣的 key pair name 記得修改他!
const vpc = new ec2.Vpc(this, "VPC", {
natGateways: 0,
});
const mySecurityGroup = new ec2.SecurityGroup(this, "SecurityGroup", {
vpc,
description: "Allow ssh access to ec2 instances from anywhere",
allowAllOutbound: true,
});
mySecurityGroup.addIngressRule(
ec2.Peer.anyIpv4(),
ec2.Port.tcp(22),
"allow public ssh access"
);
const ec2Instance = new ec2.Instance(this, "Instance", {
vpc,
instanceType: ec2.InstanceType.of(
ec2.InstanceClass.T3,
ec2.InstanceSize.NANO
),
machineImage: new ec2.AmazonLinuxImage(),
securityGroup: mySecurityGroup,
vpcSubnets: {
subnetType: ec2.SubnetType.PUBLIC,
},
keyName: "KeyPair",
});
以上為今天介紹的基本 EC2 機器介紹,如此就可以自行創建簡單的 EC2 了
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!