本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS CloudFormation設定 Amazon EC2 執行個體
下列程式碼片段示範了如何使用 AWS CloudFormation設定 Amazon EC2 執行個體。
一般 Amazon EC2 組態
下列程式碼片段示範了使用 AWS CloudFormation設定 Amazon EC2 執行個體的一般組態。
範例程式碼片段
在指定的可用區域建立 Amazon EC2 執行個體
下列程式碼片段使用 AWS::EC2::Instance 資源,在指定的可用區域建立 Amazon EC2 執行個體。可用區域的代碼為其區域代碼,後續跟著一個字母識別符。您可在單一可用區域啟動執行個體。
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "AvailabilityZone": "
aa-example-1a
", "ImageId": "ami-1234567890abcdef0
" } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: AvailabilityZone:
aa-example-1a
ImageId:ami-1234567890abcdef0
使用 EBS 磁碟區和使用者資料設定標記的 Amazon EC2 執行個體
下列程式碼片段會建立具有標籤、EBS 磁碟區和使用者資料的 Amazon EC2 執行個體。它會使用 AWS::EC2::Instance 資源。在相同的範本中,您必須定義 AWS::EC2::SecurityGroup 資源、AWS::SNS::Topic 資源和 AWS::EC2::Volume 資源。必須在範本的 Parameters
區段中定義 KeyName
。
標籤可協助您根據您的偏好設定分類 AWS 資源,例如依用途、擁有者或環境。使用者資料允許在啟動期間,將自訂指令碼或資料佈建至執行個體。此資料有助於在初始化期間,對執行個體執行任務自動化、軟體組態設定、套件安裝及其他動作。
如需有關標記資源的詳細資訊,請參閱標記您的 Amazon EC2 資源。
如需使用者資料的相關資訊,請參閱使用執行個體中繼資料來管理您的 EC2 執行個體。
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "KeyName": { "Ref": "KeyName" }, "SecurityGroups": [ { "Ref": "Ec2SecurityGroup" } ], "UserData": { "Fn::Base64": { "Fn::Join": [ ":", [ "PORT=80", "TOPIC=", { "Ref": "MySNSTopic" } ] ] } }, "InstanceType": "
aa.size
", "AvailabilityZone": "aa-example-1a
", "ImageId": "ami-1234567890abcdef0
", "Volumes": [ { "VolumeId": { "Ref": "MyVolumeResource" }, "Device": "/dev/sdk" } ], "Tags": [ { "Key": "Name", "Value": "MyTag" } ] } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: KeyName: !Ref KeyName SecurityGroups: - !Ref Ec2SecurityGroup UserData: Fn::Base64: Fn::Join: - ":" - - "PORT=80" - "TOPIC=" - !Ref MySNSTopic InstanceType:
aa.size
AvailabilityZone:aa-example-1a
ImageId:ami-1234567890abcdef0
Volumes: - VolumeId: !Ref MyVolumeResource Device: "/dev/sdk" Tags: - Key: Name Value: MyTag
在 Amazon EC2 執行個體啟動的使用者資料中定義 DynamoDB 資料表名稱
下列程式碼片段會建立 Amazon EC2 執行個體,並在使用者資料中定義 DynamoDB 資料表名稱,以便在啟動時傳遞至執行個體。它會使用 AWS::EC2::Instance 資源。您可在使用者資料中定義參數或動態值,以便在啟動時傳遞 EC2 執行個體。
如需使用者資料的詳細資訊,請參閱使用執行個體中繼資料來管理您的 EC2 執行個體。
JSON
"Ec2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "TableName=", { "Ref": "DynamoDBTableName" } ] ] } }, "AvailabilityZone": "
aa-example-1a
", "ImageId": "ami-1234567890abcdef0
" } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: UserData: Fn::Base64: Fn::Join: - '' - - 'TableName=' - Ref: DynamoDBTableName AvailabilityZone:
aa-example-1a
ImageId:ami-1234567890abcdef0
使用 DeletionPolicy
建立 Amazon EBS 磁碟區
下列程式碼片段使用 Amazon EC2 AWS::EC2::Volume 資源來建立 Amazon EBS 磁碟區。您可使用 Size
或 SnapshotID
屬性來定義磁碟區,但不能同時使用兩者。DeletionPolicy
屬性設定為在刪除堆疊時建立磁碟區快照。
如需有關 DeletionPolicy
屬性的詳細資訊,請參閱 DeletionPolicy
屬性。
如需有關建立 Amazon EBS 磁碟區的詳細資訊,請參閱建立 Amazon EBS 磁碟區。
JSON
此程式碼片段會建立具有指定大小的 Amazon EBS 磁碟區。大小設定為 10,但您可視需進行調整。AWS::EC2::Volume 資源允許您指定大小或快照 ID,但不能同時指定兩者。
"MyEBSVolume": { "Type": "AWS::EC2::Volume", "Properties": { "Size": "
10
", "AvailabilityZone": { "Ref": "AvailabilityZone" } }, "DeletionPolicy": "Snapshot" }
此程式碼片段使用提供的快照 ID 來建立 Amazon EBS 磁碟區。AWS::EC2::Volume 資源允許您指定大小或快照 ID,但不能同時指定兩者。
"MyEBSVolume": { "Type": "AWS::EC2::Volume", "Properties": { "SnapshotId" : "
snap-1234567890abcdef0
", "AvailabilityZone": { "Ref": "AvailabilityZone" } }, "DeletionPolicy": "Snapshot" }
YAML
此程式碼片段會建立具有指定大小的 Amazon EBS 磁碟區。大小設定為 10,但您可視需進行調整。AWS::EC2::Volume 資源允許您指定大小或快照 ID,但不能同時指定兩者。
MyEBSVolume: Type: AWS::EC2::Volume Properties: Size:
10
AvailabilityZone: Ref: AvailabilityZone DeletionPolicy: Snapshot
此程式碼片段使用提供的快照 ID 來建立 Amazon EBS 磁碟區。AWS::EC2::Volume 資源允許您指定大小或快照 ID,但不能同時指定兩者。
MyEBSVolume: Type: AWS::EC2::Volume Properties: SnapshotId:
snap-1234567890abcdef0
AvailabilityZone: Ref: AvailabilityZone DeletionPolicy: Snapshot
指定執行個體的區塊型裝置映射
區塊型裝置映射定義區塊型儲存裝置,其中包括要附接至執行個體的執行個體儲存體磁碟區和 EBS 磁碟區。您可在建立 AMI 時指定區塊型裝置映射,如此從 AMI 啟動的所有執行個體都會使用該映射。或者,也可在啟動執行個體時指定區塊型裝置映射,如此該映射會覆寫啟動執行個體之 AMI 中指定的映射。
您可使用下列範本程式碼片段,以使用 AWS::EC2::Instance 資源的 BlockDeviceMappings
屬性為 EBS 或執行個體儲存體磁碟區指定區塊型裝置映射。
如需區塊型裝置映射的詳細資訊,請參閱《Amazon EC2 使用者指南》https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html中的區塊型裝置映射。
為兩個 EBS 磁碟區指定區塊型裝置映射
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
為執行個體儲存體磁碟區指定區塊型裝置映射
JSON
"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "
AWSRegionArch2AMI
", { "Ref" : "AWS::Region" }, "HVM64
" ]}, "KeyName" : { "Ref" : "KeyName" }, "InstanceType": { "Ref": "InstanceType" }, "SecurityGroups" : [{ "Ref" : "Ec2SecurityGroup" }], "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sdc
", "VirtualName" : "ephemeral0
" } ] } }
YAML
EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap -
AWSRegionArch2AMI
- !Ref AWS::Region - HVM64 KeyName: !Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName:/dev/sdc
VirtualName:ephemeral0