Esqueletos y archivos de entrada de AWS CLI - AWS Command Line Interface

Esta documentación es AWS CLI únicamente para la versión 1 de la. Para ver la documentación relacionada con la versión 2 de AWS CLI, consulte la Guía del usuario de la versión 2.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Esqueletos y archivos de entrada de AWS CLI

La mayoría de los comandos de AWS CLI aceptan todas las entradas de parámetros de un archivo. Estas plantillas se pueden generar mediante opción generate-cli-skeleton.

Sobre esqueletos y archivos de ‎entrada de AWS CLI

‎La mayoría de los comandos de AWS Command Line Interface (AWS CLI) pueden aceptar todas las entradas de parámetros desde un archivo con los parámetros ‎--cli-input-json .

Esos mismos comandos proporcionan de forma efectiva el parámetro --generate-cli-skeleton para generar un archivo en formato JSON con todos los parámetros que pueda editar y completar. ‎A continuación, puede ejecutar el comando con el parámetro --cli-input-json relevante y apuntar al archivo cumplimentado.

importante

‎Varios ‎comandos de AWS CLI‎ no se corresponden directamente con operaciones individuales de la API de AWS‎, como los aws s3comandos de . ‎Estos comandos no son compatibles con los parámetros --generate-cli-skeleton o --cli-input-json descritos en este tema. Si no sabe si un determinado comando admite estos parámetros, ejecute el siguiente comando sustituyendo los nombres del servicio y el comando con los que quiera usar.

$ aws service command help

El resultado incluye una sección Synopsis que muestra los parámetros que admite el comando especificado.

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

El parámetro --generate-cli-skeleton hace que el comando no se ejecute, sino que genere y muestre una plantilla de parámetros que se puede personalizar y utilizar como entrada de otro comando posterior. La plantilla generada incluye todos los parámetros que admite el comando.

El parámetro --generate-cli-skeleton acepta uno de los siguientes valores:

  • input: la plantilla generada incluye todos los parámetros de entrada formateados como JSON. Este es el valor predeterminado.

  • output: la plantilla generada incluye todos los parámetros de salida formateados como JSON.

Como la AWS CLI es esencialmente un "encapsulador" de la API del servicio, el archivo de esqueleto espera que el usuario haga referencia a todos los parámetros utilizando los nombres de parámetro de la API subyacente. Es probable que este nombre sea distinto al nombre del parámetro de la AWS CLI. Por ejemplo, un parámetro de la AWS CLI llamado user-name podría corresponderse con un parámetro de la API de servicio de AWS llamado UserName (observe cómo se usan las mayúsculas y que falta un guion). Le recomendamos que utilice la opción --generate-cli-skeleton para generar la plantilla con los nombres de parámetros "correctos" con el fin de evitar errores. También puede consultar la Guía de referencia de la API del servicio para ver los nombres de los parámetros esperados. Puede eliminar cualquier parámetro de la plantilla que no sea necesario y para el que no desee proporcionar un valor.

Por ejemplo, si ejecuta el siguiente comando, se genera la plantilla de parámetros para el comando Amazon Elastic Compute Cloud (Amazon EC2) run-instances.

JSON

En el siguiente ejemplo, se muestra cómo se genera una plantilla con formato JSON utilizando el valor predeterminado (input) en el parámetro --generate-cli-skeleton.

$ 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 }

Generación de un esqueleto de comandos

Para generar y utilizar un archivo de esqueleto de parámetros
  1. ‎Ejecute el comando con el pa‎rámetro --generate-cli-skeleton para producir JSON y dirigirla a un archivo para guardarla.

    JSON
    $ aws ec2 run-instances --generate-cli-skeleton input > ec2runinst.json
  2. Abra el archivo de esqueleto de parámetros en el editor de texto y quite todos los parámetros que no necesite. Por ejemplo, puede reducir la plantilla hasta dejarla tal y como se muestra a continuación. Asegúrese de que el código JSON del archivo sigue siendo válido después de eliminar los elementos que no necesita.

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

    En este ejemplo, dejamos el parámetro DryRun establecido en true para utilizar la característica “dry run” (simulacro) de Amazon EC2. Esta característica le permite probar el comando de forma segura sin crear ni modificar ningún recurso.

  3. Rellene los valores restantes con valores adecuados para su escenario. En este ejemplo, proporcionamos el tipo de instancia, el nombre de la clave, el grupo de seguridad y el identificador de Amazon Machine Image (AMI) que vamos a utilizar. En este ejemplo, se presupone que la región apropiada es la región de AWS predeterminada. La AMI ami-dfc39aef es una imagen de Amazon Linux de 64 bits alojada en la región us-west-2. Si utiliza una región diferente, debe encontrar el ID apropiado de la AMI que desea utilizar.

    JSON
    { "DryRun": true, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  4. Ejecute el comando con los parámetros completados pasando el archivo de plantilla relleno ‎al parámetro --cli-input-json al utilizar ‎el prefijo file://. La AWS CLI interpreta la ruta como una ruta relativa al directorio de trabajo actual, por lo que el siguiente ejemplo, en el que solo aparece el nombre de archivo y no la ruta, buscará el archivo directamente en el directorio de trabajo actual.

    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.

    El error del simulacro indica que el código JSON está formado correctament‎e y que los valores de los parámetros son válidos. Si se informa de cualquier otro problema en la salida, corríjalo y repita el paso anterior hasta que aparezca el mensaje "Request would have succeeded".

  5. Ahora puede establecer el parámetro DryRun en false para deshabilitar el simulacro.

    JSON
    { "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
  6. Ejecute el comando para que run-instances lance una instancia de Amazon EC2 y muestre los detalles que se generan cuando el lanzamiento se realiza correctamente. El parámetro --output controla el formato de salida, independientemente del formato de la plantilla de parámetros de entrada.

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