Vous pouvez tirer parti de la Amazon VPC Architecture de AWS Quick Starttemplate pour commencer rapidement avec un passe-partout VPC architecture. Ce modèle pris en charge par AWS crée un seul VPC contenant à la fois un sous-réseau public (bidirectionnel) et privé (unidirectionnel Internet sortant uniquement) dans chaque zone de disponibilité spécifiée (vous fournissez 2 à 4 zones de disponibilité en tant que paramètres). Je recommande de commencer par le démarrage rapide, puis la personnalisation plus tard pour mieux répondre à vos besoins spécifiques si nécessaire.
Pour votre cas d'utilisation, vous pouvez spécifier 2 zones de disponibilité, puis utiliser les sous-réseaux privés dans chaque AZ pour SubnetA et SubnetB, et le sous-réseau public dans l'un des AZ pour SubnetC.
(Note: Je recommande contre créer 3 CVP séparée pour une seule application Distinct Subnets offrent une isolation adéquate du réseau, ce qui crée 3 doublons CVP séparée de ressources supplémentaires inutiles comme Internet Getways, et il y a un limit of 5 VPCs per region per AWS account. .)
Voici un exemple de travail complet qui utilise le modèle de démarrage rapide directement comme nested stack:
Description: Create a VPC with 2 private and 1 public subnets, with an EC2 instance in each.
Mappings:
RegionMap:
us-east-1:
# amzn-ami-hvm-2016.09.1.20161221-x86_64-gp2
"opal": "ami-9be6f38c"
"rstudio": "ami-9be6f38c"
Parameters:
InstanceType:
Description: EC2 instance type
Type: String
Default: t2.medium
AllowedValues: [t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge,
m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m4.16xlarge,
c4.large, c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge,
r4.large, r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge, r4.16xlarge]
ConstraintDescription: Please choose a valid instance type.
AvailabilityZones:
Description: List of 2 Availability Zones to use for the subnets in the VPC.
Type: "List<AWS::EC2::AvailabilityZone::Name>"
KeyPairName:
Description: Public/private key pair to provide SSH access to the EC2 instances.
Type: "AWS::EC2::KeyPair::KeyName"
Resources:
VPCStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: 'https://s3.amazonaws.com/quickstart-reference/aws/vpc/latest/templates/aws-vpc.template'
Parameters:
AvailabilityZones: !Join [',', !Ref AvailabilityZones]
KeyPairName: !Ref KeyPairName
NumberOfAZs: 2
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: VPC Security Group
VpcId: !GetAtt VPCStack.Outputs.VPCID
OpalServer1:
Type: AWS::EC2::Instance
Properties:
ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", opal]
InstanceType: !Ref InstanceType
SecurityGroupIds: [!Ref SecurityGroup]
SubnetId: !GetAtt VPCStack.Outputs.PrivateSubnet1AID
KeyName: !Ref KeyPairName
OpalServer2:
Type: AWS::EC2::Instance
Properties:
ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", opal]
InstanceType: !Ref InstanceType
SecurityGroupIds: [!Ref SecurityGroup]
SubnetId: !GetAtt VPCStack.Outputs.PrivateSubnet2AID
KeyName: !Ref KeyPairName
RStudioClient:
Type: AWS::EC2::Instance
Properties:
ImageId: !FindInMap [ RegionMap, !Ref "AWS::Region", rstudio]
InstanceType: !Ref InstanceType
SecurityGroupIds: [!Ref SecurityGroup]
SubnetId: !GetAtt VPCStack.Outputs.PublicSubnet1ID
KeyName: !Ref KeyPairName
Je suppose que vous ne trouverez pas un passe-partout CloudFormation là-bas cela correspond à cette topologie exacte, mais vous pouvez facilement la créer vous-même. Pour les connexions unidirectionnelles, vous voudrez utiliser une passerelle NAT, et pour bidirectionnel, il suffit d'avoir la connexion VPC directement à la passerelle Internet (ou d'utiliser un ELB ou un proxy inverse, en fonction de la posture de sécurité que vous voulez prendre .) – KevinSeaman