AWS CLI 스켈레톤 및 입력 파일 - AWS Command Line Interface

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS CLI 스켈레톤 및 입력 파일

대부분의 AWS CLI 명령은 파일의 모든 파라미터 입력을 허용합니다. 이러한 템플릿은 generate-cli-skeleton 옵션을 사용하여 생성할 수 있습니다.

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 명령 등 몇 가지 AWS CLI 명령은 개별 AWS API 작업에 직접 매핑되지 않습니다. 이러한 명령은 이 주제에서 다루는 --generate-cli-skeleton 또는 --cli-input-json--cli-input-yaml 파라미터를 지원하지 않습니다. 특정 명령이 이러한 파라미터를 지원하는지 여부를 모르는 경우 다음 명령을 실행하고 servicecommand 이름을 관심이 있는 항목으로 바꾸십시오.

$ aws service command help

지정된 명령이 지원하는 파라미터를 보여주는 Synopsis 섹션이 출력에 포함됩니다.

$ aws iam list-users help ... SYNOPSIS list-users ... [--cli-input-json | --cli-input-yaml] ... [--generate-cli-skeleton <value>] ...

--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에 대한 파라미터 템플릿이 생성됩니다.

JSON

다음 예제에서는 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 }
YAML

다음 예제에서는 yaml-input 파라미터에 값 --generate-cli-skeleton을 사용하여 YAML 형식의 템플릿을 생성하는 방법을 보여줍니다.

$ aws ec2 run-instances --generate-cli-skeleton yaml-input
BlockDeviceMappings: # The block device mapping entries. - DeviceName: '' # The device name (for example, /dev/sdh or xvdh). VirtualName: '' # The virtual device name (ephemeralN). Ebs: # Parameters used to automatically set up Amazon EBS volumes when the instance is launched. DeleteOnTermination: true # Indicates whether the EBS volume is deleted on instance termination. Iops: 0 # The number of I/O operations per second (IOPS) that the volume supports. SnapshotId: '' # The ID of the snapshot. VolumeSize: 0 # The size of the volume, in GiB. VolumeType: st1 # The volume type. Valid values are: standard, io1, gp2, sc1, st1. Encrypted: true # Indicates whether the encryption state of an EBS volume is changed while being restored from a backing snapshot. KmsKeyId: '' # Identifier (key ID, key alias, ID ARN, or alias ARN) for a customer managed KMS key under which the EBS volume is encrypted. NoDevice: '' # Suppresses the specified device included in the block device mapping of the AMI. ImageId: '' # The ID of the AMI. InstanceType: c4.4xlarge # The instance type. Valid values are: t1.micro, t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge, t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge, t3a.nano, t3a.micro, t3a.small, t3a.medium, t3a.large, t3a.xlarge, t3a.2xlarge, m1.small, m1.medium, m1.large, m1.xlarge, m3.medium, m3.large, m3.xlarge, m3.2xlarge, m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m4.16xlarge, m2.xlarge, m2.2xlarge, m2.4xlarge, cr1.8xlarge, r3.large, r3.xlarge, r3.2xlarge, r3.4xlarge, r3.8xlarge, r4.large, r4.xlarge, r4.2xlarge, r4.4xlarge, r4.8xlarge, r4.16xlarge, r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r5.8xlarge, r5.12xlarge, r5.16xlarge, r5.24xlarge, r5.metal, r5a.large, r5a.xlarge, r5a.2xlarge, r5a.4xlarge, r5a.8xlarge, r5a.12xlarge, r5a.16xlarge, r5a.24xlarge, r5d.large, r5d.xlarge, r5d.2xlarge, r5d.4xlarge, r5d.8xlarge, r5d.12xlarge, r5d.16xlarge, r5d.24xlarge, r5d.metal, r5ad.large, r5ad.xlarge, r5ad.2xlarge, r5ad.4xlarge, r5ad.8xlarge, r5ad.12xlarge, r5ad.16xlarge, r5ad.24xlarge, x1.16xlarge, x1.32xlarge, x1e.xlarge, x1e.2xlarge, x1e.4xlarge, x1e.8xlarge, x1e.16xlarge, x1e.32xlarge, i2.xlarge, i2.2xlarge, i2.4xlarge, i2.8xlarge, i3.large, i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge, i3.16xlarge, i3.metal, i3en.large, i3en.xlarge, i3en.2xlarge, i3en.3xlarge, i3en.6xlarge, i3en.12xlarge, i3en.24xlarge, i3en.metal, hi1.4xlarge, hs1.8xlarge, c1.medium, c1.xlarge, c3.large, c3.xlarge, c3.2xlarge, c3.4xlarge, c3.8xlarge, c4.large, c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge, c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, c5.12xlarge, c5.18xlarge, c5.24xlarge, c5.metal, c5d.large, c5d.xlarge, c5d.2xlarge, c5d.4xlarge, c5d.9xlarge, c5d.18xlarge, c5n.large, c5n.xlarge, c5n.2xlarge, c5n.4xlarge, c5n.9xlarge, c5n.18xlarge, cc1.4xlarge, cc2.8xlarge, g2.2xlarge, g2.8xlarge, g3.4xlarge, g3.8xlarge, g3.16xlarge, g3s.xlarge, g4dn.xlarge, g4dn.2xlarge, g4dn.4xlarge, g4dn.8xlarge, g4dn.12xlarge, g4dn.16xlarge, cg1.4xlarge, p2.xlarge, p2.8xlarge, p2.16xlarge, p3.2xlarge, p3.8xlarge, p3.16xlarge, p3dn.24xlarge, d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge, f1.2xlarge, f1.4xlarge, f1.16xlarge, m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, m5.8xlarge, m5.12xlarge, m5.16xlarge, m5.24xlarge, m5.metal, m5a.large, m5a.xlarge, m5a.2xlarge, m5a.4xlarge, m5a.8xlarge, m5a.12xlarge, m5a.16xlarge, m5a.24xlarge, m5d.large, m5d.xlarge, m5d.2xlarge, m5d.4xlarge, m5d.8xlarge, m5d.12xlarge, m5d.16xlarge, m5d.24xlarge, m5d.metal, m5ad.large, m5ad.xlarge, m5ad.2xlarge, m5ad.4xlarge, m5ad.8xlarge, m5ad.12xlarge, m5ad.16xlarge, m5ad.24xlarge, h1.2xlarge, h1.4xlarge, h1.8xlarge, h1.16xlarge, z1d.large, z1d.xlarge, z1d.2xlarge, z1d.3xlarge, z1d.6xlarge, z1d.12xlarge, z1d.metal, u-6tb1.metal, u-9tb1.metal, u-12tb1.metal, u-18tb1.metal, u-24tb1.metal, a1.medium, a1.large, a1.xlarge, a1.2xlarge, a1.4xlarge, a1.metal, m5dn.large, m5dn.xlarge, m5dn.2xlarge, m5dn.4xlarge, m5dn.8xlarge, m5dn.12xlarge, m5dn.16xlarge, m5dn.24xlarge, m5n.large, m5n.xlarge, m5n.2xlarge, m5n.4xlarge, m5n.8xlarge, m5n.12xlarge, m5n.16xlarge, m5n.24xlarge, r5dn.large, r5dn.xlarge, r5dn.2xlarge, r5dn.4xlarge, r5dn.8xlarge, r5dn.12xlarge, r5dn.16xlarge, r5dn.24xlarge, r5n.large, r5n.xlarge, r5n.2xlarge, r5n.4xlarge, r5n.8xlarge, r5n.12xlarge, r5n.16xlarge, r5n.24xlarge. Ipv6AddressCount: 0 # [EC2-VPC] The number of IPv6 addresses to associate with the primary network interface. Ipv6Addresses: # [EC2-VPC] The IPv6 addresses from the range of the subnet to associate with the primary network interface. - Ipv6Address: '' # The IPv6 address. KernelId: '' # The ID of the kernel. KeyName: '' # The name of the key pair. MaxCount: 0 # [REQUIRED] The maximum number of instances to launch. MinCount: 0 # [REQUIRED] The minimum number of instances to launch. Monitoring: # Specifies whether detailed monitoring is enabled for the instance. Enabled: true # [REQUIRED] Indicates whether detailed monitoring is enabled. Placement: # The placement for the instance. AvailabilityZone: '' # The Availability Zone of the instance. Affinity: '' # The affinity setting for the instance on the Dedicated Host. GroupName: '' # The name of the placement group the instance is in. PartitionNumber: 0 # The number of the partition the instance is in. HostId: '' # The ID of the Dedicated Host on which the instance resides. Tenancy: dedicated # The tenancy of the instance (if the instance is running in a VPC). Valid values are: default, dedicated, host. SpreadDomain: '' # Reserved for future use. RamdiskId: '' # The ID of the RAM disk to select. SecurityGroupIds: # The IDs of the security groups. - '' SecurityGroups: # [default VPC] The names of the security groups. - '' SubnetId: '' # [EC2-VPC] The ID of the subnet to launch the instance into. UserData: '' # The user data to make available to the instance. AdditionalInfo: '' # Reserved. ClientToken: '' # Unique, case-sensitive identifier you provide to ensure the idempotency of the request. DisableApiTermination: true # If you set this parameter to true, you can't terminate the instance using the Amazon EC2 console, CLI, or API; otherwise, you can. DryRun: true # Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. EbsOptimized: true # Indicates whether the instance is optimized for Amazon EBS I/O. IamInstanceProfile: # The IAM instance profile. Arn: '' # The Amazon Resource Name (ARN) of the instance profile. Name: '' # The name of the instance profile. InstanceInitiatedShutdownBehavior: stop # Indicates whether an instance stops or terminates when you initiate shutdown from the instance (using the operating system command for system shutdown). Valid values are: stop, terminate. NetworkInterfaces: # The network interfaces to associate with the instance. - AssociatePublicIpAddress: true # Indicates whether to assign a public IPv4 address to an instance you launch in a VPC. DeleteOnTermination: true # If set to true, the interface is deleted when the instance is terminated. Description: '' # The description of the network interface. DeviceIndex: 0 # The position of the network interface in the attachment order. Groups: # The IDs of the security groups for the network interface. - '' Ipv6AddressCount: 0 # A number of IPv6 addresses to assign to the network interface. Ipv6Addresses: # One or more IPv6 addresses to assign to the network interface. - Ipv6Address: '' # The IPv6 address. NetworkInterfaceId: '' # The ID of the network interface. PrivateIpAddress: '' # The private IPv4 address of the network interface. PrivateIpAddresses: # One or more private IPv4 addresses to assign to the network interface. - Primary: true # Indicates whether the private IPv4 address is the primary private IPv4 address. PrivateIpAddress: '' # The private IPv4 addresses. SecondaryPrivateIpAddressCount: 0 # The number of secondary private IPv4 addresses. SubnetId: '' # The ID of the subnet associated with the network interface. InterfaceType: '' # The type of network interface. PrivateIpAddress: '' # [EC2-VPC] The primary IPv4 address. ElasticGpuSpecification: # An elastic GPU to associate with the instance. - Type: '' # [REQUIRED] The type of Elastic Graphics accelerator. ElasticInferenceAccelerators: # An elastic inference accelerator to associate with the instance. - Type: '' # [REQUIRED] The type of elastic inference accelerator. TagSpecifications: # The tags to apply to the resources during launch. - ResourceType: network-interface # The type of resource to tag. Valid values are: client-vpn-endpoint, customer-gateway, dedicated-host, dhcp-options, elastic-ip, fleet, fpga-image, host-reservation, image, instance, internet-gateway, launch-template, natgateway, network-acl, network-interface, reserved-instances, route-table, security-group, snapshot, spot-instances-request, subnet, traffic-mirror-filter, traffic-mirror-session, traffic-mirror-target, transit-gateway, transit-gateway-attachment, transit-gateway-route-table, volume, vpc, vpc-peering-connection, vpn-connection, vpn-gateway. Tags: # The tags to apply to the resource. - Key: '' # The key of the tag. Value: '' # The value of the tag. LaunchTemplate: # The launch template to use to launch the instances. LaunchTemplateId: '' # The ID of the launch template. LaunchTemplateName: '' # The name of the launch template. Version: '' # The version number of the launch template. InstanceMarketOptions: # The market (purchasing) option for the instances. MarketType: spot # The market type. Valid values are: spot. SpotOptions: # The options for Spot Instances. MaxPrice: '' # The maximum hourly price you're willing to pay for the Spot Instances. SpotInstanceType: one-time # The Spot Instance request type. Valid values are: one-time, persistent. BlockDurationMinutes: 0 # The required duration for the Spot Instances (also known as Spot blocks), in minutes. ValidUntil: 1970-01-01 00:00:00 # The end date of the request. InstanceInterruptionBehavior: terminate # The behavior when a Spot Instance is interrupted. Valid values are: hibernate, stop, terminate. CreditSpecification: # The credit option for CPU usage of the T2 or T3 instance. CpuCredits: '' # [REQUIRED] The credit option for CPU usage of a T2 or T3 instance. CpuOptions: # The CPU options for the instance. CoreCount: 0 # The number of CPU cores for the instance. ThreadsPerCore: 0 # The number of threads per CPU core. CapacityReservationSpecification: # Information about the Capacity Reservation targeting option. CapacityReservationPreference: none # Indicates the instance's Capacity Reservation preferences. Valid values are: open, none. CapacityReservationTarget: # Information about the target Capacity Reservation. CapacityReservationId: '' # The ID of the Capacity Reservation. HibernationOptions: # Indicates whether an instance is enabled for hibernation. Configured: true # If you set this parameter to true, your instance is enabled for hibernation. LicenseSpecifications: # The license configurations. - LicenseConfigurationArn: '' # The Amazon Resource Name (ARN) of the license configuration.

명령 스켈레톤 생성

파라미터 스켈레톤 파일을 생성하고 사용하려면
  1. --generate-cli-skeleton 파라미터와 함께 명령을 실행하여 JSON 또는 YAML을 생성하고 출력을 파일로 전송하여 저장합니다.

    JSON
    $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
    YAML
    $ aws ec2 run-instances --generate-cli-skeleton yaml-input > ec2runinst.yaml
  2. 텍스트 편집기에서 파라미터 스켈레톤 파일을 열고 필요하지 않은 파라미터를 제거합니다. 예를 들어, 템플릿을 다음과 같이 줄일 수 있습니다. 불필요한 요소를 제거한 후에도 파일이 여전히 유효한 JSON 또는 YAML인지 확인해야 합니다.

    JSON
    { "DryRun": true, "ImageId": "", "KeyName": "", "SecurityGroups": [ "" ], "InstanceType": "", "Monitoring": { "Enabled": true } }
    YAML
    DryRun: true ImageId: '' KeyName: '' SecurityGroups: - '' InstanceType: Monitoring: Enabled: true

    이 예제에서는 Amazon EC2 테스트 실행 기능을 사용하도록 DryRun 파라미터를 true로 설정된 상태로 유지합니다. 이 기능을 사용하면 실제로 리소스를 생성하거나 수정하지 않고도 명령을 안전하게 테스트할 수 있습니다.

  3. 나머지 값을 시나리오에 적합한 값으로 채우십시오. 이 예제에서는 사용할 Amazon Machine Image(AMI)의 인스턴스 유형, 키 이름, 보안 그룹 및 식별자를 제공합니다. 이 예제에서는 기본 AWS 리전을 가정합니다. ami-dfc39aef AMI는 us-west-2 리전에서 호스팅되는 64비트 Amazon Linux 이미지입니다. 다른 리전을 사용하는 경우 사용할 정확한 AMI ID를 찾아야 합니다.

    JSON
    { "DryRun": true, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
    YAML
    DryRun: true ImageId: 'ami-dfc39aef' KeyName: 'mykey' SecurityGroups: - 'my-sg' InstanceType: 't2.micro' Monitoring: Enabled: true
  4. file:// 접두사를 사용해 완료된 템플릿 파일을 --cli-input-json 또는 --cli-input-yaml 파라미터로 전달하여 완료된 파라미터로 명령을 실행합니다. AWS CLI는 현재 작업 디렉터리를 기준으로 경로를 해석하므로, 경로 없이 파일 이름만 표시하는 다음 예제에서는 현재 작업 디렉터리에서 직접 파일이 검색됩니다.

    JSON
    $ 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.
    YAML
    $ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml
    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" 메시지가 표시될 때까지 이전 단계를 반복합니다.

  5. 이제 테스트 실행을 비활성화하기 위해 DryRun 파라미터를 false로 설정할 수 있습니다.

    JSON
    { "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
    YAML
    DryRun: false ImageId: 'ami-dfc39aef' KeyName: 'mykey' SecurityGroups: - 'my-sg' InstanceType: 't2.micro' Monitoring: Enabled: true
  6. 명령을 실행하면 run-instances가 실제로 Amazon EC2 인스턴스를 실행하고 성공적인 실행으로 생성된 세부 정보를 표시합니다. 출력 형식은 입력 파라미터 템플릿의 형식과 별도로 --output 파라미터에 의해 제어됩니다.

    JSON
    $ aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
    { "OwnerId": "123456789012", "ReservationId": "r-d94a2b1", "Groups": [], "Instances": [ ...
    YAML
    $ aws ec2 run-instances --cli-input-yaml file://ec2runinst.yaml --output yaml
    OwnerId: '123456789012' ReservationId: 'r-d94a2b1', Groups": - '' Instances: ...