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