翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EC2 テンプレートスニペット
EC2 ブロックデバイスマッピングの例
ブロックデバイスマッピングが指定された EC2 インスタンス
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
エフェメラルドライブが指定された EC2 インスタンス
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
AWS::EC2::EIP
スニペットを使用した Amazon EC2 Elastic IP の割り当て
この例では、AWS::EC2::EIP リソースを使用して Amazon EC2 Elastic IP アドレスを Amazon EC2 インスタンスに割り当てる方法を示します。
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
AWS::EC2::EIPAssociation
スニペットを使用した Amazon EC2 インスタンスへの既存の Elastic IP の割り当て
この例では、AWS::EC2::EIPAssociation リソースを使用して既存の Amazon EC2 Elastic IP アドレスを Amazon EC2 インスタンスに割り当てる方法を示します。
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
AWS::EC2::EIPAssociation
スニペットを使用した Amazon EC2 インスタンスへの既存の VPC Elastic IP の割り当て
この例では、AWS::EC2::EIPAssociation リソースを使用して既存の VPC Elastic IP アドレスを Amazon EC2インスタンスに割り当てる方法を示します。
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
Elastic Network Interface (ENI) のテンプレートスニペット
VPC_EC2_Instance_With_ENI
Elastic Network Interface (ENI) が 2 つ割り当てられたインスタンスの作成方法を示すサンプルテンプレートです。このサンプルは、すでに 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": [ { "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": { "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" } } } } } }
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: !Base64 'Fn::Sub': | #!/bin/bash -xe yum install ec2-net-utils -y ec2ifup eth1 service httpd start
Amazon EC2 Instance リソース
AWS::EC2::Instanceこのスニペットは簡単なリソースを示しています。
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
ボリューム、タグ、UserDataプロパティを含む Amazon EC2 インスタンス
このスニペットは、1 つの Amazon EC2 ボリューム、1 つのタグ、およびユーザーデータプロパティが指定された AWS::EC2::Instance
リソースを示します。AWS::EC2::SecurityGroup
リソース、AWS::SNS::Topic
リソース、および AWS::EC2::Volume
リソースはすべて、同じテンプレートで定義される必要があります。また、KeyName
のリファレンスはパラメーターです。これらのパラメーターは、テンプレートの Parameters セクションで定義されている必要があります。
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
Amazon EC2 ドメインが指定された Amazon SimpleDB Instance リソース
このスニペットは、で Amazon SimpleDB AWS::EC2::Instance ドメインが指定されているリソースを示しています。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
2 つの CIDR 範囲進入ルールが指定された Amazon EC2 セキュリティグループリソース
このスニペットは、AWS::EC2::SecurityGroup指定されたポート上のTCPプロトコルの指定されたCIDR範囲へのアクセスを許可する2つの進入ルールを記述するリソースを示しています。
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
2 つのセキュリティグループ進入ルールが指定された Amazon EC2 セキュリティグループリソース
このスニペットは、2 AWS::EC2::SecurityGroup つのセキュリティグループの進入ルールを説明するリソースを示しています。1 つ目の進入ルールでは、ポート 22 の TCP プロトコルに対し、1234-5678-9012 AWS アカウントによって所有される既存のセキュリティグループ myadminsecuritygroup へのアクセスが許可されます。2 つ目の進入ルールでは、ポート 80 の TCP に対し、セキュリティグループ mysecuritygroupcreatedincfn へのアクセスが許可されます。この進入ルールでは、Ref 組み込み関数を使用して、同じテンプレート内に作成された (論理名が mysecuritygroupcreatedincfn の) セキュリティグループを参照しています。SourceSecurityGroupName
と 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
LoadBalancer進入ルールが設定された Amazon EC2 セキュリティグループリソース
このテンプレートは、AWS::EC2::SecurityGroupポート 80 の LoadBalancer MyELB for TCP へのアクセスを許可するセキュリティグループの進入ルールを含むリソースを示しています。このルールは、MyELB SourceSecurityGroup.OwnerAlias
SourceSecurityGroup.GroupName
リソースのおよびプロパティを使用して、のソースセキュリティグループを指定します。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
AWS::EC2::SecurityGroupIngress
を使用して相互参照する Amazon EC2 セキュリティグループリソースの作成
このスニペットは、EC2 セキュリティグループ AWS::EC2::SecurityGroup sGroup1 と SGroup2 に相互進入ルールを追加する 2 つの進入リソースを示しています。SGroup1Ingress リソースは、SGroup2 からの TCP/IP ポート 80 を経由した SGroup1 への進入を可能にします。SGroup2Ingress リソースは、SGroup1 からの TCP/IP ポート 80 を経由した SGroup2 への進入を可能にします。
注記
Amazon VPC を使用している場合、AWS::EC2::SecurityGroup
リソースを使用して 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
Amazon EC2 ボリュームリソース
このスニペットは、DeletionPolicy属性が Snapshot に設定されたシンプルな Amazon EC2 ボリュームリソースを示しています。DeletionPolicyAWS CloudFormationスナップショットを設定すると、スタックの削除中に削除する前に、このボリュームのスナップショットを取得します。SnapShotId
または Size
のどちらかの値を指定してください。両方を指定することはできません。不要な方を削除してください。
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
アマゾン EC2 リソース VolumeAttachment
このスニペットには、1) 米国東部 (バージニア北部) リージョンの Amazon Linux AMI を使用した Amazon EC2 インスタンス、2) IP アドレスへの SSH アクセスを許可する EC2 セキュリティグループ、3) サイズが 100 GB の、EC2 インスタンスと同じアベイラビリティーゾーンに配置された新しい Amazon EBS ボリューム、4) 新しいボリュームを 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
デフォルトの VPC セキュリティグループの Amazon EC2 インスタンス
VPC を作成するたびに、AWS は自動的にその VPC 用のデフォルトのリソース (セキュリティグループなど) を作成します。ただし、AWS CloudFormation テンプレートで VPC を定義する場合は、まだこのようなデフォルトリソースの物理 ID がありません。ID を取得するには、Fn::GetAtt組み込み関数を使用します。この方法で、テンプレートに新しいリソースを作成する代わりにデフォルトのリソースを使用できます。たとえば、以下のテンプレートスニペットは myVPC
VPC のデフォルトセキュリティグループを myInstance
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
Egress-Only インターネットゲートウェイが指定された Amazon EC2 ルート
次のテンプレートは、EC2 ルートで使用される Egress-Only インターネットゲートウェイをセットアップします。
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