この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
LaunchTemplateを利用して、EBS最適化を定義しましたが、マネコンの表示上「無効」と表示されてしまいました。
恐らく、マネコン表示上の問題だけだとは思いますが、モヤモヤしましたので、「有効」と表示されるよう検証してみました。
結論
LaunchTemplateと並列でEbsOptimizedを記述することでEBS最適化が(マネコンの表示上も)有効になります。
AWSTemplateFormatVersion: 2010-09-09
Description: My EC2
Parameters:
SystemName:
Type: String
Default: dev
KeyName:
Description: A Key name to access EC2
Type: AWS::EC2::KeyPair::KeyName
Default: # 指定したキー
AMI:
Type: String
Default: ami-08a8688fb7eacb171
InstanceType:
Type: String
Default: r5.large
EC2VolumeSize:
Type: Number
Default: 8
Resources:
InstanceProfile:
Type: "AWS::IAM::InstanceProfile"
Properties:
Path: "/"
Roles:
- # 指定したロール名
WebServerLaunchTemplate:
Type: AWS::EC2::LaunchTemplate
Properties:
LaunchTemplateData:
ImageId: !Ref AMI
InstanceType: !Ref InstanceType
KeyName: !Ref KeyName
BlockDeviceMappings:
- DeviceName: /dev/sda1
Ebs:
VolumeType: "gp2"
VolumeSize: !Ref EC2VolumeSize
DeleteOnTermination: true
# EbsOptimized: true
IamInstanceProfile:
Arn: !GetAtt InstanceProfile.Arn
WebServer:
Type: AWS::EC2::Instance
Properties:
LaunchTemplate:
LaunchTemplateId: !Ref WebServerLaunchTemplate
Version: 1
SubnetId: # 指定したサブネット
EbsOptimized: true
Tags:
- Key: Name
Value: !Sub ${SystemName}-web-server
LaunchTemplateData配下に定義した場合
リファレンスでは、LaunchTemplateData配下に 、EbsOptimized
が定義できます。しかしながら、こちらに定義した場合、実際に構築されたEC2をマネコンで確認してみると、EBS最適化は「無効」と表示されていました(恐らく、表示上の問題)。
しかしながら、一旦「インスタンスを停止し、インスタンスタイプを変更」を押してみると、「このインスタンスタイプでは、デフォルトでEBS最適化が有効になっています。」と表示されています。EBS最適化(デフォルト)の章を見ても、r5.largeは含まれています。 ※そのまま何も変更せず、「適用」を押すことで、表示上も「有効」にすることができます。
最後に
LaunchTemplateプロパティと並列にEbsOptimized
を定義することで「有効」表示がされました。もし、同じように悩んでいる方の助けになりましたら幸いです。