La mayoría de los comandos de la AWS CLI aceptan la importación de las entradas de parámetros de un archivo. Estas plantillas se pueden generar con la opción generate-cli-skeleton
y, a continuación, se pueden importar con los parámetros --cli-input-json
y --cli-input-yaml
.
Temas
Sobre esqueletos y archivos de entrada de AWS CLI
La mayoría de los comandos de AWS Command Line Interface (AWS CLI) pueden aceptar las entradas de parámetros desde un archivo con los parámetros --cli-input-json
y --cli-input-yaml
.
Esos mismos comandos usan el parámetro --generate-cli-skeleton
para generar un archivo en formato JSON o YAML con todos los parámetros que pueda editar y completar. A continuación, puede ejecutar el comando con el parámetro --cli-input-json
o --cli-input-yaml
y apuntar al archivo cumplimentado.
importante
Los comandos de la AWS CLI personalizados, como los comandos aws s3
--generate-cli-skeleton
o --cli-input-json
y --cli-input-yaml
descritos en este tema. Para comprobar si un comando específico admite estos parámetros, ejecute el comando help correspondiente al comando que desee utilizar o consulte la guía de referencia de la versión 2 de AWS CLI
--generate-cli-skeleton
genera y muestra una plantilla de parámetros que puede personalizar y utilizar como entrada en un comando. 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. -
yaml-input
: la plantilla generada incluye todos los parámetros de entrada formateados como YAML. -
output
: la plantilla generada incluye todos los parámetros de salida formateados como JSON. Actualmente, no puede solicitar los parámetros de salida en formato YAML.
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. Puede hacer referencia a 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.
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 e importación de un esqueleto de comandos
Para generar y utilizar un archivo de esqueleto de parámetros
-
Ejecute el comando con el parámetro
--generate-cli-skeleton
para producir la salida en formato JSON o YAML y dirigirla a un archivo para guardarla.$
aws ec2 run-instances --generate-cli-skeleton input
> ec2runinst.json
-
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. Confirme que el código JSON o YAML del archivo sigue siendo válido después de eliminar los elementos que no necesita.
{ "DryRun": true, "ImageId": "", "KeyName": "", "SecurityGroups": [ "" ], "InstanceType": "", "Monitoring": { "Enabled": true } }
En este ejemplo, dejamos el parámetro
DryRun
establecido entrue
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. -
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 asume la Región de AWS predeterminada. La AMI
ami-dfc39aef
es una imagen de Amazon Linux de 64 bits alojada en la regiónus-west-2
. Si utiliza una región diferente, debe encontrar el ID apropiado de la AMI que desea utilizar. { "DryRun": true, "ImageId": "
ami-dfc39aef
", "KeyName": "mykey
", "SecurityGroups": [ "my-sg
" ], "InstanceType": "t2.micro
", "Monitoring": { "Enabled": true } } -
Ejecute el comando con los parámetros completados pasando el archivo de plantilla relleno ya sea al parámetro
--cli-input-json
o –cli-input-yaml
al utilizar el prefijofile://
. La AWS CLI interpreta la ruta como relativa al directorio de trabajo actual. En el siguiente ejemplo, la AWS CLI busca el archivo en el directorio de trabajo actual.$
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 o YAML está formado correctamente 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
". -
Ahora puede establecer el parámetro
DryRun
enfalse
para deshabilitar el simulacro.{ "DryRun": false, "ImageId": "ami-dfc39aef", "KeyName": "mykey", "SecurityGroups": [ "my-sg" ], "InstanceType": "t2.micro", "Monitoring": { "Enabled": true } }
-
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.$
aws ec2 run-instances --cli-input-json file://ec2runinst.json --output json
{ "OwnerId": "123456789012", "ReservationId": "r-d94a2b1", "Groups": [], "Instances": [ ...
Combinación de archivos de entrada y parámetros de línea de comandos
Se puede usar un archivo de entrada para todos los parámetros o se puede combinar con los parámetros especificados en la AWS CLI. Puede utilizar esta característica para los ajustes que reutiliza con frecuencia en un archivo de entrada y, al mismo tiempo, conservar los ajustes individuales en el propio comando.
En los siguientes ejemplos de aws ec2 run-instances
, se combinan el uso de un archivo de entrada y parámetros. Proporcionamos el tipo de instancia, el nombre de la clave, el grupo de seguridad y el identificador de la imagen de máquina de Amazon (AMI) que se va a utilizar y se asume 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
Contenido del archivo JSON:
{
"ImageId": "ami-dfc39aef
",
"KeyName": "mykey
",
"SecurityGroups": [
"my-sg
"
],
"InstanceType": "t2.micro
",
"Monitoring": {
"Enabled": true
}
}
En el siguiente ejemplo, se utiliza el archivo de entrada en combinación con el parámetro --dry-run
para realizar una actualización de prueba del comando para confirmar si tiene los permisos necesarios y si ha rellenado el archivo con valores válidos.
$
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.
A continuación, en el siguiente ejemplo se utiliza el mismo archivo de entrada, pero con el parámetro --no-dry-run
para ejecutar el comando en su totalidad.
$
aws ec2 run-instances --cli-input-json file://ec2runinst.json
--no-dry-run
--output json
{
"OwnerId": "123456789012",
"ReservationId": "r-d94a2b1",
"Groups": [],
"Instances": [
...