一定の条件の下で EC2 インスタンスを復旧する CloudWatch アラームを作成する必要があります。また、指定した受取人に通知を送信するアラームも作成する必要があります。「インスタンスを復旧する」と「インスタンスを停止、終了、再起動、または復旧するアラームを作成する」の説明に従って、この機能を有効にするためのすべての必要条件を満たしています。この目的で CloudWatch アラームを作成しようとすると、アラーム通知オプション([Topic Name] と [Recipients])も、[Take the action:] に表示される [Recover this instance] オプションも無効になります。
復旧アクションは現在、一時的なインスタンスストアボリュームを使用する EC2 インスタンス(インスタンスストアボリュームのブロックデバイスマッピングを使用して起動されるインスタンスなど)に対してサポートされていません。
インスタンスストアボリュームを使用するように EC2 インスタンスが設定されているかどうか調べる
以下のいずれかの方法を使用して、インスタンスストアボリュームを使用するように EC2 インスタンスが設定されているかどうか調べます。
- EC2 インスタンスで Linux が実行されている場合は、インスタンスに接続し、コマンドシェルから以下のコマンドを実行して、インスタンスストアボリュームがすべて EC2 インスタンスにマッピングされているかどうか調べます。
curl http://169.254.169.254/latest/meta-data/block-device-mapping/
[ec2-user@ip-172.31.2.161 ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
ami
ephemeral0
ephemeral2
ルート
「ephemeral」で始まるボリュームは、EC2 インスタンスにマッピングされたインスタンスストアボリュームです。
- EC2 インスタンスで Windows が実行されている場合は、インスタンスに接続し、ブラウザーを起動して、http://169.254.169.254/latest/meta-data/block-device-mapping/ を開きます。
「ephemeral」で始まるボリュームは、EC2 インスタンスにマッピングされたインスタンスストアボリュームです。
- この情報は、EC2 コンソールで EC2 インスタンスに対して Amazon Machine Image (AMI) を確認することによって見ることができます。EC2 コンソールでは AMI の詳細タブを表示し、ターゲットが「=ephemeral#」(# は 0 ~ 23 のいずれかの整数)の任意のブロックデバイスインスタンスストアボリュームを探します。
- AWS のコマンドラインインターフェイス(CLI)から、以下のコマンドを実行すると、AMI の BlockDeviceMappings が含まれた情報が返されます。このコマンドの --image-ids パラメータには実際の値を指定してください。
aws ec2 describe-images --image-ids ami-11112222
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap- ",
"VolumeSize": 8,
"VolumeType": "gp2",
"Encrypted": false
}
},
{
"DeviceName": "/dev/sdb",
"VirtualName": "ep0hemeral0"
},
{
"DeviceName": "/dev/sdc",
"VirtualName": "ephemeral2"
}
],
ここでも、インスタンスストアボリュームに ephemeral# を指定しています(# は 0 ~ 23 のいずれかの整数)。
インスタンスストアボリュームのブロックデバイスマッピングは Linux または Windows のいずれでも実行できます。これは、インスタンスタイプでインスタンスストアボリュームの使用が正式にサポートされていない場合でも同様です。
このマッピングが実行されるのは、AWS CLI、SDK、またはサービス(CloudFormation など)を使用して、インスタンスストアボリュームを含むブロックデバイスマッピングにより AMI に基づいて EC2 インスタンスを起動するときです。EC2 コンソールを使用してインスタンスストアボリューム(T2、M4、C4 など)がサポートされていない EC2 インスタンスタイプを起動する場合、変更されたブロックデバイスマッピングは無視されるだけです。
AMI でのインスタンスストアボリュームへの参照をすべて削除するか無効にし、EC2 インスタンスを再起動する
EC2 インスタンスがインスタンスストアボリュームを使用していることを確認する場合は、インスタンスを再起動する必要があります。インスタンスストアボリュームは、既存の EC2 インスタンスに対して追加したり削除したりできないためです。AMI からインスタンスストアボリュームへの参照を削除してインスタンスを再起動するか、EC2 インスタンスを再起動するときに以下のいずれかの方法を使用して AMI のインスタンスストアボリュームへの参照を無効にすることができます。
- EC2 コンソールから EC2 インスタンスを起動して、インスタンスストアボリュームがサポートされていない EC2 インスタンスタイプの AMI を無効にします。
- AWS CLI から EC2 インスタンスを起動し、インスタンスストアボリュームを参照している AMI 内の各デバイスを手動で無効にします。前に例として示した AWS CLI 出力で、インスタンスストアボリュームにマッピングされたデバイスは「/dev/sdb」と「/dev/sdc」です。インスタンスストアボリュームへのこれらのデバイスのマッピングを無効にするには、以下の構文を使用して CLI から EC2 インスタンスを起動できます。
aws ec2 run-instances --image-id ami-11112222 --subnet-id subnet-11112222 --instance-type t2.medium --key-name my_key --associate-public-ip-address --block-device-mappings '[{"DeviceName": "/dev/sdb","NoDevice": ""},{"DeviceName": "/dev/sdc","NoDevice": ""}]'
AWS CLI を使用して EC2 インスタンスを実行する方法の詳細については、aws.ec2 実行インスタンスを参照してください。
- EC2 インスタンスが CloudFormation を使用して起動された場合は、インスタンスストアボリュームへのいずれのデバイスのマッピングを無効にする CloudFormation テンプレートを作成します。
{
"AWSTemplateFormatVersion" : "2010-09-09",
"リソース": {
"I4EY8I": {
"Type" : "AWS::EC2::Instance",
"Properties": {
"ImageId" : "ami-11112222",
"InstanceType" : "t2.medium",
"SubnetId" : "subnet-11112222",
"KeyName" : "my_key",
"BlockDeviceMappings" : [
{
"DeviceName":"/dev/sdb",
"NoDevice": {}
},
{
"DeviceName":"/dev/sdc",
"NoDevice": {}
}
]
}
}
}
}
- EC2 インスタンスが SDK を使用して起動された場合に、インスタンスストアボリュームへのデバイスのマッピングをすべて無効にする方法については、関連する SDK ドキュメントをご確認ください。
CloudWatch, アラーム, 復旧, EC2, Linux, Windows, インスタンスストア, ephemeral, ブロックデバイスマッピング, 無効