JSONファイルから起動する
EC2をAWS CLIから起動する際、JSONファイルに設定情報を記述しておくと、複雑なオプションコマンドを書き連ねる必要がなく、設定の管理もラクである。JSON形式の設定ファイルの雛形は、
aws ec2 run-instances --generate-cli-skeleton > /tmp/ec2_settings.json
で取得することが可能であるが、不要な設定も多く含まれているので、どの設定を有効とするかは精査が必要である。AWSマネージメントコンソールで設定可能な項目と同程度の設定であれば、以下の設定で起動することが可能である。
{ "DryRun": false, "ImageId": "ami-XXXXXXXX", "KeyName": "XXXXXXXX", "SecurityGroups": [ "XXXXXXXX" ], "InstanceType": "t2.micro", "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 8, "DeleteOnTermination": true, "VolumeType": "gp2" } } ], "Monitoring": { "Enabled": true }, "DisableApiTermination": true, "InstanceInitiatedShutdownBehavior": "stop", "IamInstanceProfile": { "Name": "XXXXXXXX" } }
それぞれの設定項目と、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インスタンスを起動する場合は、以下のコマンドを実行する。
aws ec2 run-instances --cli-input-json file:///tmp/ec2_settings.json
この際、設定ファイルに誤りがある場合には、
Parameter validation failed: Invalid type for parameter SecurityGroups, value: XXXXXXXX, type: <type 'unicode'>, valid types: <type 'list'>, <type 'tuple'>
などのように、エラーメッセージが返される。