を使用した起動テンプレートの作成と管理の例 AWS CLI - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用した起動テンプレートの作成と管理の例 AWS CLI

起動テンプレートは、、 AWS Command Line Interface (AWS CLI) AWS Management Console、または SDKs を使用して作成および管理できます。このセクションでは、 から Amazon EC2 Auto Scaling の起動テンプレートを作成および管理する例を示します AWS CLI。

使用例

{ "LaunchTemplateName": "my-template-for-auto-scaling", "VersionDescription": "test description", "LaunchTemplateData": { "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "SecurityGroupIds": [ "sg-903004f88example" ], "KeyName": "MyKeyPair", "Monitoring": { "Enabled": true }, "Placement": { "Tenancy": "dedicated" }, "CreditSpecification": { "CpuCredits": "unlimited" }, "MetadataOptions": { "HttpTokens": "required", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled" } } }

基本的な起動テンプレートを作成する

基本的な起動テンプレートを作成するには、次のように create-launch-template コマンドを使用し、これらの変更を加えます。

  • を、インスタンスを起動する AMI の ID ami-04d5cc9b88exampleに置き換えます。

  • を、指定した AMI と互換性のあるインスタンスタイプt2.microに置き換えます。

この例では、 という名前の起動テンプレートを作成します。my-template-for-auto-scaling。 この起動テンプレートによって作成されたインスタンスがデフォルトの VPC で起動されると、デフォルトでパブリック IP アドレスを受け取ります。インスタンスがデフォルト以外の VPC で起動された場合、デフォルトではパブリック IP アドレスは受信されません。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

JSON 形式のパラメータの引用の詳細については、「 AWS Command Line Interface ユーザーガイド」の「文字列での引用符の使用 AWS CLI」を参照してください。

または、設定ファイルで JSON 形式のパラメータを指定することもできます。

次の例では、起動テンプレートパラメータ値の設定ファイルを参照して、基本的な起動テンプレートを作成します。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data file://config.json

config.json の内容:

{ "ImageId":"ami-04d5cc9b88example", "InstanceType":"t2.micro" }

起動時にインスタンスにタグ付けするタグを指定する

次の例では、起動時にタグ (例: purpose=webserver) をインスタンスに追加します。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"purpose","Value":"webserver"}]}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'
注記

起動テンプレートでインスタンスタグを指定して、Auto Scaling グループのタグをそのインスタンスに伝播することを選択した場合、すべてのタグがマージされます。起動テンプレートのタグと Auto Scaling グループのタグに同じタグキーが指定されている場合、グループのタグ値が優先されます。

インスタンスに渡す IAM ロールを指定する

次の例では、起動時にインスタンスに渡す IAM ロールに関連付けられたインスタンスプロファイルの名前を指定します。詳細については、「Amazon IAM インスタンスで実行されるアプリケーションの EC2 ロール」を参照してください。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"IamInstanceProfile":{"Name":"my-instance-profile"},"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

パブリック IP アドレスを割り当てる

次の create-launch-template の例では、デフォルト以外の VPC で起動されたインスタンスにパブリックアドレスを割り当てるように起動テンプレートを設定します。

注記

ネットワークインターフェイスを指定するときは、Auto Scaling グループGroupsがインスタンスを起動する VPC のセキュリティグループに対応する の値を指定します。VPC サブネットを Auto Scaling グループのプロパティとして指定します。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"AssociatePublicIpAddress":true,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

起動時にインスタンスを設定するユーザーデータスクリプトを指定する

次の例では、起動時にインスタンスを設定する base64-encoded 文字列としてユーザーデータスクリプトを指定します。create-launch-template コマンドには、base64 でエンコードされたユーザーデータが必要です。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"UserData":"IyEvYmluL2Jhc...","ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

ブロックデバイスマッピングを指定する

次の create-launch-template の例では、ブロックデバイスマッピングを使用して起動テンプレートを作成します。22 ギガバイトの EBS ボリュームは にマッピングされます/dev/xvdcz/dev/xvdcz ボリュームは汎用SSD (gp2) ボリュームタイプを使用し、アタッチされているインスタンスを終了すると削除されます。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"BlockDeviceMappings":[{"DeviceName":"/dev/xvdcz","Ebs":{"VolumeSize":22,"VolumeType":"gp2","DeleteOnTermination":true}}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

外部ベンダーからソフトウェアライセンスを取得するための Dedicated Hosts を指定する

ホストテナンシーを指定すると、ホストリソースグループと License Manager ライセンス構成を指定して、外部ベンダーから適格なソフトウェアライセンスを取得できます。次に、次の EC2 コマンドを使用して、create-launch-template インスタンスでライセンスを使用できます。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"Placement":{"Tenancy":"host","HostResourceGroupArn":"arn"},"LicenseSpecifications":[{"LicenseConfigurationArn":"arn"}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

既存のネットワークインターフェイスを指定する

次の create-launch-template の例では、既存のネットワークインターフェイスを使用するようにプライマリネットワークインターフェイスを設定します。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"NetworkInterfaceId":"eni-b9a5ac93","DeleteOnTermination":false}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

複数のネットワークインターフェイスを作成する

次の create-launch-template の例では、セカンダリネットワークインターフェイスを追加します。プライマリネットワークインターフェイスのデバイスインデックスは 0 で、セカンダリネットワークインターフェイスのデバイスインデックスは 1 です。

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"DeviceIndex":0,"Groups":["sg-903004f88example"],"DeleteOnTermination":true},{"DeviceIndex":1,"Groups":["sg-903004f88example"],"DeleteOnTermination":true}],"ImageId":"ami-04d5cc9b88example","InstanceType":"t2.micro"}'

複数のネットワークカードと Elastic Fabric Adapters (EFAs) をサポートするインスタンスタイプを使用する場合は、次の EFA コマンドを使用してセカンダリネットワークカードにセカンダリインターフェイスを追加し、create-launch-template を有効にできます。詳細については、「Amazon EFA ユーザーガイド」の「起動テンプレートへの単語の追加」を参照してください。 EC2

aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"NetworkInterfaces":[{"NetworkCardIndex":0,"DeviceIndex":0,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true},{"NetworkCardIndex":1,"DeviceIndex":1,"Groups":["sg-7c2270198example"],"InterfaceType":"efa","DeleteOnTermination":true}],"ImageId":"ami-09d95fab7fexample","InstanceType":"p4d.24xlarge"}'
警告

p4d.24xlarge インスタンスタイプは、このセクションの他の例よりも高いコストが発生します。P4d インスタンスの料金の詳細については、「Amazon EC2 P4d インスタンスの料金」を参照してください。

注記

同じサブネットから複数のネットワークインターフェイスをインスタンスにアタッチすると、特に Amazon Linux 以外のバリアントを使用するインスタンスでは、非対称ルーティングが発生する場合があります。このタイプの設定が必要な場合は、OS 内でセカンダリネットワークインターフェイスを設定する必要があります。例については、 AWS ナレッジセンターの「Ubuntu EC2 インスタンスでセカンダリネットワークインターフェイスを機能させるにはどうすればよいですか?」を参照してください。

起動テンプレートを管理する

AWS CLI には、起動テンプレートの管理に役立つその他のコマンドがいくつか含まれています。

起動テンプレートをリストして記述する

起動テンプレートに関する情報を取得するには、describe-launch-templates describe-launch-template-versions の 2 つの AWS CLI コマンドを使用できます。

describe-launch-templates コマンドを使用すると、作成した起動テンプレートのリストを取得できます。オプションを使用すると、起動テンプレート名、作成時間、タグキー、またはタグとキーバリューの組み合わせの結果をフィルタリングできます。このコマンドは、起動テンプレート識別子、最新バージョン、デフォルトバージョンなど、起動テンプレートに関する概要情報を返します。

次の例では、指定された起動テンプレートの概要を示します。

aws ec2 describe-launch-templates --launch-template-names my-template-for-auto-scaling

以下に、応答の例を示します。

{ "LaunchTemplates": [ { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreateTime": "2020-02-28T19:52:27.000Z", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } ] }

出力を 1 つの起動テンプレートだけに制限する --launch-template-names オプションを使用しない場合は、すべての起動テンプレートの情報が返されます。

次の describe-launch-template-versions コマンドは、指定された起動テンプレートのバージョンを説明する情報を提供します。

aws ec2 describe-launch-template-versions --launch-template-id lt-068f72b729example

以下に、応答の例を示します。

{ "LaunchTemplateVersions": [ { "VersionDescription": "version1", "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "VersionNumber": 1, "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "LaunchTemplateData": { "TagSpecifications": [ { "ResourceType": "instance", "Tags": [ { "Key": "purpose", "Value": "webserver" } ] } ], "ImageId": "ami-04d5cc9b88example", "InstanceType": "t2.micro", "NetworkInterfaces": [ { "DeviceIndex": 0, "DeleteOnTermination": true, "Groups": [ "sg-903004f88example" ], "AssociatePublicIpAddress": true } ] }, "DefaultVersion": true, "CreateTime": "2020-02-28T19:52:27.000Z" } ] }

起動テンプレートのバージョンの作成

次の create-launch-template-version コマンドは、起動テンプレートのバージョン 1 に基づいて新しい起動テンプレートバージョンを作成し、別の AMI ID を指定します。

aws ec2 create-launch-template-version --launch-template-id lt-068f72b729example --version-description version2 \ --source-version 1 --launch-template-data "ImageId=ami-c998b6b2example"

起動テンプレートのデフォルトバージョンを設定するには、modify-launch-template コマンドを使用します。

起動テンプレートのバージョンの削除

次の delete-launch-template-versions コマンドは、指定された起動テンプレートのバージョンを削除します。

aws ec2 delete-launch-template-versions --launch-template-id lt-068f72b729example --versions 1

起動テンプレートの削除

起動テンプレートが不要になった場合は、次の delete-launch-template コマンドを使用して削除できます。起動テンプレートを削除すると、すべてのバージョンが削除されます。

aws ec2 delete-launch-template --launch-template-id lt-068f72b729example

起動テンプレートを使用するように Auto Scaling グループを更新する

update-auto-scaling-group コマンドを使用して、既存の Auto Scaling グループに起動テンプレートを追加できます。

最新バージョンの起動テンプレートを使用するように Auto Scaling グループを更新する

次の update-auto-scaling-group コマンドは、指定された Auto Scaling グループを更新して、指定された起動テンプレートの最新バージョンを使用します。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateId=lt-068f72b729example,Version='$Latest'

特定バージョンの起動テンプレートを使用するように Auto Scaling グループを更新する

次の update-auto-scaling-group コマンドは、指定された Auto Scaling グループを更新して、指定された起動テンプレートの特定のバージョンを使用します。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-template-for-auto-scaling,Version='2'