Amazon EC2 起動テンプレートを作成する
Amazon EC2 起動テンプレートを作成するには、インスタンス設定パラメータに独自の値を指定するか、既存の起動テンプレートまたは Amazon EC2 インスタンスから値を取得します。
起動テンプレートのすべてのパラメータに値を指定する必要はありません。起動テンプレートを作成するには、インスタンス設定パラメータを 1 つだけ指定する必要があります。指定しないパラメータを指定するには、コンソールの使用時に [起動テンプレートに含めない] を選択します。コマンドラインツールを使用する場合は、起動テンプレートで指定しないことを示すパラメータを含めないでください。
起動テンプレートで AMI を指定する場合は、AMI を選択するか、インスタンスの起動時に AMI を指す Systems Manager パラメータを指定できます。
起動テンプレートを使用してインスタンスを起動すると、起動テンプレートで指定された値を使用して、対応するインスタンスパラメータを設定します。起動テンプレートで値が指定されていない場合は、対応するインスタンスパラメータのデフォルト値が使用されます。
パラメータを指定して起動テンプレートを作成する
起動テンプレートを作成する際には、そのテンプレートの名と、少なくとも 1 つのインスタンス設定パラメーターを指定する必要があります。
各パラメータの説明については、「Amazon EC2 インスタンス設定パラメータのリファレンス」を参照してください。
- Console
-
コンソールを使用して起動テンプレートを作成するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[起動テンプレート]、[起動テンプレートの作成] の順に選択します。
-
[起動テンプレートの名前と説明] で、次の操作を行います。
-
[起動テンプレート名] に、起動テンプレートのわかりやすい名前を入力します。
-
[Template version description] (テンプレートバージョンの説明) に、起動テンプレートバージョンの短い説明を入力します。
-
作成時に起動テンプレートにタグを付けるには、[テンプレートタグ] を展開し、[新しいタグの追加] を選択して、タグのキーと値のペアを入力します。追加するタグごとに [新しいタグを追加] を選択します。
インスタンスの起動時に作成されるリソースにタグを付けるには、[Resource tags] (リソースタグ) のタグを指定する必要があります。詳細については、この手順のステップ 9 を参照してください。
-
[アプリケーションイメージと OS イメージ (Amazon マシンイメージ)] では、[起動テンプレートに含めない] を選択したままにするか、インスタンスのオペレーティングシステム (OS) を選択してから AMI を選択できます。または、AMI を指定する代わりに Systems Manager パラメータを指定することもできます。詳細については、「AMI ID のかわりに Systems Manager パラメータを使用する」を参照してください。
AMI は、インスタンスの起動に必要なオペレーティングシステムとソフトウェアを含むテンプレートです。
-
[インスタンスタイプ] で、[起動テンプレートに含めない] を選択したままにするか、インスタンスタイプを選択するか、インスタンス属性を指定して Amazon EC2 がそれらの属性でインスタンスタイプを識別できるようにすることができます。
インスタンスタイプによって、インスタンスに使用されるホストコンピュータのハードウェア構成 (CPU、メモリ、ストレージ、ネットワークキャパシティ) とサイズが決まります。
どのインスタンスタイプを選択するかわからない場合は、次の操作を実行できます。
-
[インスタンスタイプの比較] を選択して、vCPU の数、アーキテクチャ、メモリ量 (GiB)、ストレージ量 (GB)、ストレージタイプ、ネットワークパフォーマンスの属性によってさまざまなインスタンスタイプを比較します。
-
[アドバイスの取得] を選択して、EC2 インスタンスタイプファインダーからインスタンスタイプに関するガイダンスやアドバイスを取得します。詳細については、「EC2 インスタンスタイプファインダーからレコメンデーションを取得する」を参照してください。
AWS アカウントを作成してから 12 か月未満の場合は、[t2.micro] インスタンスタイプ、または [t2.micro] が利用できないリージョンで [t3.micro] インスタンスタイプを選択すると、無料利用枠の Amazon EC2 を使用できます。[t3.micro] インスタンスを起動すると、デフォルトで [Unlimited] モードになり、CPU 使用率に基づいて追加料金が発生する可能性があることに注意してください。インスタンスタイプが無料利用枠の下で適格である場合、それは [Free tier eligible] (無料利用枠適格) とラベル付けされます。
-
[キーペア (ログイン)] の [キーペア名] で、[起動テンプレートに含めない] を選択したままにするか、既存のキーペアを選択するか、新しいキーペアを作成します。
-
[ネットワーク設定] では、[起動テンプレートに含めない] を選択したままにするか、さまざまなネットワーク設定の値を指定できます。
-
[ストレージの設定] で、起動テンプレートで AMI を指定した場合、AMI にはルートボリューム ([ボリューム 1 (AMI ルート)]) を含む、1 つまたは複数のストレージボリュームが含まれます。オプションで、インスタンスにアタッチする追加のボリュームを指定できます。新しいボリュームを追加するには、[Add new volume] を選択します。
-
[リソースタグ] で、インスタンスの起動時に作成されるリソースにタグを付けるには、[タグの追加] を選択し、タグのキーと値のペアを入力します。[Resource types] (リソースタイプ) で、作成時にタグを付けるリソースを指定します。すべてのリソースに同じタグを指定することも、リソースごとに異なるタグを指定することもできます。追加するタグごとに [Add tag] (タグを追加) を選択します。
起動テンプレートの使用時に作成される次のリソースにタグを指定できます。
-
インスタンス
-
ボリューム
-
Elastic graphics
-
スポットインスタンスリクエスト
-
ネットワークインターフェイス
起動テンプレート自体にタグを付けるには、[Template tags] (テンプレートタグ) でタグを指定する必要があります。詳細については、この手順のステップ 3 を参照してください。
-
[高度な詳細] では、セクションを展開してフィールドを表示し、必要に応じてインスタンスの追加パラメータを指定します。
-
[概要] パネルから起動テンプレートの設定を確認します。リンクを選択して任意のセクションに移動し、必要な変更を加えることができます。
-
起動テンプレートを作成する準備ができたら、[Create launch template] (起動テンプレートの作成) をクリックします。
- AWS CLI
-
次の例では、create-launch-template コマンドを使用して、指定された名前とインスタンス設定を使用して起動テンプレートを作成します。
aws ec2 create-launch-template \
--launch-template-name TemplateForWebServer
\
--version-description WebVersion1
\
--tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose
,Value=production
}]' \
--launch-template-data file://template-data
.json
インスタンス設定の起動テンプレートデータを指定する JSON の例を以下に示します。コマンド例に示すように、JSON をファイルに保存して --launch-template-data
パラメータに含めます。
{
"NetworkInterfaces": [{
"AssociatePublicIpAddress": true,
"DeviceIndex": 0,
"Ipv6AddressCount": 1
,
"SubnetId": "subnet-7b16de0c
"
}],
"ImageId": "ami-8c1be5f6
",
"InstanceType": "r4.4xlarge
",
"TagSpecifications": [{
"ResourceType": "instance",
"Tags": [{
"Key":"Name
",
"Value":"webserver
"
}]
}],
"CpuOptions": {
"CoreCount":4
,
"ThreadsPerCore":2
}
}
以下は出力例です。
{
"LaunchTemplate": {
"LatestVersionNumber": 1,
"LaunchTemplateId": "lt-01238c059e3466abc",
"LaunchTemplateName": "TemplateForWebServer",
"DefaultVersionNumber": 1,
"CreatedBy": "arn:aws:iam::123456789012:root",
"CreateTime": "2017-11-27T09:13:24.000Z"
}
}
- PowerShell
-
次の例では、New-EC2LaunchTemplate cmdlet を使用して、指定された名前とインスタンス設定で起動テンプレートを作成します。
$launchTemplateData = [Amazon.EC2.Model.RequestLaunchTemplateData]@{
ImageId = 'ami-8c1be5f6'
InstanceType = 'r4.4xlarge'
NetworkInterfaces = @(
[Amazon.EC2.Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]@{
AssociatePublicIpAddress = $true
DeviceIndex = 0
Ipv6AddressCount = 1
SubnetId = 'subnet-7b16de0c'
}
)
TagSpecifications = @(
[Amazon.EC2.Model.LaunchTemplateTagSpecificationRequest]@{
ResourceType = 'instance'
Tags = [Amazon.EC2.Model.Tag]@{
Key = 'Name'
Value = 'webserver'
}
}
)
CpuOptions = [Amazon.EC2.Model.LaunchTemplateCpuOptionsRequest]@{
CoreCount = 4
ThreadsPerCore = 2
}
}
$tagSpecificationData = [Amazon.EC2.Model.TagSpecification]@{
ResourceType = 'launch-template'
Tags = [Amazon.EC2.Model.Tag]@{
Key = 'purpose'
Value = 'production'
}
}
New-EC2LaunchTemplate -LaunchTemplateName 'TemplateForWebServer' -VersionDescription 'WebVersion1' -LaunchTemplateData $launchTemplateData -TagSpecification $tagSpecificationData
以下は出力例です。
CreatedBy : arn:aws:iam::123456789012:root
CreateTime : 9/19/2023 16:57:55
DefaultVersionNumber : 1
LatestVersionNumber : 1
LaunchTemplateId : lt-01238c059eEXAMPLE
LaunchTemplateName : TemplateForWebServer
Tags : {purpose}
既存の起動テンプレートからの起動テンプレートの作成
既存の起動テンプレートをクローンして、新しい起動テンプレートを作成するようにパラメータを調整できます。ただし、これを実行できるのは、Amazon EC2 コンソールを使用している場合のみです。AWS CLI はテンプレートのクローン作成をサポートしていません。各パラメータの説明については、「Amazon EC2 インスタンス設定パラメータのリファレンス」を参照してください。
- Console
-
既存の起動テンプレートから起動テンプレートを作成するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[起動テンプレート]、[起動テンプレートの作成] の順に選択します。
-
[起動テンプレート名] に、起動テンプレートのわかりやすい名前を入力します。
-
[Template version description] (テンプレートバージョンの説明) に、起動テンプレートバージョンの短い説明を入力します。
-
作成時に起動テンプレートにタグを付けるには、[テンプレートタグ] を展開し、[新しいタグの追加] を選択して、タグのキーと値のペアを入力します。
-
[Source template] (ソーステンプレート) を展開し、[Launch template name] (起動テンプレート名) で、新しい起動テンプレートのベースとなる起動テンプレートを選択します。
-
[Source template version] (ソーステンプレートのバージョン) で、新しい起動テンプレートのベースとなる起動テンプレートのバージョンを選択します。
-
必要に応じて起動パラメータを調整し、[起動テンプレートの作成] を選択します。
インスタンスからの起動テンプレートの作成
既存の Amazon EC2 インスタンスのパラメータのクローンを作成し、パラメータを調整して起動テンプレートを作成できます。各パラメータの説明については、「Amazon EC2 インスタンス設定パラメータのリファレンス」を参照してください。
- Console
-
インスタンスから起動テンプレートを作成するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[インスタンス] を選択します。
-
インスタンスを選び、[アクション]、[イメージとテンプレート]、[インスタンスからテンプレートを作成] の順に選択します。
-
名前、説明、およびタグを入力し、必要に応じて起動パラメータを調整します。
インスタンスから起動テンプレートを作成するとき、そのインスタンスのネットワークインターフェイス ID と IP アドレスはテンプレートに含まれません。
-
[起動テンプレートの作成] を選択します。
- AWS CLI
-
AWS CLI を使用して既存のインスタンスから起動テンプレートを作成するには、まずインスタンスから起動テンプレートデータを取得し、次に起動テンプレートデータを使用して起動テンプレートを作成します。
インスタンスから起動テンプレートデータを取得するには
-
get-launch-template-data コマンドを使用して、インスタンス ID を指定します。出力をベースとして使用して、新しい起動テンプレートや起動テンプレートのバージョンを作成できます。デフォルトでは、起動テンプレートデータで指定できない最上位レベルの LaunchTemplateData
オブジェクトが出力に含まれています。このオブジェクトを除外するには、--query
オプションを使用します。
aws ec2 get-launch-template-data \
--instance-id i-0123d646e8048babc
\
--query "LaunchTemplateData"
出力例を次に示します。
{
"Monitoring": {},
"ImageId": "ami-8c1be5f6",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"DeleteOnTermination": true
}
}
],
"EbsOptimized": false,
"Placement": {
"Tenancy": "default",
"GroupName": "",
"AvailabilityZone": "us-east-1a"
},
"InstanceType": "t2.micro",
"NetworkInterfaces": [
{
"Description": "",
"NetworkInterfaceId": "eni-35306abc",
"PrivateIpAddresses": [
{
"Primary": true,
"PrivateIpAddress": "10.0.0.72"
}
],
"SubnetId": "subnet-7b16de0c",
"Groups": [
"sg-7c227019"
],
"Ipv6Addresses": [
{
"Ipv6Address": "2001:db8:1234:1a00::123"
}
],
"PrivateIpAddress": "10.0.0.72"
}
]
}
出力を次のようにファイルに直接書き込むことができます。
aws ec2 get-launch-template-data \
--instance-id i-0123d646e8048babc
\
--query "LaunchTemplateData" >> instance-data.json
起動テンプレートデータを使用して起動テンプレートを作成するには
AMI ID のかわりに Systems Manager パラメータを使用する
起動テンプレートで AMI ID を指定する代わりに、AWS Systems Manager パラメータを指定できます。AMI ID が変更された場合は、Systems Manager パラメータストアの Systems Manager パラメータを更新することで、AMI ID を一箇所で更新できます。パラメータは、他の AWS アカウント と共有することもできます。AMI パラメータは、1 つのアカウントで一元的に保存および管理し、これを参照する必要がある他のすべてのアカウントに共有することができます。Systems Manager パラメータを使用すると、すべての起動テンプレートを 1 回のアクションで更新できます。
Systems Manager パラメータは、AWS Systems Manager Parameter Store で作成できるユーザー定義のキーと値のペアです。パラメータストアは、アプリケーションの設定値を保存するための一元的な場所を提供します。
次の図では、golden-ami
パラメータは最初にパラメータストア内の元の AMI ami-aabbccddeeffgghhi
にマッピングされます。起動テンプレートの AMI ID の値は golden-ami
です。この起動テンプレートを使用してインスタンスを起動するとき、AMI ID は ami-aabbccddeeffgghhi
に変換されます。その後、AMI が更新され、新しい AMI ID が取得されます。パラメータストアでは、golden-ami
パラメータが新しい ami-00112233445566778
パラメータにマッピングされます。起動テンプレートは変更されずに引き継がれます。この起動テンプレートを使用してインスタンスを起動するとき、AMI ID は新しい ami-00112233445566778
に変換されます。
起動テンプレートを AMI ID の代わりに使用する場合、ユーザー定義の Systems Manager パラメータを次の形式に従う必要があります。
AMI ID での有効なパラメータの作成方法については、「AWS Systems Manager ユーザーガイド」の「Systems Manager パラメータを作成する」を参照してください。
起動テンプレートの AMI ID の代わりに Systems Manager パラメータを使用するには、起動テンプレートでパラメータを指定するときに次のいずれかの形式を使用する必要があります。
パブリックパラメータを参照するには:
同じアカウントに保存されているパラメータを参照するには:
-
resolve:ssm:parameter-name
-
resolve:ssm:parameter-name
:version-number
- バージョン番号自体がデフォルトのラベルです
-
resolve:ssm:parameter-name
:label
別の AWS アカウント から共有されたパラメータを参照するには:
-
resolve:ssm:parameter-ARN
-
resolve:ssm:parameter-ARN
:version-number
-
resolve:ssm:parameter-ARN
:label
パラメータバージョン
Systems Manager パラメータはバージョニングされたリソースです。パラメータを更新すると、そのパラメータの新しいバージョンが連続して作成されます。Systems Manager は、特定のバージョンのパラメータにマッピングできるパラメータラベルをサポートしています。
例えば、golden-ami
パラメータには、1
、2
および 3
の 3 つのバージョンがあります。バージョン 2
にマッピングするパラメータラベル beta
と、バージョン 3
にマップするパラメータラベル prod
を作成できます。
起動テンプレートでは、次のいずれかの形式を使用して golden-ami
パラメータのバージョン 3 を指定できます。
バージョンまたはラベルの指定は任意です。バージョンやパラメータを指定しない場合は最新バージョンのパラメータが使用されます。
起動テンプレートの Systems Manager パラメータを指定する
起動テンプレートまたは起動テンプレートの新しいバージョンを作成するときに、起動テンプレートで AMI ID の代わりに Systems Manager パラメータを指定できます。
- Console
-
起動テンプレートの Systems Manager パラメータを指定するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。
-
ナビゲーションペインで、[起動テンプレート]、[起動テンプレートの作成] の順に選択します。
-
[起動テンプレート名] に、起動テンプレートのわかりやすい名前を入力します。
-
[Application and OS Images (Amazon Machine Image)] (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、[Browse more AMIs] (その他の AMI を閲覧する) を選択します。
-
検索バーの右側にある矢印ボタンを選択したら、[カスタム値を指定 / Systems Manager パラメータ] を選択します。
-
[カスタム値または Systems Manager のパラメータを指定] ダイアログボックスで、次の手順を実行します。
-
[AMI ID または Systems Manager パラメータ文字列] の場合、次の形式のいずれかを使用して Systems Manager パラメータ名を入力します。
パブリックパラメータを参照するには:
同じアカウントに保存されているパラメータを参照するには:
-
resolve:ssm:parameter-name
-
resolve:ssm:parameter-name
:version-number
-
resolve:ssm:parameter-name
:label
別の AWS アカウント から共有されたパラメータを参照するには:
-
resolve:ssm:parameter-ARN
-
resolve:ssm:parameter-ARN
:version-number
-
resolve:ssm:parameter-ARN
:label
-
[Save] を選択します。
-
必要に応じて他の起動テンプレートパラメータを指定し、その後に [起動テンプレートの作成] を選択します。
詳細については、「パラメータを指定して起動テンプレートを作成する」を参照してください。
- AWS CLI
-
起動テンプレートの Systems Manager パラメータを指定するには
-
create-launch-template コマンドを使用して、起動テンプレートを作成します。使用する AMI を指定するには、次のいずれかの形式を使用して Systems Manager パラメータ名を入力します。
パブリックパラメータを参照するには:
同じアカウントに保存されているパラメータを参照するには:
-
resolve:ssm:parameter-name
-
resolve:ssm:parameter-name
:version-number
-
resolve:ssm:parameter-name
:label
別の AWS アカウント から共有されたパラメータを参照するには:
-
resolve:ssm:parameter-ARN
-
resolve:ssm:parameter-ARN
:version-number
-
resolve:ssm:parameter-ARN
:label
次の例では、以下を指定する起動テンプレートを作成します。
-
起動テンプレートの名前 (TemplateForWebServer
)
-
起動テンプレートのタグ (purpose
=production
)
-
JSON ファイルで指定された、インスタンス設定のデータ。
-
使用する AMI (resolve:ssm:golden-ami
)
-
起動するインスタンスタイプ (m5.4xlarge
)
-
インスタンスに付けるタグ (Name
=webserver
)
aws ec2 create-launch-template \
--launch-template-name TemplateForWebServer
\
--tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose
,Value=production
}]' \
--launch-template-data file://template-data
.json
インスタンスを設定するための起動テンプレートデータを含む、JSON ファイルの例を以下に示します。ImageId
の値は Systems Manager パラメータ名で、必要な形式 resolve:ssm:golden-ami
で入力されます。
{"LaunchTemplateData": {
"ImageId": "resolve:ssm:golden-ami
",
"InstanceType": "m5.4xlarge
",
"TagSpecifications": [{
"ResourceType": "instance",
"Tags": [{
"Key":"Name
",
"Value":"webserver
"
}]
}]
}
}
起動テンプレートが正しい AMI ID を取得していることを確認する
Systems Manager のパラメータを実際の AMI ID に変換するには
describe-launch-template-versions コマンドを使用して、--resolve-alias
パラメータを含めます。
aws ec2 describe-launch-template-versions \
--launch-template-name my-launch-template
\
--versions $Default
\
--resolve-alias
レスポンスには、ImageId
の AMI ID が含まれます。この例では、この起動テンプレートを使用してインスタンスを起動すると、AMI ID は ami-0ac394d6a3example
に変換されます。
{
"LaunchTemplateVersions": [
{
"LaunchTemplateId": "lt-089c023a30example",
"LaunchTemplateName": "my-launch-template",
"VersionNumber": 1,
"CreateTime": "2022-12-28T19:52:27.000Z",
"CreatedBy": "arn:aws:iam::123456789012:user/Bob",
"DefaultVersion": true,
"LaunchTemplateData": {
"ImageId": "ami-0ac394d6a3example",
"InstanceType": "t3.micro",
}
}
]
}
Systems Manager パラメータの使用に関する詳細は、Systems Manager のドキュメントの次のリファレンス資料を参照してください。
制限事項
-
タイプが instant
の EC2 フリートのみが、AMI ID の代わりに Systems Manager パラメータが指定されている起動テンプレートを使用できます。
-
タイプが maintain
と request
の EC2 フリートと、さらにスポットフリートでは、AMI ID の代わりに Systems Manager パラメータが指定されている起動テンプレートを使用できません。タイプが maintain
と request
の EC2 フリートと、さらにスポットフリートでは、起動テンプレートに AMI を指定する場合、AMI ID を指定する必要があります。
-
EC2 フリートで属性ベースのインスタンスの選択を使用した場合は、AMI ID の代わりに Systems Manager パラメータを指定できません。属性ベースのインスタンスの選択を使用する場合は、AMI ID を指定する必要があります。
-
Amazon EC2 Auto Scaling には、その他の制限があります。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「Use AWS Systems Manager parameters instead of AMI IDs in launch templates」を参照してください。