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>
などのように、エラーメッセージが返される。