ほとんどの AWS CLI コマンドは、ファイルからのパラメータ入力のインポートに対応しています。これらのテンプレートは generate-cli-skeleton
オプションを使用して生成し、--cli-input-json
および --cli-input-yaml
パラメータを使用してインポートできます。
AWS CLI スケルトンと入力ファイルについて
ほとんどの AWS Command Line Interface (AWS CLI) コマンドは、--cli-input-json
および --cli-input-yaml
パラメータを使用してファイルからパラメータ入力をインポートする機能をサポートしています。
これらの同じコマンドは、--generate-cli-skeleton
パラメータを使用して、JSON または YAML 形式のファイルを生成します。このファイルには、編集および入力できるすべてのパラメータが含まれています。その後、入力済みのファイルを --cli-input-json
または --cli-input-yaml
パラメータで指定してこのコマンドを実行できます。
重要
aws s3
コマンド--generate-cli-skeleton
または --cli-input-json
および --cli-input-yaml
パラメータをサポートしていません。特定のコマンドがこれらのパラメータをサポートしているかどうかを確認するには、使用するコマンドに対して help コマンド を実行するか、AWS CLI バージョン 2 リファレンスガイド
--generate-cli-skeleton
は、カスタマイズしてコマンドの入力として使用できるパラメータテンプレートを生成して表示します。生成されるテンプレートには、そのコマンドによってサポートされているすべてのパラメータが含まれています。
--generate-cli-skeleton
パラメータには、次のいずれかの値を指定できます。
-
input
- 生成されたテンプレートには、JSON 形式の入力パラメータがすべて含まれます。これは、デフォルト値です。 -
yaml-input
- 生成されたテンプレートには、YAML 形式の入力パラメータがすべて含まれます。 -
output
- 生成されたテンプレートには、JSON 形式の出力パラメータがすべて含まれます。現在、YAML 形式で出力パラメータを要求することはできません。
AWS CLI は基本的にサービスの API の「ラッパー」であるため、スケルトンファイルは、すべてのパラメータを、基になる API パラメータ名で参照することを想定しています。このパラメータ名は AWS CLI のものとは異なることがあります。例えば、AWS CLI という名前の user-name
パラメータは、AWS という名前の UserName
のサービスの API パラメータにマップされる場合があります (大文字小文字が変更されダッシュがないことに注意)。エラーを回避するために、--generate-cli-skeleton
オプションを使用して「正しい」パラメータ名でテンプレートを生成することをお勧めします。サービスの API リファレンスガイドを参照して、使用可能なパラメータ名を確認できます。テンプレートから、値を指定しない必須でないパラメータを削除できます。
例えば、次のコマンドを実行すると、Amazon Elastic Compute Cloud (Amazon EC2) コマンドrun-instancesのパラメータテンプレートが生成されます 。
次の例は、input
パラメータのデフォルト値 (--generate-cli-skeleton
) を使用して JSON でフォーマットされたテンプレートを生成する方法を示しています。
$
aws ec2 run-instances --generate-cli-skeleton
{
"DryRun": true,
"ImageId": "",
"MinCount": 0,
"MaxCount": 0,
"KeyName": "",
"SecurityGroups": [
""
],
"SecurityGroupIds": [
""
],
"UserData": "",
"InstanceType": "",
"Placement": {
"AvailabilityZone": "",
"GroupName": "",
"Tenancy": ""
},
"KernelId": "",
"RamdiskId": "",
"BlockDeviceMappings": [
{
"VirtualName": "",
"DeviceName": "",
"Ebs": {
"SnapshotId": "",
"VolumeSize": 0,
"DeleteOnTermination": true,
"VolumeType": "",
"Iops": 0,
"Encrypted": true
},
"NoDevice": ""
}
],
"Monitoring": {
"Enabled": true
},
"SubnetId": "",
"DisableApiTermination": true,
"InstanceInitiatedShutdownBehavior": "",
"PrivateIpAddress": "",
"ClientToken": "",
"AdditionalInfo": "",
"NetworkInterfaces": [
{
"NetworkInterfaceId": "",
"DeviceIndex": 0,
"SubnetId": "",
"Description": "",
"PrivateIpAddress": "",
"Groups": [
""
],
"DeleteOnTermination": true,
"PrivateIpAddresses": [
{
"PrivateIpAddress": "",
"Primary": true
}
],
"SecondaryPrivateIpAddressCount": 0,
"AssociatePublicIpAddress": true
}
],
"IamInstanceProfile": {
"Arn": "",
"Name": ""
},
"EbsOptimized": true
}
コマンドスケルトンを生成してインポートする
パラメータスケルトンファイルを生成して使用するには
-
--generate-cli-skeleton
パラメータを指定してコマンドを実行して JSON または YAML を生成し、出力を保存用ファイルに送ります。$
aws ec2 run-instances --generate-cli-skeleton input
> ec2runinst.json
-
テキストエディタでパラメータスケルトンファイルを開き、不要なパラメータを削除します。例えば、テンプレートを次のように削除できます。不要な要素を削除した後、ファイルが有効な JSON または YAML であることを確認します。
{ "DryRun": true, "ImageId": "", "KeyName": "", "SecurityGroups": [ "" ], "InstanceType": "", "Monitoring": { "Enabled": true } }
この例では、Amazon EC2 ドライラン機能を使用するには、
DryRun
パラメータをtrue
に設定したままにします。この機能を使用すると、実際にリソースを作成または変更することなく、コマンドを安全にテストできます。 -
残りの値には、シナリオに適した値を入力します。この例では、インスタンスタイプ、キー名、セキュリティグループ、および使用する Amazon マシンイメージ (AMI) の識別子を指定しています。この例では、デフォルトの AWS リージョン リージョンを前提としています。AMI
ami-dfc39aef
は、us-west-2
リージョンでホストされている 64 ビットの Amazon Linux イメージです。別のリージョンを使用する場合は、使用する正しい AMI ID を見つける必要があります。 { "DryRun": true, "ImageId": "
ami-dfc39aef
", "KeyName": "mykey
", "SecurityGroups": [ "my-sg
" ], "InstanceType": "t2.micro
", "Monitoring": { "Enabled": true } } -
file://
プレフィックスを使用して、完了したテンプレートファイルを--cli-input-json
またはcli-input-yaml
パラメータに渡すことによって、入力済みパラメータでコマンドを実行します。AWS CLI は、パスを現在の作業ディレクトリからの相対パスとして解釈します。次の例では、AWS CLI は現在の作業ディレクトリ内のファイルを検索します。$
aws ec2 run-instances --cli-input-json file://ec2runinst.json
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
リハーサルのエラーは、JSON または YAML の形式が正しく、パラメータ値が有効であることを示します。出力でその他の問題が報告された場合は、それを修正し、「
Request would have succeeded
」というメッセージが表示されるまで前のステップを繰り返します。 -
これで、
DryRun
パラメータをfalse
に設定して、dry run を無効にできます。{ "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
-
コマンドを実行すると、
run-instances
は Amazon EC2 インスタンスを実際に起動し、正常起動によって生成された詳細を表示します。出力の形式は、入力パラメータテンプレートの形式とは別に、--output
パラメータによって制御されます。$
aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
{ "OwnerId": "123456789012", "ReservationId": "r-d94a2b1", "Groups": [], "Instances": [ ...
入力ファイルとコマンドラインパラメータの組み合わせ
入力ファイルはすべてのパラメータに使用することも、AWS CLI で指定したパラメータと組み合わせることもできます。この機能を利用すると、繰り返し使用する設定は入力ファイルに保存する一方で、個別の設定はコマンド自体で指定できます。
次の aws ec2 run-instances
の例では、入力ファイルとパラメータを組み合わせて使用しています。使用する Amazon マシンイメージ (AMI) のインスタンスタイプ、キー名、セキュリティグループ、識別子を指定し、デフォルトの AWS リージョン を前提としています。AMI ami-dfc39aef
は、us-west-2
リージョンでホストされている 64 ビットの Amazon Linux イメージです。別のリージョンを使用する場合は、使用する正しい AMI ID を見つける必要があります
JSON ファイルの内容:
{
"ImageId": "ami-dfc39aef
",
"KeyName": "mykey
",
"SecurityGroups": [
"my-sg
"
],
"InstanceType": "t2.micro
",
"Monitoring": {
"Enabled": true
}
}
次の例では、入力ファイルと --dry-run
パラメータを組み合わせて使用して、コマンドをドライランし、必要なアクセス許可があるかどうか、ファイルに有効な値が入力されているかどうかを確認します。
$
aws ec2 run-instances --cli-input-json file://ec2runinst.json
--dry-run
A client error (DryRunOperation) occurred when calling the RunInstances operation: Request would have succeeded, but DryRun flag is set.
次の例では、同じ入力ファイルを使用しますが、--no-dry-run
パラメータを使用してコマンドを本番実行しています。
$
aws ec2 run-instances --cli-input-json file://ec2runinst.json
--no-dry-run
--output json
{
"OwnerId": "123456789012",
"ReservationId": "r-d94a2b1",
"Groups": [],
"Instances": [
...