察象èªè : AWSãããããè§Šã人ã AWSå匷ã·ãªãŒãºã®6æ¬ç®ã§ãä»åã¯VPCã§ããå šäœã®å°å³ã¯çŽ¢åŒèšäºã«ãããŸãã
EC2ãç«ãŠãã®ã«ãããããçç¶ã§æ¢ãŸã£ã人åãã«æžããŸãã
- ããµãŒããŒã¯èµ·åããŠããã®ã«ãå€ããã¢ã¯ã»ã¹ã§ããªãã
- ããµããããã£ãŠäœåäœãã°ããã®ããããããäœãªã®ãåãããªãã
ãã®ã©ã¡ãããVPCã®5ã€ã®éšå(建ç©ã»éšå±ã»çé¢ã»æ¡å æ¿ã»èŠåå¡)ã®ã©ãããæ¬ ããŠããããç¹ãã£ãŠããªãã®ãåå ã§ãã

VPCã®éšåããã³ã·ã§ã³ã«äŸããå³(çè
äœæ)ããã®èšäºã®å
šéšããã®1æã«å
¥ã£ãŠããŸãã
VPCãšã¯äœã
Amazon VPC(Virtual Private Cloud)ã¯ãAWSã®äžã«èªåå°çšã®ãããã¯ãŒã¯ãåºåã£ãŠäœããµãŒãã¹ã§ããEC2ãRDSãšãã£ããµãŒããŒç³»ã®ãµãŒãã¹ã¯ãå¿ ãã©ããã®VPCã®äžã«çœ®ããŸããäžã®å³ã§ãããšVPCã¯ããã³ã·ã§ã³ã®å»ºç©å šäœãã§ããã®äžã«éšå±(ãµãããã)ãäœããçé¢(ã€ã³ã¿ãŒãããã²ãŒããŠã§ã€)ãä»ããæ¡å æ¿(ã«ãŒãããŒãã«)ã§éãéãæ±ºããåéšå±ã®ãã¢ã«èŠåå¡(ã»ãã¥ãªãã£ã°ã«ãŒã)ãç«ãŠãŸããVPCèªäœã®æéã¯ç¡æã§ã(äžã«çœ®ãEC2ãNATã²ãŒããŠã§ã€ã«ã¯æéãããããŸã)ã
äœã«äœ¿ãã
- å€ã«èŠããéšåãšé ãéšåãåãã: WebãµãŒããŒã¯å€ããèŠããéšå±ã«ãããŒã¿ããŒã¹ã¯å€ããèŠããªãéšå±ã«çœ®ããDBã«çŽæ¥ã€ã³ã¿ãŒãããããå±ããªãæ§é ã«ãã
- èªåã®IPã¢ãã¬ã¹ã®ç¯å²ã決ãã: 10.0.0.0/16 ã®ããã«ã瀟å ãããã¯ãŒã¯ãšè¢«ããªãç¯å²ãèªåã§éžã¶
- éä¿¡ã®å ¥å£ã»åºå£ã1ãæã«çµã: çé¢(ã€ã³ã¿ãŒãããã²ãŒããŠã§ã€)ãéããªããšå€ã«åºãããªãããšããæ§é ã§å®ã
- ãªã³ãã¬ãã¹ãå¥VPCãšç¹ã: VPNã»Direct Connectã»VPCãã¢ãªã³ã°ã®åå°ã«ãªã(ãã®èšäºã§ã¯æ±ããŸãã)
éèŠçšèª
| çšèª | ãã³ã·ã§ã³ã§èšããš | æå³ |
|---|---|---|
| VPC | 建ç©å šäœ | èªåå°çšã®ãããã¯ãŒã¯ã®ç¯å²ãIPã®ç¯å²(CIDR)ã1ã€æã€ |
| ãµãããã | éšå± | VPCã®äžãããã«åºåã£ãå°ããªç¯å²ã1ã€ã®ã¢ãã€ã©ããªãã£ãŸãŒã³(ããŒã¿ã»ã³ã¿ãŒçŸ€)ã«å±ãã |
| ã€ã³ã¿ãŒãããã²ãŒããŠã§ã€(IGW) | å€ãžã®çé¢ | VPCãšã€ã³ã¿ãŒããããç¹ãåºå ¥å£ã1ã€ã®VPCã«1〠|
| ã«ãŒãããŒãã« | æ¡å æ¿ | ããã®å®å ã¯ã©ããžéãããã®è¡šããµããããããšã«ã©ã®æ¡å æ¿ãèŠããæ±ºãã |
| ã»ãã¥ãªãã£ã°ã«ãŒã(SG) | éšå±ã®ãã¢ã®èŠåå¡ | ãµãŒããŒåäœã§ãã©ã®ããŒãã誰ã«éãããããæ±ºãã |
| ãããªãã¯ãµãããã | å€ã«é¢ããéšå± | ã«ãŒãããŒãã«ã«IGWåãã®çµè·¯ãããéšå± |
| ãã©ã€ããŒããµãããã | å åŽã®éšå± | IGWåãã®çµè·¯ããªãéšå±ãå€ããçŽæ¥å±ããªã |
| CIDR | éšå±çªå·ã®ç¯å² |
10.0.0.0/16 ã®ãããªIPç¯å²ã®æžãæ¹ã/16 ã¯çŽ65,000åã/24 ã¯256å |
ä»çµã¿ã®èŠç¹
åå¿è ãäžçªã€ãŸããã®ãããã§ãããããªãã¯ãšãã©ã€ããŒãã®éãã¯ããµããããã®çš®é¡ã§ã¯ãªããã«ãŒãããŒãã«ã®äžèº«ã§æ±ºãŸããŸãã ãµãããããäœã£ãæç¹ã§ã¯å šéšåãã§ããã®ãµãããããèŠãŠããæ¡å æ¿ã«ã0.0.0.0/0(å šéšã®å€)âIGWããšããè¡ãããã°å€ã«åºãããéšå±ãç¡ããã°åºãããªãéšå±ã«ãªããŸãã
å®éã«ãã«ãŒããäœãèšå®ããŠããªããµãããããèŠãŠããã«ãŒãããŒãã«ã®äžèº«ãåããšããããªã£ãŠããŸãã
10.0.0.0/16 -> local
ãVPCã®äžå士ã¯éãããã®1è¡ã ãã§ãå€ãžã®çµè·¯ããããŸãããã ãããã®éšå±ã®ãµãŒããŒã¯ãèµ·åããŠããŠãã€ã³ã¿ãŒãããããå±ããŸãããããµãŒããŒã¯åããŠããã®ã«å€ããç¹ãããªããã®æ£äœã®äžã€ãããã§ãã
ããäžã€ãèŠåå¡(ã»ãã¥ãªãã£ã°ã«ãŒã)ã¯éããããã®ã ããæžãæ¹åŒã§ããäœãæžããªããã°å šéšæ¢ããŸãã443ãéããè¡ãæžããŠåããŠHTTPSãéããŸãã
ãã®ã³ãŒããåããåæ
ãã®èšäºã®ã³ãŒãã¯Python(boto3)ã§ããåããæ¹æ³ã¯2éããããŸãã
A. AWSã¢ã«ãŠã³ãç¡ãã§è©Šã(ãããã): motoãšããAWSã®ãã£ããããã䜿ããšã課éããµã€ã³ã¢ããããªãã§PCã®äžã ãã§åããŸãã
python3 -m venv venv
./venv/bin/pip install boto3 moto
from moto import mock_aws
@mock_aws # ãã®äžã®boto3åŒã³åºãã¯å
šéšããŒã«ã«ã®åœAWSã«è¡ã
def main() -> None:
... # 以äžã®èšäºã®ã³ãŒããããã«å
¥ãã
main()
B. æ¬ç©ã®AWSã§åãã: å
ã«IAMãŠãŒã¶ãŒãšã¢ã¯ã»ã¹ããŒãäœã£ãŠ aws configure ã§ç»é²ããŠããå¿
èŠããããŸããæé ã¯IAMã®èšäºã«ãããŸãã
äœ¿ãæ¹
ã建ç©âéšå±âçé¢âæ¡å æ¿âèŠåå¡ãã®é ã«äœããŸããPython(boto3)ã§ã®æå°ã®åœ¢ã§ãã
import boto3
ec2 = boto3.client("ec2", region_name="ap-northeast-1")
# â 建ç©: VPCãäœã(IPã®ç¯å²ã決ãã)
vpc = ec2.create_vpc(CidrBlock="10.0.0.0/16")["Vpc"]["VpcId"]
# â¡ éšå±: ãµãããããäœã(VPCã®ç¯å²ã®äžããåãåºã)
sub = ec2.create_subnet(VpcId=vpc, CidrBlock="10.0.1.0/24",
AvailabilityZone="ap-northeast-1a")["Subnet"]["SubnetId"]
# ⢠çé¢: ã€ã³ã¿ãŒãããã²ãŒããŠã§ã€ãäœã£ãŠVPCã«ä»ãã
igw = ec2.create_internet_gateway()["InternetGateway"]["InternetGatewayId"]
ec2.attach_internet_gateway(InternetGatewayId=igw, VpcId=vpc)
# ⣠æ¡å
æ¿: ãå
šéšã®å€âçé¢ãã®è¡ãæžããŠãéšå±ã«çŽä»ãã
rt = ec2.create_route_table(VpcId=vpc)["RouteTable"]["RouteTableId"]
ec2.create_route(RouteTableId=rt, DestinationCidrBlock="0.0.0.0/0", GatewayId=igw)
ec2.associate_route_table(RouteTableId=rt, SubnetId=sub)
# †èŠåå¡: 443çªã ãéã
sg = ec2.create_security_group(GroupName="web", Description="web", VpcId=vpc)["GroupId"]
ec2.authorize_security_group_ingress(
GroupId=sg,
IpPermissions=[{"IpProtocol": "tcp", "FromPort": 443, "ToPort": 443,
"IpRanges": [{"CidrIp": "0.0.0.0/0"}]}])
â£ãŸã§çµãã£ãæç¹ã§ããã®éšå±ã¯ãããªãã¯ãµããããã«ãªã£ãŠããŸããâ£ããããªããã°ãåãéšå±ããã©ã€ããŒããµããããã®ãŸãŸã§ããéãã¯ã³ãŒã1è¡(create_route)ã ãã§ãã
å®éã«å©ããšæ¢ãŸããšãã
äœãæ¹ãééãããšãã«ã©ããªãšã©ãŒãè¿ãããã5ãã¿ãŒã³å®éã«å©ããŸããããšã©ãŒæãèªããã°ãã©ã®éšåãæªããåãããŸãã
| ãã£ãããš | è¿ã£ãŠãããšã©ãŒ | æå³ |
|---|---|---|
| VPCã®ç¯å²(10.0.0.0/16)ã®å€ã«ãµãããã(10.1.0.0/24)ãäœã | InvalidSubnet.Range: The CIDR '10.1.0.0/24' is invalid. |
éšå±ã¯å»ºç©ã®äžã«ããäœããªã |
| åãç¯å²(10.0.1.0/24)ã®ãµããããããã1ã€äœã | InvalidSubnet.Conflict: conflicts with another subnet |
éšå±çªå·ã®ç¯å²ã¯éããããªã |
| 1ã€ã®IGWã2ã€ç®ã®VPCã«ãä»ãã | Resource.AlreadyAssociated |
çé¢ã¯1ã€ã®VPCå°çšãVPCããšã«äœã |
| ãµãããããæ®ã£ãŠããVPCãæ¶ã | DependencyViolation: has dependencies and cannot be deleted. |
éšå±ãå šéšæ¶ããŠããã§ãªããšå»ºç©ã¯å£ããªã |
| ååšããªãSGã«ã«ãŒã«è¿œå | InvalidGroup.NotFound |
IDã®æã¡ééãããå¥ãªãŒãžã§ã³ã®SGãæããŠãã |
ãšã©ãŒåã®é (InvalidSubnet / DependencyViolation)ããã®ãŸãŸåå ãèšã£ãŠããããŸããšã©ãŒåã§åœãããä»ããã®ãæ©ãã
ãµããããã¯256åã¶ãã§ã251åãã䜿ããªã
10.0.1.0/24 ã¯èšç®äž256åã®IPãå«ã¿ãŸãããå®éã«äœ¿ããã®ã¯251åã§ããã
10.0.1.0/24 ã® AvailableIpAddressCount = 251
AWSãåãµããããã®å é 4ã€ãšæ«å°Ÿ1ã€ãèš5åãäºçŽããŠããããã§ã(ãããã¯ãŒã¯ã¢ãã¬ã¹ãVPCã«ãŒã¿ãŒãDNSãå°æ¥çšããããŒããã£ã¹ã)ãå°ãããµãããããåããšãã¯ããã®5åã¶ãå°ãªãèŠç©ããã/28(16å)ã ãšäœ¿ããã®ã¯11åãããªãã
CIDRã®æ±ºãæ¹ã/16ãã/28ãŸã§
建ç©(VPC)ã®åºããšéšå±(ãµãããã)ã®åºãã¯ãCIDRã®åŸãã®æ°åã§æ±ºãŸããŸããæ°åãå°ããã»ã©åºãã宿ž¬ã§ãVPCã«èš±ãããç¯å²ã¯ /16ã/28 ã§ããã
create_vpc(CidrBlock="10.0.0.0/8") â InvalidVpc.Range: The CIDR '10.0.0.0/8' is invalid.
create_vpc(CidrBlock="10.0.0.0/29") â InvalidVpc.Range: The CIDR '10.0.0.0/29' is invalid.
| CIDR | èšç®äžã®IPæ° | å®éã«äœ¿ããæ°(宿ž¬) | çšéã®ç®å® |
|---|---|---|---|
| /16 | 65,536 | 65,531 | VPCæ¬äœãè¿·ã£ãããã |
| /24 | 256 | 251 | ãµãããã1éšå±ãå ¥éã¯ããã§è¶³ãã |
| /28 | 16 | 11 | æå°ãèžã¿å°ãå°ããªæ€èšŒçš |
䜿ããæ°ã5åå°ãªãã®ã¯åã®ç¯ã®éãã§ããIPã®é ã¯ã瀟å
ãããã¯ãŒã¯ãšè¢«ããªããã©ã€ããŒãçšã®3系統(10.0.0.0/8ã»172.16.0.0/12ã»192.168.0.0/16)ããéžã³ãŸããããã©ã«ãVPCã 172.31.0.0/16 ã䜿ã£ãŠããã®ã§ãèªäœã¯ 10.0.0.0/16 ã«ããŠãããšè¢«ããŸããã
ãµããããã¯VPCã®ç¯å²ã®äžããåãåºãã®ã§ãå
¥ãåã«ãªããŸãã10.0.0.0/16 ã®äžã« 10.0.1.0/24ã10.0.2.0/24ãâŠãšéšå±ã䞊ã¹ã圢ã§ã/16ã®äžã«ã¯/24ã256éšå±ãŸã§å
¥ããŸãã
ããã©ã«ãVPCã®äžèº«
AWSã¢ã«ãŠã³ãã«ã¯æåããããã©ã«ãVPCããããŸããäžèº«ãåããšãããªã£ãŠããŸã(æ±äº¬ãªãŒãžã§ã³)ã
VPC: 172.31.0.0/16 (IsDefault=True)
ãµãããã: ap-northeast-1a 172.31.0.0/20 MapPublicIpOnLaunch=True
ap-northeast-1c 172.31.16.0/20 MapPublicIpOnLaunch=True
ap-northeast-1d 172.31.32.0/20 MapPublicIpOnLaunch=True
éšå±ã¯AZããšã«1ã€ãå šéšãããªãã¯(èµ·åããEC2ã«èªåã§ãããªãã¯IPãä»ãèšå®ãON)ã§ãæ¡å æ¿ã«ã¯å€ãžã®è¡ãå (0.0.0.0/0âIGW)ãå ¥ã£ãŠããŸãããEC2ãç«ãŠããäœãèšå®ããŠããªãã®ã«å€ããç¹ãã£ããã®ã¯ãããçç±ã§ããéã«èšããšãããã©ã«ãVPCã«ã¯ãå€ããèŠããªãéšå±ããç¡ãã®ã§ãDBã眮ãç·Žç¿ã«ã¯åããŸãããèªåã§VPCãäœãæå³ã¯ããã«ãããŸãã
æ¡å æ¿ã¯2çš®é¡ãããã¡ã€ã³ãšãµããããçš
VPCãäœã£ãç¬éã«ãæ¡å
æ¿(ã«ãŒãããŒãã«)ã¯1æã ãèªåã§ä»ããŠããŸãããããã¡ã€ã³ã«ãŒãããŒãã«ã§ãäžèº«ã¯ 10.0.0.0/16 -> local ã®1è¡ã ããã©ã®æ¡å
æ¿ã«ãçŽä»ããŠããªããµããããã¯ãèªåã§ãã®ã¡ã€ã³ãèŠãŸãã
create_vpcçŽåŸã®ã«ãŒãããŒãã«: 1æ (Main=True) 10.0.0.0/16 -> local
ãäœ¿ãæ¹ãã®â£ã§äœã£ãã®ã¯ãµããããçšã®ã«ãŒãããŒãã«ã§ãããããããªãã¯ã«ãããéšå±ã«ã ãçŽä»ããŸãããçŽä»ããªãã£ãéšå±ã¯ã¡ã€ã³ãèŠç¶ããã®ã§ããã©ã€ããŒãã®ãŸãŸã§ããã¡ã€ã³ã«0.0.0.0/0âIGWãæžããšå šéšå±ããããªãã¯ã«ãªãã®ã§ãã¡ã€ã³ã¯è§Šãããå€ã«åºãããéšå±ã«ã ãå°çšã®æ¡å æ¿ãä»ããã®ãå®ç³ã§ãã
ãã©ã€ããŒãã®éšå±ããå€ã«åºããNATã²ãŒããŠã§ã€
å€ããå±ããªãéšå±(ãã©ã€ããŒã)ã®ãµãŒããŒã§ããããã±ãŒãžã®æŽæ°ãªã©ã§å€ã«ãåºããå¿ èŠã¯ãããŸãããã®ããã®åºå£ãNATã²ãŒããŠã§ã€ã§ãããããªãã¯ã®éšå±ã«çœ®ããŠããã©ã€ããŒãã®æ¡å æ¿ãã0.0.0.0/0âNATãã«ããŸãã
# ⥠Elastic IP(åºå®ã®å
¬éIP)ã1ã€ç¢ºä¿ããŠNATã²ãŒããŠã§ã€ã«ä»ãããNATã¯ãããªãã¯ã®éšå±ã«çœ®ã
eip = ec2.allocate_address(Domain="vpc")
nat = ec2.create_nat_gateway(SubnetId=sub, AllocationId=eip["AllocationId"])["NatGateway"]["NatGatewayId"]
# ⊠ãã©ã€ããŒãã®éšå±çšã®æ¡å
æ¿ããå
šéšã®å€âNATã
prv = ec2.create_subnet(VpcId=vpc, CidrBlock="10.0.2.0/24",
AvailabilityZone="ap-northeast-1a")["Subnet"]["SubnetId"]
prt = ec2.create_route_table(VpcId=vpc)["RouteTable"]["RouteTableId"]
ec2.create_route(RouteTableId=prt, DestinationCidrBlock="0.0.0.0/0", NatGatewayId=nat)
ec2.associate_route_table(RouteTableId=prt, SubnetId=prv)
ã§ãããã£ã2æã®æ¡å æ¿ã䞊ã¹ããšãéãã¯è¡ãå ã®1èªã ãã§ãã
ãããªãã¯ã®æ¡å
æ¿: 10.0.0.0/16 -> local, 0.0.0.0/0 -> igw-xxxx
ãã©ã€ããŒãã®æ¡å
æ¿: 10.0.0.0/16 -> local, 0.0.0.0/0 -> nat-xxxx
ç¢å°ã®åãã«æ³šæããŠãã ãããIGWã¯åæ¹å(å€ããå ¥ããããäžããåºããã)ãNATã¯äžããå€ãžã®äžæ¹éè¡(å€ããäžã«ã¯å ¥ããªã)ããã®éãããDBã¯å€ããèŠããªãããDBèªèº«ã¯ã¢ããããŒããåãã«è¡ããããäœã£ãŠããŸããNATã²ãŒããŠã§ã€ã¯æé課éã§ãäœã£ããŸãŸå¿ãããšææ°ååããããŸããæ€èšŒãçµãã£ããæ¶ãã
ã»ãã¥ãªãã£ã°ã«ãŒãã®åŸãã«ãã1æããããã¯ãŒã¯ACL
éšå±ã®ãã¢ã®èŠåå¡(SG)ãšã¯å¥ã«ãéšå±ã®å ¥å£ã«ãããã¯ãŒã¯ACLãšããéçªãããŸããäœã£ãVPCã®æ¢å®ã®ACLãåããšãå šéšéãèšå®ã§ãã
æ¢å®ã®ãããã¯ãŒã¯ACL
å
¥ã£ãŠãã: 100 allow 0.0.0.0/0 / 32767 deny 0.0.0.0/0
åºãŠãã: 100 allow 0.0.0.0/0 / 32767 deny 0.0.0.0/0
çªå·ã®å°ããé ã«è©äŸ¡ããŠã100çªã§å šéšèš±å¯ãæåŸã®32767çª(è§Šããªãæ¢å®è¡)ã§å šéšæåŠãã€ãŸãæ¢å®ã§ã¯çŽ éãã§ãSGã ããå¹ããŠããç¶æ ã§ããSGãšã®éãã¯3ã€ã
| ã»ãã¥ãªãã£ã°ã«ãŒã | ãããã¯ãŒã¯ACL | |
|---|---|---|
| å¹ãåäœ | ãµãŒããŒ(ENI)ããš | ãµããããããš |
| æžããã® | èš±å¯ã ã | èš±å¯ãšæåŠã®äž¡æ¹ |
| æ»ãã®éä¿¡ | èªåã§éã(ã¹ããŒããã«) | æ»ããæžãå¿ èŠããã(ã¹ããŒãã¬ã¹) |
å ¥éã®ç¯å²ã§ã¯ACLã¯è§ŠãããSGã ãã§çµã¿ãŸãããç¹å®ã®IPããµããããäžžããšç· ãåºãããããåºãŠãããšãã«ãACLã®æåŠè¡ãæãåºããŠãã ããã
å€ãšç¹ãéšåã®äžèЧ
VPCã®å€ãšç¹ãéšåã¯ä»ã«ããããŸããå ¥éã§äœ¿ãã®ã¯äž2ã€ã ãã§ãã
| éšå | ç¹ãçžæ | åã | æé |
|---|---|---|---|
| ã€ã³ã¿ãŒãããã²ãŒããŠã§ã€ | ã€ã³ã¿ãŒããã | åæ¹å | ç¡æ |
| NATã²ãŒããŠã§ã€ | ã€ã³ã¿ãŒããã | äžâå€ã®ã¿ | æé+ããŒã¿é |
| VPCãšã³ããã€ã³ã | S3ãDynamoDBãªã©AWSã®ãµãŒãã¹ | äžâãµãŒãã¹(ã€ã³ã¿ãŒããããéããªã) | ã²ãŒããŠã§ã€å(S3/DynamoDB)ã¯ç¡æ |
| VPCãã¢ãªã³ã° | å¥ã®VPC | åæ¹å | ããŒã¿è»¢éé |
| VPN / Direct Connect | äŒç€Ÿã®ãããã¯ãŒã¯ | åæ¹å | æé+転éé |
VPCãšã³ããã€ã³ãã ãè£è¶³ãããšããã©ã€ããŒãã®éšå±ããS3ãèªã¿ãããšããNATãçµç±ããŠã€ã³ã¿ãŒãããè¶ãã«è¡ãããããšã³ããã€ã³ãã§AWSå ãçŽæ¥éããæ¹ãéããŠå®ããS3ãšDynamoDBã®ã²ãŒããŠã§ã€åã¯ç¡æãªã®ã§ãNATãç«ãŠãåã«ããã§è¶³ããªãã確èªãã䟡å€ããããŸãã
äŒŒãæŠå¿µãšã®äœ¿ãåã
| è¿·ããšãã | çã |
|---|---|
| ã»ãã¥ãªãã£ã°ã«ãŒããšãããã¯ãŒã¯ACL | SGã¯ãµãŒããŒåäœã®èŠåå¡ã§ãéããããã®ã ãæžã(æ»ãã®éä¿¡ã¯èªåã§éã)ããããã¯ãŒã¯ACLã¯ãµããããåäœã®éçªã§ãèš±å¯ãšæåŠãäž¡æ¹æžããæåã¯SGã ãã§è¶³ãã |
| ãããªãã¯ãšãã©ã€ããŒããã©ã£ã¡ã«çœ®ã | å€ããçŽæ¥ã¢ã¯ã»ã¹ããããã®(WebãµãŒããŒãããŒããã©ã³ãµ)ã¯ãããªãã¯ããã以å€(DBãå éšåŠç)ã¯ãã©ã€ããŒã |
| ãã©ã€ããŒãã®äžããå€ã«åºãããšã | NATã²ãŒããŠã§ã€ããããªãã¯åŽã«çœ®ããŠããã©ã€ããŒãåŽã®æ¡å æ¿ãã0.0.0.0/0âNATãã«ãããNATã¯ææ |
| VPCã¯äœåäœã | æåã¯1ã€ã§ååãç°å¢(æ¬çª/æ€èšŒ)ãåããããªã£ããåãã |
æéã®èãæ¹
VPCã»ãµããããã»ã«ãŒãããŒãã«ã»IGWã»SGã¯ç¡æã§ããæéããããã®ã¯ãäžã«çœ®ãEC2ãªã©ã®ãªãœãŒã¹ãšãNATã²ãŒããŠã§ã€(æé課é+ããŒã¿é課é)ãVPNæ¥ç¶ãVPCãã¢ãªã³ã°ã®ããŒã¿è»¢éãªã©ã§ãããVPCãäœã£ãã課éããããããšã¯ãããŸãããåå¿è ãVPCåšãã§è«æ±ãé£ããå žåã¯NATã²ãŒããŠã§ã€ã®æ¶ãå¿ããªã®ã§ãããã ãèŠããŠãããŠãã ããã
ããããæ³šæç¹
- ããã©ã«ãVPCãããã AWSã¢ã«ãŠã³ãã«ã¯æåããããã©ã«ãVPCã1ã€çšæãããŠããŠãäœãæå®ããEC2ãç«ãŠããšããã«å ¥ããŸããåŠç¿çšéãªãããã§åããŸãããäžèº«ãçè§£ããã«ã¯èªåã§VPCã1ã€äœã£ãŠã¿ãã®ãæ©ãã§ã
- ãµããããã¯ã¢ãã€ã©ããªãã£ãŸãŒã³ããŸãããªãã åé·åãããªããå¥ã®AZã«ãã1ã€ãµãããããäœããŸã
- IGWãä»ããã ãã§ã¯å€ã«åºãããªãã æ¡å æ¿(ã«ãŒãããŒãã«)ã«0.0.0.0/0âIGWã®è¡ãè¶³ããŠãããããµããããã«çŽä»ãããŸã§ãã»ããã§ã
- æ¶ãé çªã¯äœã£ãéã NATã²ãŒããŠã§ã€âElastic IPã®è§£æŸâSGâã«ãŒãâIGWã®ãã¿ããâãµããããâVPCãNATã¯æ¶ãããŸã§æ°åç§ããããæ¶ããåã«EIPãè§£æŸããããšãããšå€±æããŸããé çªãééãããšDependencyViolationã§æ¢ãŸããŸã
ãŸãšã
åé ã®2ã€ã®çç¶ã«æ»ããŸãã
- ãèµ·åããŠããã®ã«å€ããã¢ã¯ã»ã¹ã§ããªããâ ã«ãŒãããŒãã«ã«IGWåãã®è¡ãããããSGã«ãã®ããŒãã®èš±å¯ããããããã®2ã€ã§å€§åã¯æ±ºãŸããŸã
- ããµãããããäœãªã®ãåãããªããâ VPCã®äžã®éšå±ã§ããããªãã¯ããã©ã€ããŒããã¯æ¡å æ¿(ã«ãŒãããŒãã«)ã®1è¡ã§æ±ºãŸããéšå±èªäœã«çš®é¡ã¯ãªã
èŠããã®ã¯5éšå(VPCã»ãµããããã»IGWã»ã«ãŒãããŒãã«ã»SG)ã®é¢ä¿ã ãã§ããäžã®å³ã«å šéšå ¥ã£ãŠããŸãããã©ã€ããŒãã®éšå±ããå€ã«åºãããªã£ããNATã²ãŒããŠã§ã€ãS3ã«è¡ãã ããªãVPCãšã³ããã€ã³ãããè¶³ããŸãã
次åã¯Lambda(ãµãŒããŒã¬ã¹)ãäºå®ããŠããŸãã
åè
- Amazon VPC å ¬åŒããã¥ã¡ã³ã
- åå: ãå³è§£ãAWS EC2ãšã¯
- ã·ãªãŒãºçŽ¢åŒ: AWSãšã¯äœã