本文档仅适用于 Amazon CLI 版本 1。有关 Amazon CLI 版本 2 的相关文档,请参阅版本 2 用户指南。
Amazon CLI 框架和输入文件
大多数 Amazon Command Line Interface (Amazon CLI) 命令接受来自文件的所有参数输入。可以使用 generate-cli-skeleton
选项生成这些模板。
关于 Amazon CLI 框架和输入文件
大多数 Amazon Command Line Interface (Amazon CLI) 命令支持使用 --cli-input-json
参数接受文件中的所有参数输入的功能。
这些相同的命令帮助提供 --generate-cli-skeleton
参数,以使用您可以编辑和填写的所有参数以 JSON 格式生成文件。然后,您可以带有相关 --cli-input-json
参数运行命令并指向填充的文件。
重要
多个 Amazon CLI 命令不直接映射到各个 Amazon API 操作,例如 aws s3
命令。此类命令不支持本主题中介绍的 --generate-cli-skeleton
或 --cli-input-json
参数。如果您不知道特定命令是否支持这些参数,请运行以下命令,将 service
和 command
名称替换为您感兴趣的名称。
$
aws service command
help
输出包含 Synopsis
部分,其中显示了指定的命令支持的参数。
$
aws iam list-users help
... SYNOPSIS list-users ... [--cli-input-json] ... [--generate-cli-skeleton <value>] ...
--generate-cli-skeleton
参数将导致命令无法运行,而是生成和显示您可以自定义的参数模板并用作以后命令的输入。生成的模板包含命令支持的所有参数。
--generate-cli-skeleton
参数接受以下值之一:
-
input
– 生成的模板包括格式化为 JSON 的所有输入参数。这是默认值。 -
output
– 生成的模板包括格式化为 JSON 的所有输出参数。
由于 Amazon CLI 本质上是围绕服务 API 的“包装程序”,骨架文件预计您会通过他们底层的 API 参数名称引用所有参数。该参数名称可能与 Amazon CLI 参数名称不同。例如,一个名为 Amazon CLI 的 user-name
参数可能映射到名为 Amazon 的 UserName
服务 API 参数(注意,更改后的大写字母和缺失的破折号)。我们建议您使用 --generate-cli-skeleton
选项,用“正确”的参数名称生成模板,以避免错误。您也可以引用服务的 API 参考指南,查看预期的参数名称。您可以从模板中删除不需要的和不想为其提供值的任何参数。
例如,如果您运行以下命令,它会为 Amazon Elastic Compute Cloud (Amazon EC2) 命令 run-instances 生成参数模板。
生成命令框架
生成并使用参数框架文件
-
使用
--generate-cli-skeleton
参数运行命令以生成 JSON,并将输出定向到某个文件以保存它。 -
在文本编辑器中打开参数骨架文件,并删除任何不需要的参数。例如,您可以将模板缩减到以下内容。请确保在删除不需要的元素后,文件仍是有效的 JSON。
在此示例中,我们将
DryRun
参数设置为true
以使用 Amazon EC2 空运行功能。通过此功能,您可以安全地测试命令,而无需实际创建或修改任何资源。 -
使用适合您的场景的值填入剩余的值。在本例中,我们提供要使用的 Amazon 系统映像 (AMI) 的实例类型、密钥名称、安全组和标识符。此示例假定默认的 Amazon 区域。AMI
ami-dfc39aef
是us-west-2
区域中托管的 64 位 Amazon Linux 映像。如果您使用不同的区域,您必须查找正确 AMI ID 来使用。 -
通过使用
file://
前缀将完成的模板文件传递到--cli-input-json
参数,使用填写的参数运行命令。Amazon CLI 将路径解释为相对于当前工作目录,因此,在以下仅显示文件名而不带路径的示例中,它将直接在当前工作目录中查找此文件。空运行错误表明,JSON 格式正确且参数值有效。如果输出中报告了其他问题,请解决这些问题并重复上一步,直到显示“
Request would have succeeded
”消息。 -
现在,您可以将
DryRun
参数设置为false
以禁用空运行。 -
运行此命令,
run-instances
实际上会启动 Amazon EC2 实例并显示成功启动所生成的详细信息。输出格式由--output
参数控制,与输入参数模板的格式分开。