1

Eh bien, j'essaie de trouver un modèle de cloud dans AWS.AWS Cloudformation

Où devrais-je créer trois VPC avec un seul sous-réseau et une seule instance? Où vous avez internetgateway dans avec 2 sens unique de vpc à la passerelle et une connexion à deux voies comme ceci:

enter image description here

+0

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

Répondre

5

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:

Launch 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