대부분의 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 Machine Image(AMI)의 인스턴스 유형, 키 이름, 보안 그룹 및 식별자를 제공합니다. 이 예제에서는 기본 AWS 리전을 가정합니다.
ami-dfc39aef
AMI는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
로 설정할 수 있습니다.{ "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 Machine Image(AMI)의 인스턴스 유형, 키 이름, 보안 그룹 및 식별자가 제공되고 기본 AWS 리전을 가정합니다. ami-dfc39aef
AMI는 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": [
...