メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::AutoScaling::LaunchConfiguration

AWS::AutoScaling::LaunchConfiguration タイプは、Auto Scaling グループが Auto Scaling グループ内の Amazon EC2 インスタンスの設定に使用する Auto Scaling 起動設定を作成するものです。

重要

LaunchConfiguration リソースのプロパティを更新すると、AWS CloudFormation によってそのリソースが削除されるとともに、更新後のプロパティを備えた新しい名前の起動設定が新たに作成されます。この更新アクションによって、Auto Scaling グループで実行中の Amazon EC2 インスタンスに変更が適用されることはありません。つまり、更新では LaunchConfiguration が置き換わるだけであり、Auto Scaling グループが新しいインスタンスを起動した場合には更新後の設定を取得するものの、既存のインスタンスは起動した当初の設定のままで実行されます。この動作は、Auto Scaling グループに手作業で同じような変更を実施した場合と同じです。

LaunchConfiguration リソースの更新に伴って既存のインスタンスを更新したい場合には、AWS::AutoScaling::AutoScalingGroup リソースの更新ポリシー属性を指定する必要があります。詳細については、「UpdatePolicy」を参照してください。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

Copy
{ "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "AssociatePublicIpAddress" : Boolean, "BlockDeviceMappings" : [ BlockDeviceMapping, ... ], "ClassicLinkVPCId" : String, "ClassicLinkVPCSecurityGroups" : [ String, ... ], "EbsOptimized" : Boolean, "IamInstanceProfile" : String, "ImageId" : String, "InstanceId" : String, "InstanceMonitoring" : Boolean, "InstanceType" : String, "KernelId" : String, "KeyName" : String, "PlacementTenancy" : String, "RamDiskId" : String, "SecurityGroups" : [ SecurityGroup, ... ], "SpotPrice" : String, "UserData" : String } }

YAML

Copy
Type: "AWS::AutoScaling::LaunchConfiguration" Properties: AssociatePublicIpAddress: Boolean BlockDeviceMappings: - BlockDeviceMapping ClassicLinkVPCId: String ClassicLinkVPCSecurityGroups: - 文字列 EbsOptimized: Boolean IamInstanceProfile: String ImageId: String InstanceId: String InstanceMonitoring: Boolean InstanceType: String KernelId: String KeyName: String PlacementTenancy: String RamDiskId: String SecurityGroups: - SecurityGroup SpotPrice: String UserData: String

プロパティ

AssociatePublicIpAddress

VPC の Amazon EC2 インスタンスで、Auto Scaling グループのインスタンスがパブリック IP アドレスを受け取るかどうかを示します。true の場合には、Auto Scaling の各インスタンスが一意のパブリック IP を受け取ります。

注記

このリソースにパブリック IP アドレスが割り当てられており、同じテンプレートに定義されている VPC が関連付けられている場合は、DependsOn 属性を使用して VPC ゲートウェイのアタッチメントへの依存関係を宣言する必要があります。詳細については、「DependsOn 属性」を参照してください。

Required: No

Type: Boolean

更新に伴う要件: 置換

BlockDeviceMappings

ブロックデバイスをインスタンスに公開する方法を指定します。仮想デバイスと EBS ボリュームを指定できます。

Required: No

: BlockDeviceMappings のリスト。

更新に伴う要件: 置換

ClassicLinkVPCId

EC2-Classic インスタンスをリンクする ClassicLink が有効な VPC の ID。このプロパティは EC2-Classic インスタンスに対してのみ指定できます。詳細については、Amazon Elastic Compute Cloud ユーザーガイドの「ClassicLink」を参照してください。

Required: No

Type: String

更新に伴う要件: 置換

ClassicLinkVPCSecurityGroups

ClassicLinkVPCId プロパティに指定した VPC の 1 つ以上のセキュリティグループの ID。

Required: Conditional。ClassicLinkVPCId プロパティを指定した場合は、このプロパティを指定する必要があります。

Type: List of String values

更新に伴う要件: 置換

EbsOptimized

起動設定を EBS の I/O 向けに最適化するかどうかを指定します。この最適化を実行すると、Amazon EBS に特化したスループットが得られるほか、設定スタックが最適化されるため、EBS の I/O パフォーマンスを最大限引き出すことができるようになります。

EBS 最適化インスタンスの使用時には、追加料金が発生します。料金およびサポートされるインスタンスタイプの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドEBS 最適化インスタンス を参照してください。

Required: No このプロパティを指定しない場合には、"false" を使用します。

Type: Boolean

更新に伴う要件: 置換

IamInstanceProfile

名前か、インスタンスの IAM ロールに関連付けられているインスタンスプロファイルの Amazon リソースネーム (ARN) を指定します。インスタンスプロファイルには、IAM ロールが含まれています。

Required: No

Type: String (1~1600 文字)

更新に伴う要件: 置換

ImageId

登録時に割り当てられた Amazon Machine Image (AMI) の一意の ID が指定されます。

Required: Yes

Type: String

更新に伴う要件: 置換

InstanceId

起動設定の作成に使用する Amazon EC2 インスタンスの ID。起動設定が既存の Amazon EC2 インスタンスから設定を使用する場合には、このプロパティを使用します。

インスタンスを使用して起動設定を作成した場合には、プロパティはすべて、そのインスタンスから取得されます。ただし、BlockDeviceMappingAssociatePublicIpAddress は除きます。インスタンスから取得したプロパティは、起動設定で指定することによってオーバーライドできます。

Required: No

Type: String

更新に伴う要件: 置換

InstanceMonitoring

インスタンスの詳細モニタリングが Auto Scaling グループに対して有効であるかを示します。 デフォルトでは、このプロパティは true (有効) に設定されています。

詳細モニタリングを有効にすると、Amazon CloudWatch (CloudWatch) によって各分ごとにメトリクスが生成され、アカウントに料金が発生します。 詳細モニタリングを無効にすると、CloudWatch は 5 分ごとにメトリクスを生成します。 詳細については、「Auto Scaling Developer Guide」の「Monitor Your Auto Scaling Instances」を参照してください。

Required: No

Type: Boolean

更新に伴う要件: 置換

InstanceType

EC2 インスタンスのインスタンスタイプが指定されます。

Required: Yes

Type: String

更新に伴う要件: 置換

KernelId

EC2 AMI に関連付けられているカーネルの ID を指定します。

Required: No

Type: String

更新に伴う要件: 置換

KeyName

EC2 のキーペアの名前を指定します。

Required: No

Type: String

更新に伴う要件: 置換

PlacementTenancy

インスタンスのテナンシー。テナンシーが dedicated のインスタンスは、シングルテナントハードウェアで実行され、VPC でのみ起動できます。ハードウェア専有インスタンスを共有テナンシー VPC (インスタンスのプレイスメントテナンシー属性をデフォルトに設定した VPC) で起動するには、このパラメーターの値を dedicated に設定する必要があります。詳細については、Auto Scaling API リファレンスの「CreateLaunchConfiguration」を参照してください。

このプロパティを指定した場合、AWS::AutoScaling::AutoScalingGroup リソースの VPCZoneIdentifier プロパティに 1 つ以上のサブネットを指定する必要があります。

Required: No

Type: String

更新に伴う要件: 置換

RamDiskId

選択する RAM ディスクの ID。一部のカーネルでは起動時に別途ドライバが必要となります。RAM ディスクを指定する必要があるかどうかについては、カーネルの要件を確認してください。カーネル要件を確認するには、AWS リソースセンターでカーネル ID を検索します。

Required: No

Type: String

更新に伴う要件: 置換

SecurityGroups

Auto Scaling グループの Amazon EC2 インスタンスに割り当てる EC2 セキュリティグループが含まれるリスト。このリストには、既存の EC セキュリティグループの名前のほか、テンプレートで作成した AWS::EC2::SecurityGroup2:: リソースのリファレンスを含めることもできます。インスタンスを VPC で起動する場合には、Amazon VPC セキュリティグループ ID を指定します。

Required: No

Type: EC2 セキュリティグループのリスト。

更新に伴う要件: 置換

SpotPrice

この Auto Scaling グループのスポット価格。スポット価格が設定されている場合には、現在のスポット価格がテンプレートで指定されている金額を下回ると、Auto Scaling グループが起動します。

Auto Scaling グループにスポット価格を指定した場合には、そのグループの DesiredCapacity の設定にかかわりなく、スポット価格が条件を満たしたときにのみ、そのグループが起動します。

Auto Scaling グループのスポット価格の設定の詳細については、Auto Scaling 開発者ガイドの「Auto Scaling を使用してスポットインスタンスを起動する」を参照してください。

Required: No

Type: String

更新に伴う要件: 置換

注記

新しい起動設定を作成して入札価格を変更すると、実行中のインスタンスは、そのインスタンスの入札価格が現在のスポット価格を上回っているかぎり、継続して実行されます。

UserData

起動した EC2 インスタンスが利用できるユーザーデータ。

Required: No

Type: String

更新に伴う要件: 置換

戻り値

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref によりリソース名が返されます。 例:

Copy
{ "Ref": "LaunchConfig" }

論理 ID が LaunchConfig のリソースについては、Ref は、mystack-mylaunchconfig-1DDYF1E3B3I などの Auto Scaling の起動設定名を返します。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

テンプレートの例

ブロックデバイスに関する LaunchConfig

この例では、2 つの Amazon Elastic Block Store マッピングに関する起動設定を示しています。

JSON

Copy
"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" }}, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "InstanceType" : { "Ref" : "InstanceType" }, "BlockDeviceMappings" : [ { "DeviceName" : "/dev/sda1", "Ebs" : { "VolumeSize" : "50", "VolumeType" : "io1", "Iops" : 200 } }, { "DeviceName" : "/dev/sdm", "Ebs" : { "VolumeSize" : "100", "DeleteOnTermination" : "true"} } ] } }

YAML

Copy
LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: KeyName: Ref: "KeyName" ImageId: Fn::FindInMap: - "AWSRegionArch2AMI" - Ref: "AWS::Region" - Fn::FindInMap: - "AWSInstanceType2Arch" - Ref: "InstanceType" - "Arch" UserData: Fn::Base64: Ref: "WebServerPort" SecurityGroups: - Ref: "InstanceSecurityGroup" InstanceType: Ref: "InstanceType" BlockDeviceMappings: - DeviceName: "/dev/sda1" Ebs: VolumeSize: "50" VolumeType: "io1" Iops: 200 - DeviceName: "/dev/sdm" Ebs: VolumeSize: "100" DeleteOnTermination: "true"

Auto Scaling グループのスポット価格に関する LaunchConfig

この例では、Auto Scaling グループのスポット価格に関する起動設定を示しています。この起動設定は、現在のスポット価格がテンプレートに定める金額 (0.05) を下回る場合にのみアクティブになります。

JSON

Copy
"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "SpotPrice" : "0.05", "InstanceType" : { "Ref" : "InstanceType" } } }

YAML

Copy
LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: KeyName: Ref: "KeyName" ImageId: Fn::FindInMap: - "AWSRegionArch2AMI" - Ref: "AWS::Region" - Fn::FindInMap: - "AWSInstanceType2Arch" - Ref: "InstanceType" - "Arch" SecurityGroups: - Ref: "InstanceSecurityGroup" SpotPrice: "0.05" InstanceType: Ref: "InstanceType"

IAM のインスタンスプロファイルに関する LaunchConfig

ここでは、IamInstanceProfile プロパティを使用した起動設定を示します。

AWS::AutoScaling::LaunchConfiguration の設定のみを示しています。ここで "RootInstanceProfile" として示した AWS::IAM::InstanceProfile オブジェクトの定義や、そこからのリファレンスの詳細など、テンプレートの全容については、「auto_scaling_with_instance_profile.template」を参照してください。

JSON

Copy
"myLCOne": { "Type": "AWS::AutoScaling::LaunchConfiguration", "Properties": { "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } ] }, "InstanceType": { "Ref": "InstanceType" }, "IamInstanceProfile": { "Ref": "RootInstanceProfile" } } }

YAML

Copy
myLCOne: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: ImageId: Fn::FindInMap: - "AWSRegionArch2AMI" - Ref: "AWS::Region" - Fn::FindInMap: - "AWSInstanceType2Arch" - Ref: "InstanceType" - "Arch" InstanceType: Ref: "InstanceType" IamInstanceProfile: Ref: "RootInstanceProfile"

PIOPS を指定した EBS 最適化ボリューム

PIOPS を指定した EBS 最適化ボリュームが含まれ、オートスケールの対象となるインスタンスが入った AWS CloudFormation スタックを作成できます。このようにすると、Amazon Elastic Compute Cloud ユーザーガイドの「EBS パフォーマンスの向上」で説明しているように、EBS-Backed インスタンスのパフォーマンスを向上させることができます。

このような起動設定を作成するときは、InstanceTypem1.large 以上に、EbsOptimizedtrue に設定してください。お客様の起動したインスタンスには AMI の作成時に選択した PIOPS の最適化された EBS ルートボリュームが含まれます。

警告

EBS 最適化インスタンスの使用時には、追加料金が発生します。詳細については、Amazon Elastic Compute Cloud ユーザーガイドの「​EBS 最適化インスタンス」を参照してください。

Auto Scaling 起動設定では PIOPS 設定をオーバーライドできないことから、起動設定の AMI で、目的の PIOPS を指定するブロックデバイスマッピングを設定する必要があります。この設定は、以下の特徴を備えたユーザー独自の EC2 AMI を作成することによって行うことができます。

  • インスタンスタイプ m1.large 以上。EBS 最適化には、これが必須です。

  • ボリュームタイプが "io1" の EBS-Backed AMI と、Auto Scaling によって起動するインスタンスに必要な IOPS の数字。

  • EBS ボリュームのサイズは、必要な IOPS に沿った値とする必要があります。ストレージの IOPS とギビバイト (GiB) 間には 10:1 という比率が存在します。つまり、PIOPS が 100 の場合、10 GiB 以上のストレージがルートボリュームに存在する必要があります。

Auto Scaling の起動設定では、この AMI を使用します。たとえば、起動設定では、PIOPS が設定され、 ID が ami-7430ba44ami- の EBS 最適化 AMI を以下のように使用します。

JSON

Copy
"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "KeyName" : { "Ref" : "KeyName" }, "ImageId" : "ami-7430ba44", "UserData" : { "Fn::Base64" : { "Ref" : "WebServerPort" } }, "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], "InstanceType" : "m1.large", "EbsOptimized" : "true" } }

YAML

Copy
LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Properties: KeyName: Ref: "KeyName" ImageId: "ami-7430ba44" UserData: Fn::Base64: Ref: "WebServerPort" SecurityGroups: - Ref: "InstanceSecurityGroup" InstanceType: "m1.large" EbsOptimized: "true"

以下の資料も参照してください。