Configurer les ressources Amazon VPC avec CloudFormation - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer les ressources Amazon VPC avec CloudFormation

Cette section fournit des exemples de configuration des ressources Amazon VPC à l’aide de CloudFormation. Les VPC vous permettent de créer un réseau virtuel au sein d'AWS, et ces extraits montrent comment configurer certains aspects des VPC pour répondre à vos besoins en matière de réseau.

Activer l'accès Internet de sortie IPv6 uniquement dans un VPC

Une passerelle Internet de sortie uniquement permet aux instances d'un VPC d'accéder à Internet et d'empêcher les ressources sur Internet de communiquer avec les instances. L'extrait suivant active l'accès Internet de sortie IPv6 uniquement depuis un VPC. Il crée un VPC avec une plage d'adresses IPv4 de 10.0.0/16 à l'aide d'une ressource AWS::EC2::VPC. Une table de routage est associée à cette ressource VPC à l'aide d'une ressource AWS::EC2::RouteTable. La table de routage gère les itinéraires pour les instances au sein du VPC. Un AWS::EC2::EgressOnlyInternetGateway est utilisé pour créer une passerelle Internet de sortie uniquement afin de permettre la communication IPv6 pour le trafic sortant des instances du VPC, tout en empêchant le trafic entrant. Une ressource AWS::EC2::Route est spécifiée pour créer une route IPv6 dans la table de routage qui dirige tout le trafic IPv6 sortant (::/0) vers la passerelle Internet de sortie uniquement.

Pour plus d’informations sur les passerelles Internet sortantes uniquement, consultez la section Activer le trafic IPv6 sortant à l’aide d’une passerelle Internet sortante uniquement dans le Guide de l’utilisateur Amazon VPC.

JSON

"DefaultIpv6Route": { "Type": "AWS::EC2::Route", "Properties": { "DestinationIpv6CidrBlock": "::/0", "EgressOnlyInternetGatewayId": { "Ref": "EgressOnlyInternetGateway" }, "RouteTableId": { "Ref": "RouteTable" } } }, "EgressOnlyInternetGateway": { "Type": "AWS::EC2::EgressOnlyInternetGateway", "Properties": { "VpcId": { "Ref": "VPC" } } }, "RouteTable": { "Type": "AWS::EC2::RouteTable", "Properties": { "VpcId": { "Ref": "VPC" } } }, "VPC": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": "10.0.0.0/16" } }

YAML

DefaultIpv6Route: Type: "AWS::EC2::Route" Properties: DestinationIpv6CidrBlock: "::/0" EgressOnlyInternetGatewayId: Ref: "EgressOnlyInternetGateway" RouteTableId: Ref: "RouteTable" EgressOnlyInternetGateway: Type: "AWS::EC2::EgressOnlyInternetGateway" Properties: VpcId: Ref: "VPC" RouteTable: Type: "AWS::EC2::RouteTable" Properties: VpcId: Ref: "VPC" VPC: Type: "AWS::EC2::VPC" Properties: CidrBlock: "10.0.0.0/16"

Extraits de modèle d'interface réseau Elastic (ENI)

Créer une instance Amazon EC2 avec des interfaces réseau Elastic (ENI) attachées

L’extrait d’exemple suivant crée une instance Amazon EC2 à l’aide d’une ressource AWS::EC2::Instance dans le VPC et le sous-réseau Amazon spécifiés. Il attache deux interfaces réseau (ENI) à l'instance, associe des adresses IP Elastic aux instances via les ENI attachés et configure le groupe de sécurité pour l'accès SSH et HTTP. Les données utilisateur sont fournies à l'instance dans le cadre de la configuration de lancement lors de la création de l'instance. Les données utilisateur incluent un script codé dans un format base64 afin de garantir leur transmission à l'instance. Lorsque l'instance est lancée, le script s'exécute automatiquement dans le cadre du processus de démarrage. Il installe ec2-net-utils, configure les interfaces réseau et démarre le service HTTP.

Pour déterminer la Amazon Machine Image (AMI) appropriée en fonction de la région sélectionnée, l'extrait utilise une fonction Fn::FindInMap qui recherche des valeurs dans un mappage RegionMap. Ce mappage doit être défini dans le modèle plus large. Les deux interfaces réseau sont créées à l’aide de ressources AWS::EC2::NetworkInterface. Les adresses IP élastiques sont spécifiées à l’aide des ressources AWS::EC2::EIP allouées au domaine vpc. Ces adresses IP élastiques sont associées aux interfaces réseau utilisant des ressources AWS::EC2::EIPAssociation.

La section Outputs définit les valeurs ou les ressources auxquelles vous souhaitez accéder une fois que la pile est créée. Dans cet extrait, la sortie définie est InstancePublicIp, qui représente l'adresse IP publique de l'instance EC2 créée par la pile. Vous pouvez récupérer cette sortie dans l’onglet Sortie de la console CloudFormation ou à l’aide de la commande describe-stacks.

Pour plus d'informations sur les interfaces réseau Elastic, consultez Interfaces réseau Elastic.

JSON

"Resources": { "ControlPortAddress": { "Type": "AWS::EC2::EIP", "Properties": { "Domain": "vpc" } }, "AssociateControlPort": { "Type": "AWS::EC2::EIPAssociation", "Properties": { "AllocationId": { "Fn::GetAtt": [ "ControlPortAddress", "AllocationId" ] }, "NetworkInterfaceId": { "Ref": "controlXface" } } }, "WebPortAddress": { "Type": "AWS::EC2::EIP", "Properties": { "Domain": "vpc" } }, "AssociateWebPort": { "Type": "AWS::EC2::EIPAssociation", "Properties": { "AllocationId": { "Fn::GetAtt": [ "WebPortAddress", "AllocationId" ] }, "NetworkInterfaceId": { "Ref": "webXface" } } }, "SSHSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId": { "Ref": "VpcId" }, "GroupDescription": "Enable SSH access via port 22", "SecurityGroupIngress": [ { "CidrIp": "0.0.0.0/0", "FromPort": 22, "IpProtocol": "tcp", "ToPort": 22 } ] } }, "WebSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "VpcId": { "Ref": "VpcId" }, "GroupDescription": "Enable HTTP access via user-defined port", "SecurityGroupIngress": [ { "CidrIp": "0.0.0.0/0", "FromPort": 80, "IpProtocol": "tcp", "ToPort": 80 } ] } }, "controlXface": { "Type": "AWS::EC2::NetworkInterface", "Properties": { "SubnetId": { "Ref": "SubnetId" }, "Description": "Interface for controlling traffic such as SSH", "GroupSet": [ { "Fn::GetAtt": [ "SSHSecurityGroup", "GroupId" ] } ], "SourceDestCheck": true, "Tags": [ { "Key": "Network", "Value": "Control" } ] } }, "webXface": { "Type": "AWS::EC2::NetworkInterface", "Properties": { "SubnetId": { "Ref": "SubnetId" }, "Description": "Interface for web traffic", "GroupSet": [ { "Fn::GetAtt": [ "WebSecurityGroup", "GroupId" ] } ], "SourceDestCheck": true, "Tags": [ { "Key": "Network", "Value": "Web" } ] } }, "Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Fn::FindInMap": [ "RegionMap", { "Ref": "AWS::Region" }, "AMI" ] }, "KeyName": { "Ref": "KeyName" }, "NetworkInterfaces": [ { "NetworkInterfaceId": { "Ref": "controlXface" }, "DeviceIndex": "0" }, { "NetworkInterfaceId": { "Ref": "webXface" }, "DeviceIndex": "1" } ], "Tags": [ { "Key": "Role", "Value": "Test Instance" } ], "UserData": { "Fn::Base64": { "Fn::Sub": "#!/bin/bash -xe\nyum install ec2-net-utils -y\nec2ifup eth1\nservice httpd start\n" } } } } }, "Outputs": { "InstancePublicIp": { "Description": "Public IP Address of the EC2 Instance", "Value": { "Fn::GetAtt": [ "Ec2Instance", "PublicIp" ] } } }

YAML

Resources: ControlPortAddress: Type: 'AWS::EC2::EIP' Properties: Domain: vpc AssociateControlPort: Type: 'AWS::EC2::EIPAssociation' Properties: AllocationId: Fn::GetAtt: - ControlPortAddress - AllocationId NetworkInterfaceId: Ref: controlXface WebPortAddress: Type: 'AWS::EC2::EIP' Properties: Domain: vpc AssociateWebPort: Type: 'AWS::EC2::EIPAssociation' Properties: AllocationId: Fn::GetAtt: - WebPortAddress - AllocationId NetworkInterfaceId: Ref: webXface SSHSecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: VpcId: Ref: VpcId GroupDescription: Enable SSH access via port 22 SecurityGroupIngress: - CidrIp: 0.0.0.0/0 FromPort: 22 IpProtocol: tcp ToPort: 22 WebSecurityGroup: Type: 'AWS::EC2::SecurityGroup' Properties: VpcId: Ref: VpcId GroupDescription: Enable HTTP access via user-defined port SecurityGroupIngress: - CidrIp: 0.0.0.0/0 FromPort: 80 IpProtocol: tcp ToPort: 80 controlXface: Type: 'AWS::EC2::NetworkInterface' Properties: SubnetId: Ref: SubnetId Description: Interface for controlling traffic such as SSH GroupSet: - Fn::GetAtt: - SSHSecurityGroup - GroupId SourceDestCheck: true Tags: - Key: Network Value: Control webXface: Type: 'AWS::EC2::NetworkInterface' Properties: SubnetId: Ref: SubnetId Description: Interface for web traffic GroupSet: - Fn::GetAtt: - WebSecurityGroup - GroupId SourceDestCheck: true Tags: - Key: Network Value: Web Ec2Instance: Type: AWS::EC2::Instance Properties: ImageId: Fn::FindInMap: - RegionMap - Ref: AWS::Region - AMI KeyName: Ref: KeyName NetworkInterfaces: - NetworkInterfaceId: Ref: controlXface DeviceIndex: "0" - NetworkInterfaceId: Ref: webXface DeviceIndex: "1" Tags: - Key: Role Value: Test Instance UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum install ec2-net-utils -y ec2ifup eth1 service httpd start Outputs: InstancePublicIp: Description: Public IP Address of the EC2 Instance Value: Fn::GetAtt: - Ec2Instance - PublicIp