Amazon EC2 起動テンプレートを作成する - Amazon Elastic Compute Cloud

Amazon EC2 起動テンプレートを作成する

Amazon EC2 起動テンプレートを作成するには、インスタンス設定パラメータに独自の値を指定するか、既存の起動テンプレートまたは Amazon EC2 インスタンスから値を取得します。

起動テンプレートのすべてのパラメータに値を指定する必要はありません。起動テンプレートを作成するには、インスタンス設定パラメータを 1 つだけ指定する必要があります。指定しないパラメータを指定するには、コンソールの使用時に [起動テンプレートに含めない] を選択します。コマンドラインツールを使用する場合は、起動テンプレートで指定しないことを示すパラメータを含めないでください。

起動テンプレートで AMI を指定する場合は、AMI を選択するか、インスタンスの起動時に AMI を指す Systems Manager パラメータを指定できます。

起動テンプレートを使用してインスタンスを起動すると、起動テンプレートで指定された値を使用して、対応するインスタンスパラメータを設定します。起動テンプレートで値が指定されていない場合は、対応するインスタンスパラメータのデフォルト値が使用されます。

パラメータを指定して起動テンプレートを作成する

起動テンプレートを作成する際には、そのテンプレートの名と、少なくとも 1 つのインスタンス設定パラメーターを指定する必要があります。

各パラメータの説明については、「Amazon EC2 インスタンス設定パラメータのリファレンス」を参照してください。

Console
コンソールを使用して起動テンプレートを作成するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[起動テンプレート]、[起動テンプレートの作成] の順に選択します。

  3. [起動テンプレートの名前と説明] で、次の操作を行います。

    1. [起動テンプレート名] に、起動テンプレートのわかりやすい名前を入力します。

    2. [Template version description] (テンプレートバージョンの説明) に、起動テンプレートバージョンの短い説明を入力します。

    3. 作成時に起動テンプレートにタグを付けるには、[テンプレートタグ] を展開し、[新しいタグの追加] を選択して、タグのキーと値のペアを入力します。追加するタグごとに [新しいタグを追加] を選択します。

      注記

      インスタンスの起動時に作成されるリソースにタグを付けるには、[Resource tags] (リソースタグ) のタグを指定する必要があります。詳細については、この手順のステップ 9 を参照してください。

  4. [アプリケーションイメージと OS イメージ (Amazon マシンイメージ)] では、[起動テンプレートに含めない] を選択したままにするか、インスタンスのオペレーティングシステム (OS) を選択してから AMI を選択できます。または、AMI を指定する代わりに Systems Manager パラメータを指定することもできます。詳細については、「AMI ID のかわりに Systems Manager パラメータを使用する」を参照してください。

    AMI は、インスタンスの起動に必要なオペレーティングシステムとソフトウェアを含むテンプレートです。

  5. [インスタンスタイプ] で、[起動テンプレートに含めない] を選択したままにするか、インスタンスタイプを選択するか、インスタンス属性を指定して Amazon EC2 がそれらの属性でインスタンスタイプを識別できるようにすることができます。

    注記

    インスタンス属性の指定がサポートされるのは、Auto Scaling グループ、EC2 フリート、およびスポットフリートによってインスタンスを起動するために起動テンプレートが使用される場合のみです。詳細については、「属性ベースのインスタンスタイプの選択を使用して Auto Scaling グループを作成する」と「EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する」を参照してください。

    インスタンス起動ウィザードまたは RunInstances API で起動テンプレートを使用する予定がある場合は、インスタンスタイプ属性を指定できません。

    インスタンスタイプによって、インスタンスに使用されるホストコンピュータのハードウェア構成 (CPU、メモリ、ストレージ、ネットワークキャパシティ) とサイズが決まります。

    どのインスタンスタイプを選択するかわからない場合は、次の操作を実行できます。

    • [インスタンスタイプの比較] を選択して、vCPU の数、アーキテクチャ、メモリ量 (GiB)、ストレージ量 (GB)、ストレージタイプ、ネットワークパフォーマンスの属性によってさまざまなインスタンスタイプを比較します。

    • [アドバイスの取得] を選択して、EC2 インスタンスタイプファインダーからインスタンスタイプに関するガイダンスやアドバイスを取得します。詳細については、「EC2 インスタンスタイプファインダーからレコメンデーションを取得する」を参照してください。

    注記

    AWS アカウントを作成してから 12 か月未満の場合は、[t2.micro] インスタンスタイプ、または [t2.micro] が利用できないリージョンで [t3.micro] インスタンスタイプを選択すると、無料利用枠の Amazon EC2 を使用できます。[t3.micro] インスタンスを起動すると、デフォルトで [Unlimited] モードになり、CPU 使用率に基づいて追加料金が発生する可能性があることに注意してください。インスタンスタイプが無料利用枠の下で適格である場合、それは [Free tier eligible] (無料利用枠適格) とラベル付けされます。

  6. [キーペア (ログイン)][キーペア名] で、[起動テンプレートに含めない] を選択したままにするか、既存のキーペアを選択するか、新しいキーペアを作成します。

  7. [ネットワーク設定] では、[起動テンプレートに含めない] を選択したままにするか、さまざまなネットワーク設定の値を指定できます。

  8. [ストレージの設定] で、起動テンプレートで AMI を指定した場合、AMI にはルートボリューム ([ボリューム 1 (AMI ルート)]) を含む、1 つまたは複数のストレージボリュームが含まれます。オプションで、インスタンスにアタッチする追加のボリュームを指定できます。新しいボリュームを追加するには、[Add new volume] を選択します。

  9. [リソースタグ] で、インスタンスの起動時に作成されるリソースにタグを付けるには、[タグの追加] を選択し、タグのキーと値のペアを入力します。[Resource types] (リソースタイプ) で、作成時にタグを付けるリソースを指定します。すべてのリソースに同じタグを指定することも、リソースごとに異なるタグを指定することもできます。追加するタグごとに [Add tag] (タグを追加) を選択します。

    起動テンプレートの使用時に作成される次のリソースにタグを指定できます。

    • インスタンス

    • ボリューム

    • Elastic graphics

    • スポットインスタンスリクエスト

    • ネットワークインターフェイス

    注記

    起動テンプレート自体にタグを付けるには、[Template tags] (テンプレートタグ) でタグを指定する必要があります。詳細については、この手順のステップ 3 を参照してください。

  10. [高度な詳細] では、セクションを展開してフィールドを表示し、必要に応じてインスタンスの追加パラメータを指定します。

  11. [概要] パネルから起動テンプレートの設定を確認します。リンクを選択して任意のセクションに移動し、必要な変更を加えることができます。

  12. 起動テンプレートを作成する準備ができたら、[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
既存の起動テンプレートから起動テンプレートを作成するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[起動テンプレート]、[起動テンプレートの作成] の順に選択します。

  3. [起動テンプレート名] に、起動テンプレートのわかりやすい名前を入力します。

  4. [Template version description] (テンプレートバージョンの説明) に、起動テンプレートバージョンの短い説明を入力します。

  5. 作成時に起動テンプレートにタグを付けるには、[テンプレートタグ] を展開し、[新しいタグの追加] を選択して、タグのキーと値のペアを入力します。

  6. [Source template] (ソーステンプレート) を展開し、[Launch template name] (起動テンプレート名) で、新しい起動テンプレートのベースとなる起動テンプレートを選択します。

  7. [Source template version] (ソーステンプレートのバージョン) で、新しい起動テンプレートのベースとなる起動テンプレートのバージョンを選択します。

  8. 必要に応じて起動パラメータを調整し、[起動テンプレートの作成] を選択します。

インスタンスからの起動テンプレートの作成

既存の Amazon EC2 インスタンスのパラメータのクローンを作成し、パラメータを調整して起動テンプレートを作成できます。各パラメータの説明については、「Amazon EC2 インスタンス設定パラメータのリファレンス」を参照してください。

Console
インスタンスから起動テンプレートを作成するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選び、[アクション][イメージとテンプレート][インスタンスからテンプレートを作成] の順に選択します。

  4. 名前、説明、およびタグを入力し、必要に応じて起動パラメータを調整します。

    注記

    インスタンスから起動テンプレートを作成するとき、そのインスタンスのネットワークインターフェイス ID と IP アドレスはテンプレートに含まれません。

  5. [起動テンプレートの作成] を選択します。

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 に変換されます。

パラメータストアの Systems Manager パラメータを使用して起動テンプレートを更新します。

AMI ID の Systems Manager パラメータ形式

起動テンプレートを AMI ID の代わりに使用する場合、ユーザー定義の Systems Manager パラメータを次の形式に従う必要があります。

  • パラメータ型: String

  • パラメータデータ型: aws:ec2:image - これにより、パラメータストアは入力した値が AMI ID の適切な形式であることを検証します。

AMI ID での有効なパラメータの作成方法については、「AWS Systems Manager ユーザーガイド」の「Systems Manager パラメータを作成する」を参照してください。

起動テンプレートの Systems Manager パラメータ形式

起動テンプレートの AMI ID の代わりに Systems Manager パラメータを使用するには、起動テンプレートでパラメータを指定するときに次のいずれかの形式を使用する必要があります。

パブリックパラメータを参照するには:

  • resolve:ssm:public-parameter

同じアカウントに保存されているパラメータを参照するには:

  • 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 パラメータには、12 および 3 の 3 つのバージョンがあります。バージョン 2 にマッピングするパラメータラベル beta と、バージョン 3 にマップするパラメータラベル prod を作成できます。

起動テンプレートでは、次のいずれかの形式を使用して golden-ami パラメータのバージョン 3 を指定できます。

  • resolve:ssm:golden-ami:3

  • resolve:ssm:golden-ami:prod

バージョンまたはラベルの指定は任意です。バージョンやパラメータを指定しない場合は最新バージョンのパラメータが使用されます。

起動テンプレートの Systems Manager パラメータを指定する

起動テンプレートまたは起動テンプレートの新しいバージョンを作成するときに、起動テンプレートで AMI ID の代わりに Systems Manager パラメータを指定できます。

Console
起動テンプレートの Systems Manager パラメータを指定するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[起動テンプレート]、[起動テンプレートの作成] の順に選択します。

  3. [起動テンプレート名] に、起動テンプレートのわかりやすい名前を入力します。

  4. [Application and OS Images (Amazon Machine Image)] (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、[Browse more AMIs] (その他の AMI を閲覧する) を選択します。

  5. 検索バーの右側にある矢印ボタンを選択したら、[カスタム値を指定 / Systems Manager パラメータ] を選択します。

  6. [カスタム値または Systems Manager のパラメータを指定] ダイアログボックスで、次の手順を実行します。

    1. [AMI ID または Systems Manager パラメータ文字列] の場合、次の形式のいずれかを使用して Systems Manager パラメータ名を入力します。

      パブリックパラメータを参照するには:

      • resolve:ssm:public-parameter

      同じアカウントに保存されているパラメータを参照するには:

      • 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

    2. [Save] を選択します。

  7. 必要に応じて他の起動テンプレートパラメータを指定し、その後に [起動テンプレートの作成] を選択します。

詳細については、「パラメータを指定して起動テンプレートを作成する」を参照してください。

AWS CLI
起動テンプレートの Systems Manager パラメータを指定するには
  • create-launch-template コマンドを使用して、起動テンプレートを作成します。使用する AMI を指定するには、次のいずれかの形式を使用して Systems Manager パラメータ名を入力します。

    パブリックパラメータを参照するには:

    • resolve:ssm:public-parameter

    同じアカウントに保存されているパラメータを参照するには:

    • 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 のドキュメントの次のリファレンス資料を参照してください。

  • Amazon EC2 でサポートされている AMI パブリックパラメータを検索する方法については、「Calling AMI public parameters」を参照してください。

  • パラメータを他の AWS アカウントと共有する方法、または AWS Organizations を介して共有する方法については、「Working with shared parameters」を参照してください。

  • パラメータが正常に作成されたかどうかをモニタリングする方法については、「Native parameter support for Amazon Machine Image IDs」を参照してください。

制限事項

  • タイプが instant の EC2 フリートのみが、AMI ID の代わりに Systems Manager パラメータが指定されている起動テンプレートを使用できます。

  • タイプが maintainrequest の EC2 フリートと、さらにスポットフリートでは、AMI ID の代わりに Systems Manager パラメータが指定されている起動テンプレートを使用できません。タイプが maintainrequest の 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」を参照してください。