使用 AWS CloudFormation設定 Amazon EC2 執行個體 - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 磁碟區。您可使用 SizeSnapshotID 屬性來定義磁碟區,但不能同時使用兩者。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