

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS SAM CLI
<a name="using-sam-cli"></a>

AWS Serverless Application Model 命令行接口 (AWS SAMCLI) 是用于本地开发和测试无服务器应用程序的命令行工具。 AWS SAMCLI允许您在部署到云端之前在本地构建、转换、部署、调试、打包、初始化和同步无服务器应用程序。

AWS SAM CLI 支持使用不同框架和基础设施即代码（IaC）工具定义的无服务器应用程序，支持程度各不相同：
+ **AWS SAM 模板** — 为完整功能集提供原生支持，包括本地测试、调试、打包和部署功能。
+ **AWS CDK 应用程序** — 在使用 cdk synth 命令将 CDK 应用程序合成 CloudFormation 到模板后，支持 AWS 对 Lambda 函数进行本地测试。
+ **CloudFormation 模板** — 由于 AWS SAM 扩展而提供直接兼容性 CloudFormation，支持标准 CloudFormation 模板中定义的无服务器资源。
+ **Terraform 应用程序** - 为 Lambda 函数的构建和本地测试提供有限支持。要求您生成代表您的 TerraForm 定义的 Lambda 函数的 AWS SAM 模板工件。

为了获得最全面的功能支持和简化的开发者体验，我们建议使用原生 AWS SAM 模板。

**Topics**
+ [AWS SAM CLI 命令是如何记录的](#using-sam-cli-documentation)
+ [配置 AWS SAM CLI](using-sam-cli-configure.md)
+ [AWS SAMCLI 核心命令](using-sam-cli-corecommands.md)
+ [使用 AWS SAM CLI 进行本地测试](using-sam-cli-local-testing.md)

## AWS SAM CLI 命令是如何记录的
<a name="using-sam-cli-documentation"></a>

使用以下格式对AWS SAM CLI 命令进行记录：
+ **提示** – 默认情况下，Linux 提示被记录下来并显示为 (`$ `)。对于 Windows 特定的命令，(`> `) 用作提示。请勿在键入命令时包含提示符。
+ **目录** – 当必须从特定目录执行命令时，目录名称将显示在提示符符号之前。
+ **用户输入** – 您在命令行处输入的命令文本采用 **user input** 格式。
+ **可替换文**本-可变文本（例如文件名和参数）的格式为{{replaceable text}}。在多行命令中或需要特定键盘输入的命令中，键盘输入也可显示为可替换文本。例如 {{ENTER}}。
+ **输出** – 作为对命令的响应而返回的输出格式为 `computer output`。

下面是 `sam deploy` 命令和输出的示例：

```
$ sam deploy --guided --template {{template.yaml}}

Configuring SAM deploy
======================

    Looking for config file [samconfig.toml] :  Found
    Reading default arguments  :  Success

    Setting default arguments for 'sam deploy'
    =========================================
    Stack Name [sam-app]: {{ENTER}}
    AWS Region [us-west-2]: {{ENTER}}
    #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
    Confirm changes before deploy [y/N]: {{ENTER}}
    #SAM needs permission to be able to create roles to connect to the resources in your template
    Allow SAM CLI IAM role creation [Y/n]: {{ENTER}}
    #Preserves the state of previously provisioned resources when an operation fails
    Disable rollback [y/N]: {{ENTER}}
    HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: {{y}}
    Save arguments to configuration file [Y/n]: {{ENTER}}
    SAM configuration file [samconfig.toml]: {{ENTER}}
    SAM configuration environment [default]: {{ENTER}}
```

1. `sam deploy --guided --template template.yaml` 是您在命令行中输入的命令。

1. **sam deploy --guided --template** 应按原样提供。

1. {{template.yaml}}可以用您的特定文件名替换。

1. 输出开始于 `Configuring SAM deploy`。

1. 在输出中，{{ENTER}}并{{y}}指明您提供的可替换值。