

# Amazon EC2 起動テンプレートにインスタンス起動パラメータを保存する
<a name="ec2-launch-templates"></a>

Amazon EC2 起動テンプレートを使用してインスタンス起動パラメータを保存すると、Amazon EC2 インスタンスを起動するたびにパラメータを指定する必要がなくなります。例えば、AMI ID やインスタンスタイプ、通常インスタンスの起動に使用しているネットワーク設定を保存する起動テンプレートを作成することができます。Amazon EC2 コンソール、AWS SDK、コマンドラインツールのいずれかを使用してインスタンスを起動するときは、パラメータを再度入力する代わりに、起動テンプレートを指定できます。

各起動テンプレートについて、1 つ以上の番号付きの*起動テンプレートのバージョン*を作成できます。各バージョンに異なる起動パラメータを指定できます。起動テンプレートからインスタンスを起動する際、起動テンプレートのいずれかのバージョンを使用できます。バージョンを指定しない場合は、デフォルトバージョンが使用されます。いずれかの起動テンプレートをデフォルトバージョンとして設定できます — デフォルトでは、起動テンプレートの最初のバージョンです。

以下の図は、3 つのバージョンの起動テンプレートを示しています。最初のバージョンでは、インスタンスの起動に使用するインスタンスタイプ、AMI ID、サブネット、およびキーペアが指定されています。2 番目のバージョンは最初のバージョンに基づいており、インスタンスのセキュリティグループも指定しています。3 番目のバージョンは、パラメータの一部に異なる値を使用しています。バージョン 2 がデフォルトバージョンとして設定されています。この起動テンプレートからインスタンスを起動すると、他のバージョンを指定しない限りバージョン 2 の起動パラメータが使用されます。

![\[3 つのバージョンの起動テンプレートです。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/launch-template-diagram.png)


**Topics**
+ [Amazon EC2 起動テンプレートの制限](launch-template-restrictions.md)
+ [Amazon EC2 起動テンプレートに必要な IAM アクセス許可](permissions-for-launch-templates.md)
+ [Amazon EC2 起動テンプレートを使用して Amazon EC2 インスタンスの起動を制御する](use-launch-templates-to-control-launching-instances.md)
+ [Amazon EC2 起動テンプレートを作成する](create-launch-template.md)
+ [起動テンプレートの変更 (起動テンプレートのバージョンの管理)](manage-launch-template-versions.md)
+ [起動テンプレートまたは起動テンプレートのバージョンを削除する](delete-launch-template.md)

# Amazon EC2 起動テンプレートの制限
<a name="launch-template-restrictions"></a>

起動テンプレートおよび起動テンプレートのバージョンには次の制限が適用されます。
+ **クォータ** – 起動テンプレートのクォータと起動テンプレートバージョンのクォータを確認するには、[[Service Quotas]](https://console.aws.amazon.com/servicequotas/) コンソールを開くか、AWS CLI コマンドの [list-service-quotas](https://docs.aws.amazon.com/cli/latest/reference/service-quotas/list-service-quotas.html) を使用します。各 AWS アカウントでは、1 つのリージョンあたり最大で 5,000 の起動テンプレート、1 つの起動テンプレートあたり最大で 10,000 のバージョンを起動します。アカウントには、作成してからの期間や使用履歴に基づいて異なるクォータが設定されている場合があります。
+ **パラメータはオプション** - 起動テンプレートのパラメータはオプションです。ただし、インスタンスの起動リクエストに必要なパラメータがすべて含まれている必要があります。例えば、起動テンプレートに AMI ID が含まれていない場合、この起動テンプレートでインスタンスを起動するときに AMI ID を指定する必要があります。
+ **パラメータは未検証** – 起動テンプレートパラメータは、起動テンプレート作成の際には完全には検証されていません。間違った値を指定したり、サポートされていないパラメータの組み合わせを使用したりすると、この起動テンプレートを使用してインスタンスを起動できなくなります。問題を回避するには、正しい値を指定し、サポートされているパラメータの組み合わせを使用してください。例えば、プレイスメントグループ内でインスタンスを起動するには、サポートされているインスタンスタイプを指定する必要があります。
+ **タグ** – 起動テンプレートにはタグ付けできますが、起動テンプレートのバージョンにはタグ付けできません。
+ **変更不可能** – 起動テンプレートは変更不可能です。起動テンプレートを変更するには、起動テンプレートの新しいバージョンを作成する必要があります。
+ **バージョン番号** – 起動テンプレートのバージョンには、作成された順序で番号が付けられます。起動テンプレートのバージョンを作成する場合、自分でバージョン番号を指定することはできません。

# Amazon EC2 起動テンプレートに必要な IAM アクセス許可
<a name="permissions-for-launch-templates"></a>

IAM アクセス許可を使用して、ユーザーが起動テンプレートまたは起動テンプレートのバージョンをリスト、表示、作成、または削除できるかどうかを制御できます。

**重要**  
リソースレベルのアクセス許可を使用して、ユーザーが起動テンプレートまたは起動テンプレートのバージョンを作成するときに起動テンプレートで指定できるリソースを制限することはできません。したがって、信頼できる管理者のみに起動テンプレートと起動テンプレートのバージョンを作成するアクセス許可が与えられるようにしてください。

起動テンプレートを使用するユーザーには、起動テンプレートで指定されたリソースの作成とアクセスに必要なアクセス許可を付与しなければなりません。例えば、次のようになります。
+ 共有のプライベート Amazon マシンイメージ (AMI) からインスタンスを起動するには、ユーザーに AMI の起動許可が必要です。
+ 既存のスナップショットからタグ付きの EBS ボリュームを作成するには、ユーザーはスナップショットへの読み取りのアクセス許可と、ボリュームを作成してタグ付けを行うためのアクセス許可が必要です。

**Topics**
+ [ec2:CreateLaunchTemplate](#permissions-for-launch-templates-create)
+ [ec2:DescribeLaunchTemplates](#permissions-for-launch-templates-view)
+ [ec2:DescribeLaunchTemplateVersions](#permissions-for-launch-template-versions-view)
+ [ec2:DeleteLaunchTemplate](#permissions-for-launch-templates-delete)
+ [バージョニングアクセス許可の制御](#permissions-for-launch-template-versions)
+ [起動テンプレートのタグへのアクセスを制御する](#permissions-for-launch-templates-tags)

## ec2:CreateLaunchTemplate
<a name="permissions-for-launch-templates-create"></a>

コンソールで、または API を使用して起動テンプレートを作成するには、プリンシパルが IAM ポリシーで `ec2:CreateLaunchTemplate` アクセス許可を持っている必要があります。可能な限り、タグを使用してアカウントで起動テンプレートへのアクセスを制御できるようにします。

例えば、次の IAM ポリシーステートメントは、テンプレートが指定されたタグ (*`purpose`*=*`testing`*) を使用している場合にのみ、プリンシパルに起動テンプレートを作成する許可を付与します。

```
{
    "Sid": "IAMPolicyForCreatingTaggedLaunchTemplates",
    "Action": "ec2:CreateLaunchTemplate",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/purpose": "testing"
        }
    }
}
```

起動テンプレートを作成するプリンシパルには、次のような関連するアクセス許可が必要な場合があります。
+ **ec2:CreateTags** — `CreateLaunchTemplate` 操作時に起動テンプレートにタグを追加するには、`CreateLaunchTemplate` の呼び出し元が IAM ポリシーで `ec2:CreateTags` アクセス許可を持っている必要があります。
+ **ec2:RunInstances** – 作成した起動テンプレートから EC2 インスタンスを起動するには、プリンシパルは IAM ポリシーで `ec2:RunInstances` アクセス許可も持っている必要があります。

タグを適用するリソース作成アクションでは、ユーザーが `ec2:CreateTags` アクセス許可を持っている必要があります。次の IAM ポリシーステートメントは、`ec2:CreateAction` 条件キーを使用して、ユーザーが `CreateLaunchTemplate` のコンテキストでのみタグを使用できるようにしています。ユーザーは、既存の起動テンプレートにも他のリソースにもタグ付けできません。詳細については、「[Amazon EC2 リソース作成時にタグ付けするアクセス許可の付与](supported-iam-actions-tagging.md)」を参照してください。

```
{
    "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation",
    "Action": "ec2:CreateTags",
    "Effect": "Allow",
    "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
    "Condition": {
        "StringEquals": {
            "ec2:CreateAction": "CreateLaunchTemplate"
        }
    }
}
```

起動テンプレートを作成した IAM ユーザーに、作成した起動テンプレートを使用するアクセス許可が自動で付与されることはありません。他のプリンシパルと同様に、起動テンプレートの作成者は、IAM ポリシーを使用してアクセス許可を取得する必要があります。IAM ユーザーが起動テンプレートから EC2 インスタンスを起動する場合は、`ec2:RunInstances` アクセス許可が必要です。このアクセス許可を付与するときに、ユーザーが特定のタグまたは特定の ID を含む起動テンプレートのみを使用できるように指定できます。また、`RunInstances` 呼び出しに対するリソースレベルのアクセス許可を指定することで、起動テンプレートを使用するすべてのユーザーがインスタンスの起動時に参照および使用できる AMI やその他のリソースを制御できます。エンドポイントポリシーの例については、「[起動テンプレート](ExamplePolicies_EC2.md#iam-example-runinstances-launch-templates)」を参照してください。

## ec2:DescribeLaunchTemplates
<a name="permissions-for-launch-templates-view"></a>

アカウントの起動テンプレートをリストおよび表示するには、プリンシパルが IAM ポリシーで `ec2:DescribeLaunchTemplates` アクセス許可を持っている必要があります。`Describe` アクションはリソースレベルのアクセス許可をサポートしていないため、条件なしで指定する必要があります。また、ポリシーのリソース要素の値は `"*"` である必要があります。

例えば、次の IAM ポリシーステートメントでは、アカウントのすべての起動テンプレートをリストおよび表示する許可をプリンシパルに付与します。

```
{
    "Sid": "IAMPolicyForDescribingLaunchTemplates",
    "Action": "ec2:DescribeLaunchTemplates",
    "Effect": "Allow",
    "Resource": "*"
}
```

## ec2:DescribeLaunchTemplateVersions
<a name="permissions-for-launch-template-versions-view"></a>

起動テンプレートをリストおよび表示するプリンシパルは、起動テンプレートを構成する属性セット全体を取得するための `ec2:DescribeLaunchTemplateVersions` アクセス許可も持つようにしてください。

アカウントの起動テンプレートのバージョンをリストおよび表示するには、プリンシパルが IAM ポリシーで `ec2:DescribeLaunchTemplateVersions` アクセス許可を持っている必要があります。`Describe` アクションはリソースレベルのアクセス許可をサポートしていないため、条件なしで指定する必要があります。また、ポリシーのリソース要素の値は `"*"` である必要があります。

例えば、次の IAM ポリシーステートメントでは、アカウントにおけるすべての起動テンプレートのバージョンをリストおよび表示する許可をプリンシパルに付与します。

```
{
    "Sid": "IAMPolicyForDescribingLaunchTemplateVersions",
    "Effect": "Allow",
    "Action": "ec2:DescribeLaunchTemplateVersions",
    "Resource": "*"
}
```

## ec2:DeleteLaunchTemplate
<a name="permissions-for-launch-templates-delete"></a>

**重要**  
プリンシパルにリソースを削除する許可を与えるときは、注意する必要があります。起動テンプレートを削除すると、起動テンプレートに依存する AWS リソースに障害が発生する可能性があります。

起動テンプレートを削除するには、プリンシパルが IAM ポリシーで `ec2:DeleteLaunchTemplate` アクセス許可を持っている必要があります。可能な限り、タグベースの条件キーを使用してアクセス許可を制限します。

例えば、次の IAM ポリシーステートメントは、テンプレートが指定されたタグ (*`purpose`*=*`testing`*) がある場合にのみ、プリンシパルに起動テンプレートを削除する許可を付与します。

```
{
    "Sid": "IAMPolicyForDeletingLaunchTemplates",
    "Action": "ec2:DeleteLaunchTemplate",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/purpose": "testing"
        }
    }
}
```

または、ARN を使用して IAM ポリシーが適用される起動テンプレートを指定することもできます。

起動テンプレートには次の ARN が含まれます。

```
"Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e"
```

複数の ARN を一覧で囲んで指定することも、`Condition` 要素を使用せず `Resource` 値に `"*"` を指定して、プリンシパルがアカウントの任意の起動テンプレートを削除できるようにすることもできます。

## バージョニングアクセス許可の制御
<a name="permissions-for-launch-template-versions"></a>

信頼できる管理者には、以下の例のように IAM ポリシーを使用して、起動テンプレートのバージョンを作成および削除したり、起動テンプレートのデフォルトバージョンを変更したりするためのアクセス許可を付与できます。

**重要**  
起動テンプレートのバージョンを作成したり、起動テンプレートを変更したりするアクセス許可をプリンシパルに付与する場合は、注意が必要です。  
起動テンプレートのバージョンを作成すると、Amazon EC2 がユーザーに代わって `Latest` バージョンでインスタンスを起動できるようにするすべての AWS リソースに影響します。
起動テンプレートを変更すると、どのバージョンが `Default` になるかを変更できます。したがって、Amazon EC2 がこの変更済みバージョンを使用してユーザーに代わってインスタンスを起動できるようにするすべての AWS リソースに影響します。
また、EC2 フリートやスポットフリートなど、`Latest` または `Default` の起動テンプレートバージョンとやり取りする AWS リソースの取り扱い方にも注意が必要です。「`Latest`」または「`Default`」に別の起動テンプレートバージョンが使用されている場合、Amazon EC2 は、フリートの目標容量を満たすために新しいインスタンスを起動する際に、完了すべきアクションのユーザーアクセス許可を再確認することはありません。これは、AWS リソースとユーザーのやり取りがないためです。`CreateLaunchTemplateVersion` API と `ModifyLaunchTemplate` API を呼び出すアクセス許可をユーザーに付与すると、インスタンスプロファイル (IAM ロールのコンテナ) を含む別の起動テンプレートバージョンをフリートに指定する場合、ユーザーに `iam:PassRole` アクセス許可も効果的に付与できます。つまり、場合によっては `iam:PassRole` アクセス許可がなくても、起動テンプレートを更新して IAM ロールをインスタンスに渡すことができます。このリスクは、起動テンプレートバージョンを作成および管理できるユーザーにアクセス許可を付与する際に注意することで管理できます。

### ec2:CreateLaunchTemplateVersion
<a name="permissions-for-launch-template-versions-create"></a>

起動テンプレートの新しいバージョンを作成するには、プリンシパルが IAM ポリシーで起動テンプレートに対する `ec2:CreateLaunchTemplateVersion` アクセス許可を持っている必要があります。

例えば、次の IAM ポリシーステートメントは、バージョンが指定されたタグ (*`environment`*=*`production`*) を使用している場合にのみ、プリンシパルに起動テンプレートのバージョンを作成する許可を付与します。あるいは、1 つまたは複数の起動テンプレートの ARN を指定することも、`Condition` 要素を使用せず `Resource` 値に `"*"` を指定して、プリンシパルがアカウントにおける任意の起動テンプレートのバージョンを作成できるようにすることもできます。

```
{
    "Sid": "IAMPolicyForCreatingLaunchTemplateVersions",
    "Action": "ec2:CreateLaunchTemplateVersion",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/environment": "production"
        }
    }
}
```

### ec2:DeleteLaunchTemplateVersion
<a name="permissions-for-launch-template-versions-delete"></a>

**重要**  
プリンシパルにリソースを削除する権限を与えるときは、いつものように注意する必要があります。起動テンプレートのバージョンを削除すると、起動テンプレートのバージョンに依存する AWS リソースに障害が発生する可能性があります。

起動テンプレートのバージョンを削除するには、プリンシパルが IAM ポリシーで起動テンプレートに対する `ec2:DeleteLaunchTemplateVersion` アクセス許可を持っている必要があります。

例えば、次の IAM ポリシーステートメントは、バージョンが指定されたタグ (*`environment`*=*`production`*) を使用している場合にのみ、プリンシパルに起動テンプレートのバージョンを削除する許可を付与します。あるいは、1 つまたは複数の起動テンプレートの ARN を指定することも、`Condition` 要素を使用せず `Resource` 値に `"*"` を指定して、プリンシパルがアカウントにおける任意の起動テンプレートのバージョンを削除できるようにすることもできます。

```
{
    "Sid": "IAMPolicyForDeletingLaunchTemplateVersions",
    "Action": "ec2:DeleteLaunchTemplateVersion",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/environment": "production"
        }
    }
}
```

### ec2:ModifyLaunchTemplate
<a name="permissions-for-launch-templates-update"></a>

起動テンプレートに関連付けられている `Default` バージョンを変更するには、プリンシパルが IAM ポリシーで起動テンプレートに対する `ec2:ModifyLaunchTemplate` アクセス許可を持っている必要があります。

例えば、次の IAM ポリシーステートメントは、起動テンプレートが指定されたタグ (*`environment`*=*`production`*) を使用している場合にのみ、プリンシパルに起動テンプレートを変更する許可を付与します。あるいは、1 つまたは複数の起動テンプレートの ARN を指定することも、`Condition` 要素を使用せず `Resource` 値に `"*"` を指定して、プリンシパルがアカウントにおける任意の起動テンプレートのバージョンを変更できるようにすることもできます。

```
{
    "Sid": "IAMPolicyForModifyingLaunchTemplates",
    "Action": "ec2:ModifyLaunchTemplate",
    "Effect": "Allow",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/environment": "production"
        }
    }
}
```

## 起動テンプレートのタグへのアクセスを制御する
<a name="permissions-for-launch-templates-tags"></a>

リソースが起動テンプレートの場合、条件キーを使用してタグ付け許可を制限できます。例えば、次の IAM ポリシーでは、指定されたアカウントとリージョンの起動テンプレートから `temporary` キーを持つタグのみを削除できます。

```
{
    "Sid": "IAMPolicyForDeletingTagsOnLaunchTemplates",
    "Action": "ec2:DeleteTags",
    "Effect": "Allow",
    "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
    "Condition": {
        "ForAllValues:StringEquals": {
            "aws:TagKeys": ["temporary"]
        }
    }
}
```

Amazon EC2 リソースに適用できるタグキーとタグ値を制御するのに使用できる条件キーの詳細については、「[特定のタグへのアクセスの制御](supported-iam-actions-tagging.md#control-tagging)」を参照してください。

# Amazon EC2 起動テンプレートを使用して Amazon EC2 インスタンスの起動を制御する
<a name="use-launch-templates-to-control-launching-instances"></a>

ユーザーが起動テンプレートを使用する場合、インスタンスのみを起動できるようにして、さらに特定の起動テンプレートのみを使用できるように指定することで、Amazon EC2 インスタンスの設定を制御できます。また、起動テンプレートや起動テンプレートのバージョンを作成、変更、記述、削除できる人を制御することもできます。

## 起動テンプレートを使用した起動パラメータの制御
<a name="launch-templates-authorization"></a>

起動テンプレートには、起動時にインスタンスを設定するためのパラメータのすべてまたは一部を含めることができます。ただし、起動テンプレートを使用してインスタンスを起動するときは、起動テンプレートで指定されたパラメータを上書きできます。または、起動テンプレートにない追加のパラメータを指定できます。

**注記**  
起動時に起動テンプレートパラメータを削除することはできません (例えば、パラメータに null 値を指定することはできません)。パラメータを削除するには、起動テンプレートの新しいバージョンをパラメータなしで作成し、そのバージョンを使用してインスタンスを起動します。

インスタンスを起動するには、ユーザーは `ec2:RunInstances` アクションを使用するためのアクセス許可が必要です。また、ユーザーは、インスタンスに作成または関連付けられたリソースを作成または使用する許可が必要です。`ec2:RunInstances` アクションのリソースレベルのアクセス権限を使用して、ユーザーが指定できる起動パラメータを管理できます。または、起動テンプレートを使用してインスタンスを起動するアクセス権限をユーザーに付与することもできます。これにより、IAM ポリシーではなくむしろ起動テンプレートで起動パラメータを管理できるようになり、インスタンス起動の権限を付与するための手段として起動テンプレートを使用できます。例えば、ユーザーが起動テンプレートを使用してのみインスタンスを起動できるようにして、さらに特定の起動テンプレートのみを使用できるように指定することができます。また、ユーザーが起動テンプレートで上書きする起動パラメータを制御することもできます。エンドポイントポリシーの例については、[起動テンプレート](ExamplePolicies_EC2.md#iam-example-runinstances-launch-templates)を参照してください。

## 起動テンプレートの使用の管理
<a name="launch-template-permissions"></a>

デフォルトでは、 ユーザーには起動テンプレートを使用するためのアクセス許可がありません。起動テンプレートと起動テンプレートバージョンの作成、変更、記述、および削除のアクセス許可をユーザーに付与するポリシーを作成できます。一部の起動テンプレートアクションにリソースレベルのアクセス許可を適用して、ユーザーがこれらのアクションに対する特定のリソースを使用する機能を制御することもできます。詳細については、[例: 起動テンプレートの使用](ExamplePolicies_EC2.md#iam-example-launch-templates)のポリシー例を参照してください。

ユーザーに `ec2:CreateLaunchTemplate` および `ec2:CreateLaunchTemplateVersion` のアクションを使用するアクセス許可を付与するには注意が必要です。リソースレベルのアクセス許可を使用して、ユーザーが起動テンプレートで指定できるリソースを制御することはできません。インスタンス起動のために使用されるリソースを制限するには、起動テンプレートと起動テンプレートのバージョンを作成するアクセス許可を、適切な管理者のみに付与していることを確認してください。

## EC2 フリートまたはスポットフリートで起動テンプレートを使用する際の重要なセキュリティ上の懸念
<a name="launch-template-security-ec2fleet-spotfleet"></a>

起動テンプレートを使用するには、起動テンプレートおよび起動テンプレートのバージョンを作成、変更、記述、および削除するアクセス許可をユーザーに付与する必要があります。`ec2:CreateLaunchTemplate` および `ec2:CreateLaunchTemplateVersion` アクションへのアクセスを制御することで、起動テンプレートと起動テンプレートのバージョンをどのユーザーが作成できるかを制御できます。`ec2:ModifyLaunchTemplate` アクションへのアクセスを制御することで、起動テンプレートを変更できるユーザーを管理することもできます。

**重要**  
EC2 フリートまたはスポットフリートが「最新」または「デフォルト」の起動テンプレートバージョンを使用するように設定されている場合、後でそれらが変更されて起動テンプレートの別のバージョンを指すようになっても、そのフリートでは認識されません。「最新」または「デフォルト」に別の起動テンプレートバージョンが使用されている場合、フリートの目標容量を満たすために新しいインスタンスを起動する際に、Amazon EC2 により完了すべきアクションのアクセス許可が再確認されることはありません。これは、起動テンプレートバージョン (特にユーザーがデフォルトの起動テンプレートバージョンを変更できる `ec2:ModifyLaunchTemplate` アクション) を作成および管理できるユーザーにアクセス許可を付与する際の重要な考慮事項です。

起動テンプレート API の EC2 アクションを使用するアクセス許可をユーザーに付与すると、インスタンスプロファイル (IAM ロールのコンテナ) を含む別の起動テンプレートバージョンを指すように EC2 フリートまたはスポットフリートを作成および更新する場合でも、ユーザーに `iam:PassRole` アクセス許可が効果的に付与されます。つまり、場合によっては `iam:PassRole` アクセス許可がなくても、起動テンプレートを更新して IAM ロールをインスタンスに渡すことができます。詳細および IAM ポリシーの例については、「IAM ユーザーガイド」の「[Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス許可を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)」を参照してください。

詳細については、「[起動テンプレートの使用の管理](#launch-template-permissions)」および「[例: 起動テンプレートの使用](ExamplePolicies_EC2.md#iam-example-launch-templates)」を参照してください。

# Amazon EC2 起動テンプレートを作成する
<a name="create-launch-template"></a>

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

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

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

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

**Topics**
+ [パラメータを指定して起動テンプレートを作成する](#create-launch-template-define-parameters)
+ [既存の起動テンプレートからの起動テンプレートの作成](#create-launch-template-from-existing-launch-template)
+ [インスタンスからの起動テンプレートの作成](#create-launch-template-from-instance)
+ [AMI ID のかわりに Systems Manager パラメータを使用する](#use-an-ssm-parameter-instead-of-an-ami-id)

## パラメータを指定して起動テンプレートを作成する
<a name="create-launch-template-define-parameters"></a>

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

各パラメータの説明については、「[Amazon EC2 インスタンス設定パラメータのリファレンス](ec2-instance-launch-parameters.md)」を参照してください。

------
#### [ Console ]

**起動テンプレートを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**起動テンプレート**]、[**起動テンプレートの作成**] の順に選択してください。

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

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

   1. [**Template version description**] (テンプレートバージョンの説明) に、起動テンプレートバージョンの短い説明を入力してください。

   1. 作成時に起動テンプレートに[タグを付ける](Using_Tags.md)には、**[テンプレートタグ]** を展開し、**[新しいタグの追加]** を選択して、タグのキーと値のペアを入力してください。追加するタグごとに **[新しいタグを追加]** を選択してください。
**注記**  
インスタンスの起動時に作成されるリソースにタグを付けるには、**[Resource tags]** (リソースタグ) のタグを指定する必要があります。詳細については、この手順のステップ 9 を参照してください。

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

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

1. **[インスタンスタイプ]** で、**[起動テンプレートに含めない]** を選択したままにするか、インスタンスタイプを選択するか、インスタンス属性を指定して Amazon EC2 がそれらの属性でインスタンスタイプを識別できるようにすることができます。
**注記**  
インスタンス属性の指定がサポートされるのは、Auto Scaling グループ、EC2 フリート、およびスポットフリートによってインスタンスを起動するために起動テンプレートが使用される場合のみです。詳細については「[Create mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)」と「[EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する](ec2-fleet-attribute-based-instance-type-selection.md)」を参照してください。  
[インスタンス起動ウィザード](ec2-launch-instance-wizard.md)または [RunInstances API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) で起動テンプレートを使用する予定がある場合は、インスタンスタイプ属性を指定できません。

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

   どのインスタンスタイプを選択するかわからない場合は、次の操作を実行できます。
   + **[インスタンスタイプの比較]** を選択して、vCPU の数、アーキテクチャ、メモリ量 (GiB)、ストレージ量 (GB)、ストレージタイプ、ネットワークパフォーマンスの属性によってさまざまなインスタンスタイプを比較します。
   + **[アドバイスの取得]** を選択して、EC2 インスタンスタイプファインダーからインスタンスタイプに関するガイダンスやアドバイスを取得します。詳細については、「[EC2 インスタンスタイプファインダーからレコメンデーションを取得する](get-ec2-instance-type-recommendations.md)」を参照してください。
**注記**  
アカウントの作成日に応じて、Amazon EC2 を無料利用枠で使用できる場合があります。  
2025 年 7 月 15 日より前に AWS アカウントを作成していて、12 か月が経過していない場合は、**[t2.micro]** インスタンスタイプ (**[t2.micro]** が利用できないリージョンでは **[t3.micro]** インスタンスタイプ) を選択することで、Amazon EC2 の無料利用枠を使用できます。**[t3.micro]** インスタンスを起動すると、デフォルトで [**[Unlimited]** モード](burstable-performance-instances-unlimited-mode.md)になり、CPU 使用率に基づいて追加料金が発生する可能性があることに注意してください。インスタンスタイプを無料利用枠で使用できる場合、**[無料利用枠の対象]** とラベル付けされます。  
2025 年 7 月 15 日以降に AWS アカウント を作成した場合、**t3.micro**、**t3.small**、**t4g.micro**、**t4g.small**、**c7i-flex.large**、**m7i-flex.large** インスタンスタイプを 6 か月間、またはクレジットを使い切るまで使用できます。  
詳細については、「[2025 年 7 月 15 日より前とそれ以降の無料利用枠の特典](ec2-free-tier-usage.md#ec2-free-tier-comparison)」を参照してください。

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

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

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

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

   起動テンプレートの使用時に作成される次のリソースにタグを指定できます。
   + インスタンス
   + ボリューム
   + Elastic graphics
   + スポットインスタンスリクエスト
   + ネットワークインターフェイス
**注記**  
起動テンプレート自体にタグを付けるには、**[Template tags]** (テンプレートタグ) でタグを指定する必要があります。詳細については、この手順のステップ 3 を参照してください。

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

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

1. 起動テンプレートを作成する準備ができたら、**[Create launch template]** (起動テンプレートの作成) をクリックしてください。

------
#### [ AWS CLI ]

**起動テンプレートを作成するには**  
[create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) コマンドを使用します。

```
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-0abcdef1234567890"
    }],
    "ImageId": "ami-0abcdef1234567890",
    "InstanceType": "r5.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](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2LaunchTemplate.html) コマンドレットを使用します。

```
$launchTemplateData = [Amazon.EC2.Model.RequestLaunchTemplateData]@{
    ImageId = 'ami-0abcdef1234567890'
    InstanceType = 'r5.4xlarge'
    NetworkInterfaces = @(
        [Amazon.EC2.Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]@{
            AssociatePublicIpAddress = $true
            DeviceIndex = 0
            Ipv6AddressCount = 1
            SubnetId = 'subnet-0abcdef1234567890'
        }
    )
    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}
```

------

## 既存の起動テンプレートからの起動テンプレートの作成
<a name="create-launch-template-from-existing-launch-template"></a>

既存の起動テンプレートをクローンして、新しい起動テンプレートを作成するようにパラメータを調整できます。ただし、これを実行できるのは、Amazon EC2 コンソールを使用している場合のみです。AWS CLI はテンプレートのクローン作成をサポートしていません。各パラメータの説明については、「[Amazon EC2 インスタンス設定パラメータのリファレンス](ec2-instance-launch-parameters.md)」を参照してください。

------
#### [ Console ]

**既存の起動テンプレートから起動テンプレートを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**起動テンプレート**]、[**起動テンプレートの作成**] の順に選択してください。

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

1. [**Template version description**] (テンプレートバージョンの説明) に、起動テンプレートバージョンの短い説明を入力してください。

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

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

1. **[Source template version]** (ソーステンプレートのバージョン) で、新しい起動テンプレートのベースとなる起動テンプレートのバージョンを選択してください。

1. 必要に応じて起動パラメータを調整し、[**起動テンプレートの作成**] を選択してください。

------

## インスタンスからの起動テンプレートの作成
<a name="create-launch-template-from-instance"></a>

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

------
#### [ Console ]

**インスタンスから起動テンプレートを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選び、**[アクション]**、**[イメージとテンプレート]**、**[インスタンスからテンプレートを作成]** の順に選択してください。

1. 名前、説明、およびタグを入力し、必要に応じて起動パラメータを調整します。
**注記**  
インスタンスから起動テンプレートを作成するとき、そのインスタンスのネットワークインターフェイス ID と IP アドレスはテンプレートに含まれません。

1. [**起動テンプレートの作成**] を選択してください。

------
#### [ AWS CLI ]

AWS CLI を使用して既存のインスタンスから起動テンプレートを作成するには、まずインスタンスから起動テンプレートデータを取得し、次に起動テンプレートデータを使用して起動テンプレートを作成します。

**インスタンスから起動テンプレートデータを取得するには**
+ [get-launch-template-data](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-launch-template-data.html) コマンドを使用して、インスタンス 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
  ```

**起動テンプレートデータを使用して起動テンプレートを作成するには**
+ [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) コマンドを使用して、前の手順の出力を使用して起動テンプレートを作成します。AWS CLI を使用した起動テンプレートの作成の詳細については、[パラメータを指定して起動テンプレートを作成する](#create-launch-template-define-parameters)を参照してください。

------

## AMI ID のかわりに Systems Manager パラメータを使用する
<a name="use-an-ssm-parameter-instead-of-an-ami-id"></a>

起動テンプレートで AMI ID を指定する代わりに、AWS Systems Manager パラメータを指定できます。AMI ID が変更された場合は、Systems Manager パラメータストアの Systems Manager パラメータを更新することで、AMI ID を一箇所で更新できます。パラメータは、他の AWS アカウント と[共有](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html)することもできます。AMI パラメータは、1 つのアカウントで一元的に保存および管理し、これを参照する必要がある他のすべてのアカウントに共有することができます。Systems Manager パラメータを使用すると、すべての起動テンプレートを 1 回のアクションで更新できます。

Systems Manager パラメータは、[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) で作成できるユーザー定義のキーと値のペアです。パラメータストアは、アプリケーションの設定値を保存するための一元的な場所を提供します。

次の図では、`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 パラメータを使用して起動テンプレートを更新します。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/launch-template-ami-alias.png)


### AMI ID の Systems Manager パラメータ形式
<a name="ssm-parameter-format-for-ami-ids"></a>

起動テンプレートを AMI ID の代わりに使用する場合、ユーザー定義の Systems Manager パラメータを次の形式に従う必要があります。
+ パラメータ型: `String`
+ パラメータデータ型: `aws:ec2:image` - これにより、パラメータストアは入力した値が AMI ID の適切な形式であることを検証します。

AMI ID での有効なパラメータの作成については、「*AWS Systems Manager ユーザーガイド*」の「[Systems Manager パラメータの作成](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)」を参照してください。

### 起動テンプレートの Systems Manager パラメータ形式
<a name="ssm-parameter-format-in-launch-templates"></a>

起動テンプレートの 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 は、特定のバージョンのパラメータにマッピングできる[パラメータラベル](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html)をサポートしています。

例えば、`golden-ami` パラメータには、`1`、`2` および `3` の 3 つのバージョンがあります。バージョン `2` にマッピングするパラメータラベル `beta` と、バージョン `3` にマップするパラメータラベル `prod` を作成できます。

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

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

### 起動テンプレートの Systems Manager パラメータを指定する
<a name="specify-systems-manager-parameter-in-launch-template"></a>

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

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**起動テンプレート**]、[**起動テンプレートの作成**] の順に選択してください。

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

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

1. 検索バーの右側にある矢印ボタンを選択したら、**[カスタム値を指定 / Systems Manager パラメータ]** を選択してください。

1. **[カスタム値または 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***

   1. [**Save**] を選択してください。

1. 必要に応じて他の起動テンプレートパラメータを指定し、その後に **[起動テンプレートの作成]** を選択してください。

詳細については、「[パラメータを指定して起動テンプレートを作成する](#create-launch-template-define-parameters)」を参照してください。

------
#### [ AWS CLI ]

**起動テンプレートの Systems Manager パラメータを指定するには**
+ [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) コマンドを使用して、起動テンプレートを作成します。使用する 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 を取得していることを確認する
<a name="ssm-parameter-verify-ami-id"></a>

**Systems Manager のパラメータを実際の AMI ID に変換するには**  
[describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) コマンドを使用して、`--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",
            }
        }
    ]
}
```

### 関連リソース
<a name="ssm-parameter-related-resources"></a>

Systems Manager パラメータの使用に関する詳細は、Systems Manager のドキュメントの次のリファレンス資料を参照してください。
+ Amazon EC2 でサポートされている AMI パブリックパラメータを検索する方法については、「[Calling AMI public parameters](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)」を参照してください。
+ パラメータを他の AWS アカウントと共有する方法、または AWS Organizations を介して共有する方法については、「[Working with shared parameters](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html)」を参照してください。
+ パラメータが正常に作成されたかどうかをモニタリングする方法については、「[Native parameter support for Amazon Machine Image IDs](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)」を参照してください。

### 制限事項
<a name="ssm-parameter-limitations"></a>
+ タイプが `instant` の EC2 フリートのみが、AMI ID の代わりに Systems Manager パラメータが指定されている起動テンプレートを使用できます。
+ タイプが `maintain` と `request` の EC2 フリートと、さらにスポットフリートでは、AMI ID の代わりに Systems Manager パラメータが指定されている起動テンプレートを使用できません。タイプが `maintain` と `request` の EC2 フリートと、さらにスポットフリートでは、起動テンプレートに AMI を指定する場合、AMI ID を指定する必要があります。
+ EC2 フリートで[属性ベースのインスタンスの選択](ec2-fleet-attribute-based-instance-type-selection.md)を使用した場合は、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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/using-systems-manager-parameters.html)」を参照してください。

# 起動テンプレートの変更 (起動テンプレートのバージョンの管理)
<a name="manage-launch-template-versions"></a>

起動テンプレートは変更不可能です。起動テンプレートを作成したら、それを変更することはできません。代わりに、必要な変更を含む新しいバージョンの起動テンプレートを作成できます。

起動テンプレートの別のバージョンの作成、デフォルトバージョンの設定、起動テンプレートバージョンの説明、不要になった[バージョンの削除](delete-launch-template.md#delete-launch-template-version)を行うことができます。

**Topics**
+ [起動テンプレートのバージョンの作成](#create-launch-template-version)
+ [デフォルトの起動テンプレートのバージョンの設定](#set-default-launch-template-version)
+ [起動テンプレートのバージョンの説明](#describe-launch-template-version)

## 起動テンプレートのバージョンの作成
<a name="create-launch-template-version"></a>

起動テンプレートのバージョンを作成する際、新しいバージョンに新しい起動パラメータを指定するか、または既存のバージョンをベースとして使用できます。各パラメータの説明については、「[Amazon EC2 インスタンス設定パラメータのリファレンス](ec2-instance-launch-parameters.md)」を参照してください。

------
#### [ Console ]

**起動テンプレートのバージョンを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Launch Templates**] を選択してください。

1. 起動テンプレートを選択し、[**アクション**]、[**Modify template (Create new version)**] の順に選択してください。

1. [**Template version description**] (テンプレートバージョンの説明) に、起動テンプレートバージョンについての説明を入力してください。

1. (オプション) **[Source template]** (ソーステンプレート) を展開し、新しい起動テンプレートバージョンのベースとして使用する起動テンプレートのバージョンを選択してください。新しい起動テンプレートバージョンは、この起動テンプレートバージョンから起動パラメータを継承します。

1. 必要に応じて起動パラメータを変更します。

1. [**起動テンプレートの作成**] を選択してください。

------
#### [ AWS CLI ]

**起動テンプレートのバージョンを作成するには**  
[create-launch-template-version](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template-version.html) コマンドを使用します。新しいバージョンのベースとなるソースバージョンを指定できます。新しいバージョンはこのバージョンの起動パラメータを継承し、`--launch-template-data` を使用してパラメータを上書きできます。次の例では、起動テンプレートのバージョン 1 に基づいて新しいバージョンを作成し、異なる AMI ID を指定します。

```
aws ec2 create-launch-template-version \
    --launch-template-id lt-0abcd290751193123 \
    --version-description WebVersion2 \
    --source-version 1 \
    --launch-template-data "ImageId=ami-0abcdef1234567890"
```

------
#### [ PowerShell ]

**起動テンプレートのバージョンを作成するには**  
[New-EC2LaunchTemplateVersion](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2LaunchTemplateVersion.html) コマンドレットを使用します。新しいバージョンのベースとなるソースバージョンを指定できます。新しいバージョンはこのバージョンの起動パラメータを継承し、`LaunchTemplateData` を使用してパラメータを上書きできます。次の例では、起動テンプレートのバージョン 1 に基づいて新しいバージョンを作成し、異なる AMI ID を指定します。

```
New-EC2LaunchTemplateVersion `
    -LaunchTemplateId lt-0abcd290751193123 `
    -VersionDescription WebVersion2 `
    -SourceVersion 1 `
    -LaunchTemplateData (
        New-Object `
            -TypeName Amazon.EC2.Model.RequestLaunchTemplateData `
            -Property @{ImageId = 'ami-0abcdef1234567890'}
    )
```

------

## デフォルトの起動テンプレートのバージョンの設定
<a name="set-default-launch-template-version"></a>

起動テンプレートにデフォルトバージョンを設定できます。起動テンプレートからインスタンスを起動し、バージョンを指定しない場合、インスタンスはデフォルトバージョンのパラメータを使用して起動されます。

------
#### [ Console ]

**デフォルトの起動テンプレートのバージョンを設定するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Launch Templates**] を選択してください。

1. 起動テンプレートを選択し、[**アクション**]、[**デフォルトバージョンの設定**] を選択してください。

1. [**テンプレートバージョン**] で、デフォルトバージョンとして設定するバージョン番号を選択し、[**デフォルトバージョンとして設定**] を選択してください。

------
#### [ AWS CLI ]

**デフォルトの起動テンプレートのバージョンを設定するには**  
[modify-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-launch-template.html) コマンドを使用します。

```
aws ec2 modify-launch-template \
    --launch-template-id lt-0abcd290751193123 \
    --default-version 2
```

------
#### [ PowerShell ]

**デフォルトの起動テンプレートのバージョンを設定するには**  
[Edit-EC2LaunchTemplate](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2LaunchTemplate.html) コマンドレットを使用します。

```
Edit-EC2LaunchTemplate `
    -LaunchTemplateId lt-0abcd290751193123 `
    -DefaultVersion 2
```

------

## 起動テンプレートのバージョンの説明
<a name="describe-launch-template-version"></a>

コンソールを使用して、選択した起動テンプレートのすべてのバージョンを表示したり、特定のバージョン番号と一致する最新バージョンやデフォルトバージョンの起動テンプレートを一覧表示したりできます。AWS CLI を使用すると、指定した起動テンプレートのすべてのバージョン、各バージョン、特定範囲のバージョンを表示できます。また、アカウント内にあるすべての起動テンプレートについて、すべての最新バージョンを表示したり、すべてのデフォルトバージョンを表示したりすることもできます。

------
#### [ Console ]

**起動テンプレートのバージョンを説明するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Launch Templates**] を選択してください。

1. 特定の起動テンプレートのバージョンを表示したり、特定のバージョン番号と一致する最新バージョンやデフォルトバージョンの起動テンプレートを一覧表示したりできます。
   + 起動テンプレートのバージョンを表示するには、起動テンプレートを選択してください。[**バージョン**] タブの [**バージョン**] から、詳細を表示するバージョンを選択してください。
   + 特定のバージョン番号と一致する最新バージョンの起動テンプレートを一覧表示するには、検索バーから [**最新バージョン**] を選択し、バージョン番号を選択してください。
   + 特定のバージョン番号と一致するデフォルトバージョンの起動テンプレートを一覧表示するには、検索バーから [**デフォルトバージョン**] を選択し、バージョン番号を選択してください。

------
#### [ AWS CLI ]

**起動テンプレートのバージョンを説明するには**  
[describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) コマンドを使用して、バージョン番号を指定します。次の例では、バージョン `1` と *`3`* を指定しています。

```
aws ec2 describe-launch-template-versions \
    --launch-template-id lt-0abcd290751193123 \
    --versions 1 3
```

**アカウント内にある起動テンプレートの最新バージョンやデフォルトバージョンを記述するには**  
[delete-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) コマンドを使用し、`$Latest` または `$Default` を指定するか、両方を指定します。呼び出しでは、起動テンプレートの ID と名前を省略する必要があります。バージョン番号を指定することはできません。

```
aws ec2 describe-launch-template-versions \
    --versions "$Latest,$Default"
```

------
#### [ PowerShell ]

**起動テンプレートのバージョンを説明するには**  
[Get-EC2TemplateVersion](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2TemplateVersion.html) コマンドレットを使用して、バージョン番号を指定します。次の例では、バージョン `1` と *`3`* を指定しています。

```
Get-EC2TemplateVersion `
    -LaunchTemplateId lt-0abcd290751193123 `
    -Version 1,3
```

**アカウント内にある起動テンプレートの最新バージョンやデフォルトバージョンを記述するには**  
[Get-EC2TemplateVersion](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2TemplateVersion.html) コマンドレットを使用して `$Latest`、`$Default`、またはその両方を指定します。呼び出しでは、起動テンプレートの ID と名前を省略する必要があります。バージョン番号を指定することはできません。

```
Get-EC2TemplateVersion `
    -Version '$Latest','$Default'
```



------

# 起動テンプレートまたは起動テンプレートのバージョンを削除する
<a name="delete-launch-template"></a>

起動テンプレートが不要になった場合には、それを削除することができます。起動テンプレートを削除すると、すべてのバージョンが削除されます。起動テンプレートの特定のバージョンのみを削除する場合は、起動テンプレートの他のバージョンを保持したまま削除できます。

起動テンプレートまたは起動テンプレートのバージョンを削除しても、起動テンプレートから起動したインスタンスには影響しません。

## 起動テンプレートとそのすべてのバージョンを削除する
<a name="delete-launch-template-including-versions"></a>

起動テンプレート (すべてのバージョンを含む) が不要になった場合は、起動テンプレートを削除できます。起動テンプレートを削除すると、すべてのバージョンが削除されます。

------
#### [ Console ]

**起動テンプレートとそのすべてのバージョンを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Launch Templates**] を選択してください。

1. 起動テンプレートを選択し、[**アクション**]、[**テンプレートの削除**] を選択してください。

1. **Delete** と入力して削除を確認し、[**Delete (削除)**] を選択してください。

------
#### [ AWS CLI ]

**起動テンプレートとそのすべてのバージョンを削除するには**  
 [delete-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-launch-template.html) コマンドを使用して、起動テンプレートを指定します。

```
aws ec2 delete-launch-template --launch-template-id lt-01238c059e3466abc
```

------
#### [ PowerShell ]

**起動テンプレートとそのすべてのバージョンを削除するには**  
[Remove-EC2LaunchTemplate](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2LaunchTemplate.html) AWS Tools for PowerShellコマンドを使用して、起動テンプレートを指定します。`-Force` を省略すると、PowerShell で確認を求められます。

```
Remove-EC2LaunchTemplate -LaunchTemplateId lt-0123456789example -Force
```

------

## 起動テンプレートのバージョンの削除
<a name="delete-launch-template-version"></a>

起動テンプレートのバージョンが不要になった場合には、それを削除することができます。

**考慮事項**
+ 削除後にバージョン番号を置き換えることはできません。
+ 起動テンプレートのデフォルトバージョンは削除できません。まず、デフォルトとして別のバージョンを割り当てる必要があります。デフォルトバージョンが起動テンプレートの唯一のバージョンである場合は、 [起動テンプレート全体を削除する必要があります](#delete-launch-template)。
+ コンソールを使用する場合、一度に削除できる起動テンプレートバージョンは 1 つです。AWS CLI を使用する場合は、一度のリクエストで最大 200個 の起動テンプレートバージョンを削除できます。1 回のリクエストで 200 を超えるバージョンを削除するには、[起動テンプレートを削除します](#delete-launch-template)。その場合、バージョンもすべて削除されます。

------
#### [ Console ]

**起動テンプレートのバージョンを削除するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Launch Templates**] を選択してください。

1. 起動テンプレートを選択し、[**アクション**]、[**テンプレートのバージョンの削除**] を選択してください。

1. 削除するバージョンを選択し、[**削除**] を選択してください。

------
#### [ AWS CLI ]

**起動テンプレートのバージョンを削除するには**  
[delete-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-launch-template-versions.html) コマンドを使用して、削除するバージョン番号を指定します。1 回のリクエストで削除する起動テンプレートバージョンを最大 200 個指定できます。

```
aws ec2 delete-launch-template-versions \
    --launch-template-id lt-0abcd290751193123 \
    --versions 1
```

------
#### [ PowerShell ]

**起動テンプレートのバージョンを削除するには**  
[Remove-EC2TemplateVersion](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2TemplateVersion.html) コマンドレットを使用して、削除するバージョン番号を指定します。1 回のリクエストで削除する起動テンプレートバージョンを最大 200 個指定できます。

```
Remove-EC2TemplateVersion `
    -LaunchTemplateId lt-0abcd290751193123 `
    -Version 1
```

------