JSONファイルから起動する
EC2をAWS CLIから起動する際、JSONファイルに設定情報を記述しておくと、複雑なオプションコマンドを書き連ねる必要がなく、設定の管理もラクである。JSON形式の設定ファイルの雛形は、
<br>
aws ec2 run-instances --generate-cli-skeleton > /tmp/ec2_settings.json<br>
で取得することが可能であるが、不要な設定も多く含まれているので、どの設定を有効とするかは精査が必要である。AWSマネージメントコンソールで設定可能な項目と同程度の設定であれば、以下の設定で起動することが可能である。
<br>
{<br>
"DryRun": false,<br>
"ImageId": "ami-XXXXXXXX",<br>
"KeyName": "XXXXXXXX",<br>
"SecurityGroups": [<br>
"XXXXXXXX"<br>
],<br>
"InstanceType": "t2.micro",<br>
"BlockDeviceMappings": [<br>
{<br>
"DeviceName": "/dev/xvda",<br>
"Ebs": {<br>
"VolumeSize": 8,<br>
"DeleteOnTermination": true,<br>
"VolumeType": "gp2"<br>
}<br>
}<br>
],<br>
"Monitoring": {<br>
"Enabled": true<br>
},<br>
"DisableApiTermination": true,<br>
"InstanceInitiatedShutdownBehavior": "stop",<br>
"IamInstanceProfile": {<br>
"Name": "XXXXXXXX"<br>
}<br>
}<br>
それぞれの設定項目と、AWSマネージメントコンソール上の表示との対応は、以下の通り。
JSON項目名 |
AWSマネージメントコンソール上の名称 |
内容 |
DryRun |
– |
設定ファイル作成時は、DryRunで確認する |
ImageId |
Amazon マシンイメージ |
AMIのID |
KeyName |
キーペアの選択 |
キーペア |
SecurityGroups |
セキュリティグループの設定 |
セキュリティグループ名 |
InstanceType |
インスタンスタイプの選択 |
インスタンスタイプ |
BlockDeviceMappings/DeviceName |
デバイス |
AWSマネージメントコンソールは、通常/dev/xvdaが指定される |
BlockDeviceMappings/EBS/VolumeSize |
サイズ(GiB) |
ボリュームサイズ |
BlockDeviceMappings/EBS/DeleteOnTermination |
合わせて削除 |
インスタンス削除時にボリュームも削除するか否か |
BlockDeviceMappings/EBS/VolumeType |
ボリュームタイプ |
|
Monitoring |
モニタリング |
CloudWatch 詳細モニタリングを有効化 |
DisableApiTermination |
削除保護の有効化 |
誤った削除からの保護 |
InstanceInitiatedShutdownBehavior |
シャットダウン動作 |
シャットダウン時にインスタンスを削除するか停止するか |
IamInstanceProfile |
IAM ロール |
IAM インスタンスプロファイル |
なお、Tagはインスタンスを起動しないと指定できない。
この設定ファイルを用いてEC2インスタンスを起動する場合は、以下のコマンドを実行する。
<br>
aws ec2 run-instances --cli-input-json file:///tmp/ec2_settings.json<br>
この際、設定ファイルに誤りがある場合には、
<br>
Parameter validation failed:<br>
Invalid type for parameter SecurityGroups, value: XXXXXXXX, type: <type 'unicode'>, valid types: <type 'list'>, <type 'tuple'><br>
などのように、エラーメッセージが返される。