Configurazione di risorse Amazon VPC con CloudFormation - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di risorse Amazon VPC con CloudFormation

Questa sezione fornisce esempi per configurare le risorse Amazon VPC utilizzando CloudFormation. I VPC consentono di creare una rete virtuale all’interno di AWS e questi frammenti mostrano come configurare alcuni aspetti dei VPC per soddisfare i requisiti di rete.

Abilitazione dell’accesso a Internet solo in uscita tramite IPv6 in un VPC

Un gateway Internet solo in uscita consente alle istanze all’interno di un VPC di accedere a Internet e impedire che le risorse su Internet comunichino con le istanze. Il seguente frammento consente l’accesso a Internet solo in uscita tramite IPv6 dall’interno di un VPC. Crea un VPC con un intervallo di indirizzi IPv4 10.0.0/16 utilizzando una risorsa AWS::EC2::VPC. Una tabella di routing è associata a questa risorsa VPC utilizzando una risorsa AWS::EC2::RouteTable. La tabella di routing gestisce i percorsi per le istanze all’interno del VPC. Un AWS::EC2::EgressOnlyInternetGateway viene utilizzato per creare un gateway Internet di sola uscita per abilitare la comunicazione tramite IPv6 per il traffico in uscita dalle istanze all’interno del VPC, impedendo al contempo il traffico in entrata. Una risorsa AWS::EC2::Route viene specificata per creare un percorso tramite IPv6 nella tabella di routing che indirizza tutto il traffico IPv6 in uscita (::/0) verso il gateway Internet di sola uscita.

Per ulteriori informazioni sui gateway Internet solo in uscita, consulta Abilitazione del traffico in uscita IPv6 utilizzando un gateway Internet egress-only nella Guida per l’utente di 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"

Frammenti di modello di interfaccia di rete elastica (ENI)

Creazione di un’istanza Amazon EC2 con interfacce di rete elastiche (ENI) collegate

Il seguente frammento di esempio crea un’istanza Amazon EC2 utilizzando una risorsa AWS::EC2::Instance nella sottorete e nell’Amazon VPC specificati. Collega due interfacce di rete (ENI) all’istanza, associa indirizzi IP elastici alle istanze tramite gli ENI collegati e configura il gruppo di sicurezza per l’accesso SSH e HTTP. I dati utente vengono forniti all’istanza come parte della configurazione di avvio al momento della creazione dell’istanza. I dati utente includono uno script codificato in formato base64 per garantire che venga passato all’istanza. All’avvio dell’istanza, lo script viene eseguito automaticamente come parte del processo di bootstrap. Installa ec2-net-utils, configura le interfacce di rete e avvia il servizio HTTP.

Per determinare l’Amazon Machine Image (AMI) appropriata in base alla Regione selezionata, il frammento utilizza una funzione Fn::FindInMap che cerca i valori in una mappatura RegionMap. Questa mappatura deve essere definita nel modello più grande. Le due interfacce di rete vengono create utilizzando risorse AWS::EC2::NetworkInterface. Gli indirizzi IP elastici vengono specificati utilizzando risorse AWS::EC2::EIP allocate al dominio vpc. Questi indirizzi IP elastici sono associati alle interfacce di rete utilizzando risorse AWS::EC2::EIPAssociation.

La sezione Outputs definisce i valori o le risorse a cui si desidera accedere dopo la creazione dello stack. In questo frammento, l’output definito è InstancePublicIp, che rappresenta l’indirizzo IP pubblico dell’istanza EC2 creata dallo stack. Puoi recuperare questo output nella scheda Output della console CloudFormation o utilizzando il comando describe-stacks.

Per ulteriori informazioni sulle interfacce di rete elastiche, consulta Interfacce di rete Elastiche.

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