Trechos de modelo do Amazon EC2
Exemplos de mapeamento de dispositivos de blocos do EC2
Instância do EC2 com mapeamentos de dispositivos de blocos
JSON
"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "KeyName" : { "Ref" : "KeyName" }, "InstanceType" : { "Ref" : "InstanceType" }, "SecurityGroups" : [{ "Ref" : "Ec2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sda1", "Ebs" : { "VolumeSize" : "50" } },{ "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeSize" : "100" } } ] } }
YAML
EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [ AWSRegionArch2AMI, !Ref 'AWS::Region' , !FindInMap [ AWSInstanceType2Arch, !Ref InstanceType, Arch ] ] KeyName: !Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName: /dev/sda1 Ebs: VolumeSize: 50 - DeviceName: /dev/sdm Ebs: VolumeSize: 100
Instância do EC2 com unidades temporárias
JSON
"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, "PV64" ]}, "KeyName" : { "Ref" : "KeyName" }, "InstanceType" : "m1.small", "SecurityGroups" : [{ "Ref" : "Ec2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc", "VirtualName" : "ephemeral0" } ] } }
YAML
EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [ AWSRegionArch2AMI, !Ref 'AWS::Region', PV64 ] KeyName: !Ref KeyName InstanceType: m1.small SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName: /dev/sdc VirtualName: ephemeral0
Atribuir um IP elástico do Amazon EC2 usando o snippet AWS::EC2::EIP
Este exemplo mostra como atribuir um endereço IP elástico do Amazon EC2 e atribuí-lo a uma instância do Amazon EC2 usando um recurso AWS::EC2::EIP.
JSON
"MyEIP" : { "Type" : "AWS::EC2::EIP", "Properties" : { "InstanceId" : { "Ref" : "
logical name of an AWS::EC2::Instance resource
" } } }
YAML
MyEIP: Type: AWS::EC2::EIP Properties: InstanceId: !Ref Logical name of an AWS::EC2::Instance resource
Atribuir um IP elástico existente a uma instância do Amazon EC2 usando o snippet AWS::EC2::EIPAssociation
Este exemplo mostra como atribuir um endereço IP elástico Amazon EC2 existente a uma instância do Amazon EC2 usando um recurso AWS::EC2::EIPAssociation.
JSON
"IPAssoc" : { "Type" : "AWS::EC2::EIPAssociation", "Properties" : { "InstanceId" : { "Ref" : "
logical name of an AWS::EC2::Instance resource
" }, "EIP" : "existing Elastic IP address
" } }
YAML
IPAssoc: Type: AWS::EC2::EIPAssociation Properties: InstanceId: !Ref
Logical name of an AWS::EC2::Instance resource
EIP:existing Elastic IP Address
Atribuir um IP elástico de VPC existente a uma instância do Amazon EC2 usando o snippet AWS::EC2::EIPAssociation
Este exemplo mostra como atribuir um endereço IP elástico de VPC existente a uma instância do Amazon EC2 usando um recurso AWS::EC2::EIPAssociation.
JSON
"VpcIPAssoc" : { "Type" : "AWS::EC2::EIPAssociation", "Properties" : { "InstanceId" : { "Ref" : "
logical name of an AWS::EC2::Instance resource
" }, "AllocationId" : "existing VPC Elastic IP allocation ID
" } }
YAML
VpcIPAssoc: Type: AWS::EC2::EIPAssociation Properties: InstanceId: !Ref
Logical name of an AWS::EC2::Instance resource
AllocationId:Existing VPC Elastic IP allocation ID
Trechos do modelo da interface de rede elástica (ENI)
VPC_EC2_Instance_With_ENI
Modelo de exemplo que descreve como criar uma instância com duas interfaces de rede elástica (ENI). A exemplo pressupõe que você já criou uma VPC.
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" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0" } ] } }, "WebSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "VpcId" : { "Ref" : "VpcId" }, "GroupDescription" : "Enable HTTP access via user defined port", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : 80, "ToPort" : 80, "CidrIp" : "0.0.0.0/0" } ] } }, "controlXface" : { "Type" : "AWS::EC2::NetworkInterface", "Properties" : { "SubnetId" : { "Ref" : "SubnetId" }, "Description" :"Interface for control traffic such as SSH", "GroupSet" : [ {"Ref" : "SSHSecurityGroup"} ], "SourceDestCheck" : "true", "Tags" : [ {"Key" : "Network", "Value" : "Control"}] } }, "webXface" : { "Type" : "AWS::EC2::NetworkInterface", "Properties" : { "SubnetId" : { "Ref" : "SubnetId" }, "Description" :"Interface for web traffic", "GroupSet" : [ {"Ref" : "WebSecurityGroup"} ], "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::Join" : ["",[ "#!/bin/bash -ex","\n", "\n","yum install ec2-net-utils -y","\n", "ec2ifup eth1","\n", "service httpd start"]]} } } } }
YAML
Resources: ControlPortAddress: Type: AWS::EC2::EIP Properties: Domain: vpc AssociateControlPort: Type: AWS::EC2::EIPAssociation Properties: AllocationId: !GetAtt ControlPortAddress.AllocationId NetworkInterfaceId: !Ref controlXface WebPortAddress: Type: AWS::EC2::EIP Properties: Domain: vpc AssociateWebPort: Type: AWS::EC2::EIPAssociation Properties: AllocationId: !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: - !Ref SSHSecurityGroup SourceDestCheck: true Tags: - Key: Network Value: Control webXface: Type: AWS::EC2::NetworkInterface Properties: SubnetId: !Ref SubnetId Description: Interface for controlling traffic such as SSH GroupSet: - !Ref WebSecurityGroup SourceDestCheck: true Tags: - Key: Network Value: Web Ec2Instance: Type: AWS::EC2::Instance Properties: ImageId: !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
Recurso de instância do Amazon EC2
Este trecho mostra um recurso AWS::EC2::Instance simples.
JSON
"MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "AvailabilityZone" : "
us-east-1a
", "ImageId" : "ami-0ff8a91507f77f867" } }
YAML
MyInstance: Type: AWS::EC2::Instance Properties: AvailabilityZone: us-east-1a ImageId: ami-0ff8a91507f77f867
Instância do Amazon EC2 com propriedades Volume, Tag e UserData
Este trecho mostra um recurso AWS::EC2::Instance com um volume do Amazon EC2, uma tag e uma propriedade de dados do usuário. Todos os recursos AWS::EC2::SecurityGroup, AWS::SNS::Topic e AWS::EC2::Volume devem ser definidos no mesmo modelo. Além disso, a referência ao KeyName
é um parâmetro que deve ser definido na seção Parameters do modelo.
JSON
"MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "SecurityGroups" : [ { "Ref" : "
logical name of AWS::EC2::SecurityGroup resource
" } ], "UserData" : { "Fn::Base64" : { "Fn::Join" : [ ":", [ "PORT=80", "TOPIC=", { "Ref" : "logical name of an AWS::SNS::Topic resource
" } ] ] } }, "InstanceType" : "m1.small", "AvailabilityZone" : "us-east-1a
", "ImageId" : "ami-0ff8a91507f77f867", "Volumes" : [ { "VolumeId" : { "Ref" : "logical name of AWS::EC2::Volume resource
" }, "Device" : "/dev/sdk" } ], "Tags" : [ { "Key" : "Name", "Value" : "MyTag" } ] } }
YAML
MyInstance: Type: AWS::EC2::Instance Properties: KeyName: !Ref KeyName SecurityGroups: - !Ref
logical name of AWS::EC2::SecurityGroup resource
UserData: Fn::Base64: !Sub | PORT=80 TOPIC=${logical name of an AWS::SNS::Topic resource
} InstanceType: m1.small AvailabilityZone: us-east-1a ImageId: ami-0ff8a91507f77f867 Volumes: - VolumeId: !Reflogical name of AWS::EC2::Volume resource
Device: /dev/sdk Tags: - Key: Name Value: MyTag
Recurso de instância do Amazon EC2 com um domínio do Amazon SimpleDB
Este trecho mostra um recurso AWS::EC2::Instance com um domínio do Amazon SimpleDB especificado em UserData.
JSON
"MyInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "Domain=", { "Ref" : "
logical name of an AWS::SDB::Domain resource
" } ] ] } }, "AvailabilityZone" : "us-east-1a
", "ImageId" : "ami-0ff8a91507f77f867" } }
YAML
MyInstance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: !Sub | Domain=${
logical name of an AWS::SDB::Domain resource
} AvailabilityZone: us-east-1a ImageId: ami-0ff8a91507f77f867
Recurso do grupo de segurança do Amazon EC2 com duas regras de entrada de intervalo de CIDR
Este trecho mostra um recurso AWS::EC2::SecurityGroup que descreve duas regras de entrada que dão acesso a um intervalo de CIDR especificado para o protocolo TCP nas portas especificadas.
JSON
"ServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "allow connections from specified CIDR ranges", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0" },{ "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "192.168.1.1/32" } ] } }
YAML
ServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: allow connections from specified CIDR ranges SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 192.168.1.1/32
Recurso do grupo de segurança do Amazon EC2 com duas regras de entrada de grupo de segurança
Este trecho mostra um recurso AWS::EC2::SecurityGroup que descreve duas regras de entrada de security group. A primeira regra de entrada concede acesso ao grupo de segurança myadminsecuritygroup existente, que é de propriedade da conta 1234-5678-9012 da AWS, para o protocolo TCP na porta 22. A segunda regra de entrada concede acesso ao security group mysecuritygroupcreatedincfn para TCP na porta 80. Essa regra de entrada usa a função intrínseca Ref para fazer referência a um security group (cujo nome lógico é mysecuritygroupcreatedincfn) criado no mesmo modelo. Você deve declarar um valor para as propriedades SourceSecurityGroupName
e SourceSecurityGroupOwnerId
.
JSON
"ServerSecurityGroupBySG" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "allow connections from specified source security group", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "SourceSecurityGroupName" : "
myadminsecuritygroup
", "SourceSecurityGroupOwnerId" : "123456789012
" }, { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "SourceSecurityGroupName" : {"Ref" : "mysecuritygroupcreatedincfn
"} } ] } }
YAML
ServerSecurityGroupBySG: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: allow connections from specified source security group SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupName: myadminsecuritygroup SourceSecurityGroupOwnerId: 123456789012 - IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupName: !Ref mysecuritygroupcreatedincfn
Recurso de grupo de segurança do Amazon EC2 com regra de entrada de LoadBalancer
Este modelo mostra um recurso AWS::EC2::SecurityGroup que contém uma regra de entrada de security group que concede acesso ao LoadBalancer myELB para TCP na porta 80. A regra usa as propriedades SourceSecurityGroup.OwnerAlias
e SourceSecurityGroup.GroupName
do recurso myELB para especificar o grupo de segurança de origem do LoadBalancer.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "myELB": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "AvailabilityZones": [ "eu-west-1a" ], "Listeners": [ { "LoadBalancerPort": "80", "InstancePort": "80", "Protocol": "HTTP" } ] } }, "myELBIngressGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription": "ELB ingress group", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "SourceSecurityGroupOwnerId": { "Fn::GetAtt": [ "myELB", "SourceSecurityGroup.OwnerAlias" ] }, "SourceSecurityGroupName": { "Fn::GetAtt": [ "myELB", "SourceSecurityGroup.GroupName" ] } } ] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Resources: myELB: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: - eu-west-1a Listeners: - LoadBalancerPort: '80' InstancePort: '80' Protocol: HTTP myELBIngressGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: ELB ingress group SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 SourceSecurityGroupOwnerId: !GetAtt myELB.SourceSecurityGroup.OwnerAlias SourceSecurityGroupName: !GetAtt myELB.SourceSecurityGroup.GroupName
Como usar AWS::EC2::SecurityGroupIngress para criar recursos de grupo de segurança do Amazon EC2 mutuamente referentes
Esse trecho mostra dois recursos AWS::EC2::SecurityGroupIngress que adicionam regras mútuas de entrada aos security groups SGroup1 e SGroup2 do EC2. O recurso SGroup1Ingress permite a entrada do SGroup2 por meio da porta 80 de TCP/IP no SGroup1. O recurso SGroup2Ingress permite a entrada do SGroup1 por meio da porta 80 de TCP/IP no SGroup2.
Se você estiver usando uma Amazon VPC, use o recurso AWS::EC2::SecurityGroup
e especifique a propriedade VpcId
.
JSON
"SGroup1" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "EC2 Instance access" } }, "SGroup2" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "EC2 Instance access" } }, "SGroup1Ingress" : { "Type" : "AWS::EC2::SecurityGroupIngress", "Properties" : { "GroupName" : { "Ref" : "SGroup1" }, "IpProtocol" : "tcp", "ToPort" : "80", "FromPort" : "80", "SourceSecurityGroupName" : { "Ref" : "SGroup2" } } }, "SGroup2Ingress" : { "Type" : "AWS::EC2::SecurityGroupIngress", "Properties" : { "GroupName" : { "Ref" : "SGroup2" }, "IpProtocol" : "tcp", "ToPort" : "80", "FromPort" : "80", "SourceSecurityGroupName" : { "Ref" : "SGroup1" } } }
YAML
SGroup1: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance access SGroup2: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: EC2 Instance access SGroup1Ingress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: !Ref SGroup1 IpProtocol: tcp ToPort: 80 FromPort: 80 SourceSecurityGroupName: !Ref SGroup2 SGroup2Ingress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: !Ref SGroup2 IpProtocol: tcp ToPort: 80 FromPort: 80 SourceSecurityGroupName: !Ref SGroup1
Recurso de volume do Amazon EC2
Este trecho mostra um recurso de volume simples do Amazon EC2 com um atributo DeletionPolicy definido como Snapshot. Com a DeletionPolicy Snapshot definida, o AWS CloudFormation obterá um snapshot desse volume antes de excluí-lo durante a exclusão da pilha. Não deixe de especificar um valor para SnapShotId
ou um valor para Size
, mas não ambos. Remover aquele do qual você não precisa.
JSON
"MyEBSVolume" : { "Type" : "AWS::EC2::Volume", "Properties" : { "Size" : "
specify a size if no SnapShotId
", "SnapshotId" : "specify a SnapShotId if no Size
", "AvailabilityZone" : { "Ref" : "AvailabilityZone" } }, "DeletionPolicy" : "Snapshot" }
YAML
MyEBSVolume: Type: AWS::EC2::Volume Properties: Size:
specify a size if no SnapshotId
SnapshotId:specify a SnapShotId if no Size
AvailabilityZone: !Ref AvailabilityZone DeletionPolicy: Snapshot
Recurso VolumeAttachment do Amazon EC2
Este trecho mostra os seguintes recursos: uma instância do Amazon EC2 que usa um Amazon Linux AMI na região Leste dos EUA (Norte da Virgínia), um grupo de segurança do EC2 que permite o acesso SSH a endereços IP, um novo volume do Amazon EBS dimensionado em 100 GB e na mesma zona de disponibilidade que a instância do EC2 e um anexo de volume que anexa o novo volume à instância do EC2.
JSON
"Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "ImageId" : "ami-0ff8a91507f77f867" } }, "InstanceSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable SSH access via port 22", "SecurityGroupIngress" : [ { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0" } ] } }, "NewVolume" : { "Type" : "AWS::EC2::Volume", "Properties" : { "Size" : "100", "AvailabilityZone" : { "Fn::GetAtt" : [ "Ec2Instance", "AvailabilityZone" ]} } }, "MountPoint" : { "Type" : "AWS::EC2::VolumeAttachment", "Properties" : { "InstanceId" : { "Ref" : "Ec2Instance" }, "VolumeId" : { "Ref" : "NewVolume" }, "Device" : "/dev/sdh" } } }
YAML
Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: SecurityGroups: - !Ref InstanceSecurityGroup ImageId: ami-0ff8a91507f77f867 InstanceSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Enable SSH access via port 22 SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 NewVolume: Type: AWS::EC2::Volume Properties: Size: 100 AvailabilityZone: !GetAtt Ec2Instance.AvailabilityZone MountPoint: Type: AWS::EC2::VolumeAttachment Properties: InstanceId: !Ref Ec2Instance VolumeId: !Ref NewVolume Device: /dev/sdh
Instância do Amazon EC2 em um grupo de segurança padrão da VPC
Sempre que você cria uma VPC, a AWS cria automaticamente os recursos padrão para essa VPC, como um grupo de segurança. No entanto, quando você define uma VPC em modelos AWS CloudFormation, você ainda não tem os IDs físicos desses recursos padrão. Para obter os IDs, use a função intrínseca Fn::GetAtt. Dessa forma, você pode usar recursos padrão, em vez de criar novos recursos em seu modelo. Por exemplo, o trecho de modelo a seguir associa o grupo de segurança padrão da VPC myVPC
à instância myInstance
do Amazon EC2.
JSON
"myVPC": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": {"Ref": "myVPCCIDRRange"}, "EnableDnsSupport": false, "EnableDnsHostnames": false, "InstanceTenancy": "default" } }, "myInstance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId": { "Fn::FindInMap": ["AWSRegionToAMI",{"Ref": "AWS::Region"},"64"] }, "SecurityGroupIds" : [{"Fn::GetAtt": ["myVPC", "DefaultSecurityGroup"]}], "SubnetId" : {"Ref" : "mySubnet"} } }
YAML
myVPC: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref myVPCCIDRRange EnableDnsSupport: false EnableDnsHostnames: false InstanceTenancy: default myInstance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [ AWSRegionToAMI , !Ref 'AWS::Region', 64 ] SecurityGroupIds: - !GetAtt myVPC.DefaultSecurityGroup SubnetId: !Ref mySubnet
Rota do Amazon EC2 com gateway da Internet somente de saída
O modelo a seguir configura um Internet Gateway somente de saída usado com uma rota do EC2.
JSON
{ "Resources": { "DefaultIpv6Route": { "Properties": { "DestinationIpv6CidrBlock": "::/0", "EgressOnlyInternetGatewayId": { "Ref": "EgressOnlyInternetGateway" }, "RouteTableId": { "Ref": "RouteTable" } }, "Type": "AWS::EC2::Route" }, "EgressOnlyInternetGateway": { "Properties": { "VpcId": { "Ref": "VPC" } }, "Type": "AWS::EC2::EgressOnlyInternetGateway" }, "RouteTable": { "Properties": { "VpcId": { "Ref": "VPC" } }, "Type": "AWS::EC2::RouteTable" }, "VPC": { "Properties": { "CidrBlock": "10.0.0.0/16" }, "Type": "AWS::EC2::VPC" } } }
YAML
Resources: 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