

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

# 安装 AWS SAM CLI
<a name="install-sam-cli"></a>

按照中的说明在支持的操作系统上安装最新版本的 AWS Serverless Application Model 命令行界面 (AWS SAMCLI) [步骤 4：安装 AWS CLI](prerequisites.md#prerequisites-install-cli)。

有关管理当前安装版本的信息 AWS SAMCLI，包括如何升级、卸载或管理夜间版本，请参阅[管理 AWS SAM CLI 版本](manage-sam-cli-versions.md)。

**这是您第一次安装 AWS SAM CLI？**  
在继续操作之前，请完成上一节中的所有[先决条件](prerequisites.md)。这包括：  
注册一个 AWS 账户。
设置安全访问权限 AWS。
创建访问密钥 ID 和秘密访问密钥。
正在安装 AWS CLI.
配置 AWS 凭证。

**Topics**
+ [

## 安装 AWS SAM CLI
](#install-sam-cli-instructions)
+ [

## 排查 安装错误
](#sam-cli-troubleshoot-install)
+ [

## 后续步骤
](#install-sam-cli-next-steps)
+ [

# 可选：验证 AWS SAMCLI 安装程序的完整性
](reference-sam-cli-install-verify.md)

## 安装 AWS SAM CLI
<a name="install-sam-cli-instructions"></a>

**注意**  
从 2023 年 9 月起， AWS 将不再维护 AWS SAMCLI (`aws/tap/aws-sam-cli`) 的 AWS 托管Homebrew安装程序。如果您Homebrew使用安装和管理 AWS SAMCLI，请参阅以下选项：  
要继续使用 Homebrew，您可以使用社区托管的安装程序。有关更多信息，请参阅 [使用 Homebrew 管理 AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-homebrew)。
我们建议使用本页中记录的第一方安装方法之一。在使用其中一种方法之前，请参阅 [从 Homebrew 切换](manage-sam-cli-versions.md#manage-sam-cli-versions-switch)。
有关更多详细信息，请参阅 [Release version: 1.121.0](https://github.com/aws/aws-sam-cli/releases)。

 要安装 AWS SAMCLI，请按照操作系统的说明进行操作。

### Linux
<a name="install-sam-cli-instructions-linux"></a>

------
#### [ x86\$164 - command line installer ]

1. 将 [AWS SAM CLI .zip 文件](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip)下载到所选目录。

1. **（可选）**您可以在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1. 将安装文件解压缩到您选择的目录中。以下是使用 `sam-installation` 子目录的示例。
**注意**  
如果您的操作系统没有内置的 **unzip** 命令，请使用等效命令。

   ```
   $ unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
   ```

1. 通过运行 `install` 可执行文件安装 AWS SAM CLI。该可执行文件位于上一步骤中使用的目录中。以下是使用 `sam-installation` 子目录的示例：

   ```
   $ sudo ./sam-installation/install
   ```

1. 验证安装。

   ```
   $ sam --version
   ```

   要确认安装成功，您应该会看到一个输出，该输出将以下括号内的文本替换为最新的可用版本：

   ```
    SAM CLI, <latest version>
   ```

------
#### [ arm64 - command line installer ]

1. 将 [AWS SAM CLI .zip 文件](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-arm64.zip)下载到所选目录。

1. **（可选）**您可以在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1. 将安装文件解压缩到您选择的目录中。以下是使用 `sam-installation` 子目录的示例。
**注意**  
如果您的操作系统没有内置的 **unzip** 命令，请使用等效命令。

   ```
   $ unzip aws-sam-cli-linux-arm64.zip -d sam-installation
   ```

1. 通过运行 `install` 可执行文件安装 AWS SAM CLI。该可执行文件位于上一步骤中使用的目录中。以下是使用 `sam-installation` 子目录的示例：

   ```
   $ sudo ./sam-installation/install
   ```

1. 验证安装。

   ```
   $ sam --version
   ```

   要确认安装成功，您应该会看到如下所示的输出，但其中括号内的文本将替换为最新的 SAM CLI 版本：

   ```
    SAM CLI, <latest version>
   ```

------

### macOS
<a name="install-sam-cli-instructions-macos"></a>

#### 安装步骤
<a name="install-sam-cli-instructions-macos-steps"></a>

使用软件包安装程序安装 AWS SAMCLI。此外，软件包安装程序提供两种安装方法让您选择：**GUI** 和**命令行**。您可以为**所有用户**安装，也可以只为**当前用户**安装。要为所有用户安装，需要获得超级用户授权。

**注意**  
AWS SAM CLI 不支持 macOS 13.x 之前的 macOS 版本。升级到支持的 macOS 版本或使用安装 CL AWS SAM I。Homebrew

------
#### [ GUI - All users ]

**下载软件包安装程序并安装 AWS SAMCLI**
**注意**  
 如果您之前通过 Homebrew 或 pip 安装了 AWS SAM CLI，则需要先将其卸载。有关说明，请参阅[卸载 AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-uninstall)。

1.  将 macOS `pkg` 下载到您选择的目录：
   +  **对于运行英特尔处理器的 Mac，请选择 x86** [\$164 —-x86\$164.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-x86_64.pkg) 
   +  **[对于运行 Apple 芯片的 Mac，请选择 arm64 —-arm64.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-arm64.pkg)** 
**注意**  
（可选）您可以选择在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1.  运行您下载的文件，然后按照屏幕上的说明继续完成**简介**、**自述**和**许可**步骤。

1.  在**目标选择**中，选择**为这台计算机的所有用户安装**。

1.  在**安装类型**中，选择 AWS SAM CLI 要安装的位置，然后按下**安装**。推荐的默认位置是 `/usr/local/aws-sam-cli`。
**注意**  
 要使用 **sam** 命令调用 AWS SAM CLI，安装程序会自动在 `/usr/local/bin/sam` 和 `/usr/local/aws-sam-cli/sam` 或您选择的安装文件夹之间创建符号链接。

1.  AWS SAM CLI 将进行安装，系统将显示**安装成功**消息。按下**关闭**。

**验证安装是否成功**
+  通过运行以下命令验证 AWS SAM CLI 是否已正确安装以及符号链接是否已配置：

  ```
  $ which sam
  /usr/local/bin/sam
  $ sam --version
  SAM CLI, <latest version>
  ```

------
#### [ GUI - Current user ]

**下载并安装 AWS SAMCLI**
**注意**  
 如果您之前通过 Homebrew 或 pip 安装了 AWS SAM CLI，则需要先将其卸载。有关说明，请参阅[卸载 AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-uninstall)。

1.  将 macOS `pkg` 下载到您选择的目录：
   +  **对于运行英特尔处理器的 Mac，请选择 x86** [\$164 —-x86\$164.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-x86_64.pkg) 
   +  **[对于运行 Apple 芯片的 Mac，请选择 arm64 —-arm64.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-arm64.pkg)** 
**注意**  
（可选）您可以选择在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1.  运行您下载的文件，然后按照屏幕上的说明继续完成**简介**、**自述**和**许可**步骤。

1.  对于**目标选择**，选择**仅为我安装**。如果没有看到此选项，请转到下一步。

1.  对于**安装类型**，请执行以下操作：

   1. 选择 AWS SAM CLI 要安装的位置。默认位置是 `/usr/local/aws-sam-cli`。选择您拥有写入权限的位置。要更改安装位置，请选择**本地**并选择您的位置。完成后按下**继续**。

   1.  如果您在上一步中没有看到**仅为我安装**的选项，请选择**更改安装位置** > **仅为我安装**，然后按下**继续**。

   1.  按下**安装**。

1.  AWS SAM CLI 将进行安装，系统将显示**安装成功**消息。按下**关闭**。

**要创建符号链接**
+  要使用 **sam** 命令调用 AWS SAM CLI，您必须在 AWS SAM CLI 程序和您的 `$PATH` 之间手动创建符号链接。通过修改并运行以下命令来创建符号链接：

  ```
  $ sudo ln -s /path-to/aws-sam-cli/sam /path-to-symlink-directory/sam
  ```
  +  *sudo*— 如果您的用户具有写入权限`$PATH`，则**sudo**不是必需的。否则，**sudo** 是必需的。
  +  *path-to*— AWS SAMCLI 程序安装位置的路径。例如 `/Users/myUser/Desktop`。
  +  *path-to-symlink-directory*— 您的`$PATH`环境变量。默认位置是 `/usr/local/bin`。

**验证安装是否成功**
+  通过运行以下命令验证 AWS SAM CLI 是否已正确安装以及符号链接是否已配置：

  ```
  $ which sam
  /usr/local/bin/sam
  $ sam --version
  SAM CLI, <latest version>
  ```

------
#### [ Command line - All users ]

**下载并安装 AWS SAMCLI**
**注意**  
 如果您之前通过 Homebrew 或 pip 安装了 AWS SAM CLI，则需要先将其卸载。有关说明，请参阅[卸载 AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-uninstall)。

1.  将 macOS `pkg` 下载到您选择的目录：
   +  **对于运行英特尔处理器的 Mac，请选择 x86** [\$164 —-x86\$164.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-x86_64.pkg) 
   +  **[对于运行 Apple 芯片的 Mac，请选择 arm64 —-arm64.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-arm64.pkg)** 
**注意**  
（可选）您可以选择在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1.  修改并运行安装脚本：

   ```
   $ sudo installer -pkg path-to-pkg-installer/name-of-pkg-installer -target /
   installer: Package name is AWS SAM CLI
   installer: Upgrading at base path /
   installer: The upgrade was successful.
   ```
**注意**  
 要使用 **sam** 命令调用 AWS SAM CLI，安装程序会自动在 `/usr/local/bin/sam` 和 `/usr/local/aws-sam-cli/sam` 之间创建符号链接。

**验证安装是否成功**
+  通过运行以下命令验证 AWS SAM CLI 是否已正确安装以及符号链接是否已配置：

  ```
  $ which sam
  /usr/local/bin/sam
  $ sam --version
  SAM CLI, <latest version>
  ```

------
#### [ Command line - Current user ]

**下载并安装 AWS SAMCLI**
**注意**  
 如果您之前通过 Homebrew 或 pip 安装了 AWS SAM CLI，则需要先将其卸载。有关说明，请参阅[卸载 AWS SAM CLI](manage-sam-cli-versions.md#manage-sam-cli-versions-uninstall)。

1.  将 macOS `pkg` 下载到您选择的目录：
   +  **对于运行英特尔处理器的 Mac，请选择 x86** [\$164 —-x86\$164.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-x86_64.pkg) 
   +  **[对于运行 Apple 芯片的 Mac，请选择 arm64 —-arm64.pkg aws-sam-cli-macos](https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-arm64.pkg)** 
**注意**  
（可选）您可以选择在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1.  确定您有写入权限的安装目录。然后，使用模板创建 `xml` 文件并对其进行修改以反映您的安装目录。目录必须已经存在。

    例如，如果*path-to-my-directory*替换为`/Users/myUser/Desktop`，则`aws-sam-cli`程序文件夹将安装在那里。

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
     <array>
       <dict>
         <key>choiceAttribute</key>
         <string>customLocation</string>
         <key>attributeSetting</key>
         <string>path-to-my-directory</string>
         <key>choiceIdentifier</key>
         <string>default</string>
       </dict>
     </array>
   </plist>
   ```

1.  保存 `xml` 文件并通过运行以下命令验证其是否有效：

   ```
   $ installer -pkg path-to-pkg-installer \
   -target CurrentUserHomeDirectory \
   -showChoicesAfterApplyingChangesXML path-to-your-xml-file
   ```

    输出应显示将应用于 AWS SAM CLI 程序的首选项。

1.  运行以下命令来安装 AWS SAMCLI：

   ```
   $ installer -pkg path-to-pkg-installer \
   -target CurrentUserHomeDirectory \
   -applyChoiceChangesXML path-to-your-xml-file
   
   # Example output
   installer: Package name is AWS SAM CLI
   installer: choices changes file 'path-to-your-xml-file' applied
   installer: Upgrading at base path base-path-of-xml-file
   installer: The upgrade was successful.
   ```

**要创建符号链接**
+  要使用 **sam** 命令调用 AWS SAM CLI，您必须在 AWS SAM CLI 程序和您的 `$PATH` 之间手动创建符号链接。通过修改并运行以下命令来创建符号链接：

  ```
  $ sudo ln -s /path-to/aws-sam-cli/sam /path-to-symlink-directory/sam
  ```
  +  *sudo*— 如果您的用户具有写入权限`$PATH`，则**sudo**不是必需的。否则，**sudo** 是必需的。
  +  *path-to*— AWS SAMCLI 程序安装位置的路径。例如 `/Users/myUser/Desktop`。
  +  *path-to-symlink-directory*— 您的`$PATH`环境变量。默认位置是 `/usr/local/bin`。

**验证安装是否成功**
+  通过运行以下命令验证 AWS SAM CLI 是否已正确安装以及符号链接是否已配置：

  ```
  $ which sam
  /usr/local/bin/sam
  $ sam --version
  SAM CLI, <latest version>
  ```

------

### Windows
<a name="install-sam-cli-instructions-windows"></a>

Windows 安装程序 (MSI) 文件是 Windows 操作系统的软件包安装程序文件。

按照以下步骤使用 MSI 文件安装 AWS SAM CLI。

1. 下载 AWS SAM CLI [64 位版本](https://github.com/aws/aws-sam-cli/releases/latest/download/AWS_SAM_CLI_64_PY3.msi)。

1. **（可选）**您可以在安装前验证安装程序的完整性。有关说明，请参阅[可选：验证 AWS SAMCLI 安装程序的完整性](reference-sam-cli-install-verify.md)。

1. 验证安装。

   安装完成后，打开新的命令提示符或 PowerShell 提示符进行验证。您应该能够从命令行调用 `sam`。

   ```
   sam --version
   ```

   成功安装后 AWS SAMCLI，您应该会看到如下输出：

   ```
   SAM CLI, <latest version>
   ```

1. 启用长路径（仅限 Windows 10 及更高版本）。
**重要**  
 AWS SAMCLI可能会与超过 Windows 最大路径限制的文件路径进行交互。由于 Windows 10 的 **MAX\$1PATH** 限制，这可能会在运行 `sam init` 时导致错误。若要解决此问题，必须配置新的长路径行为。

   要启用长路径，请参阅 *Microsoft Windows 应用程序开发文档*中的[在 Windows 10 版本 1607 及更高版本中启用长路径](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=powershell#enable-long-paths-in-windows-10-version-1607-and-later)。

1. 安装 Git。

   要使用 `sam init` 命令下载示例应用程序，还必须安装 Git。有关说明，请参见[安装 Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)。

## 排查 安装错误
<a name="sam-cli-troubleshoot-install"></a>

### Linux
<a name="sam-cli-troubleshoot-install-linux"></a>

#### Docker 错误：“无法连接到 Docker 进程守护程序。Docker 进程守护程序是否在此主机上运行？”
<a name="serverless-sam-cli-install-linux-troubleshooting-docker-deamon"></a>

在某些情况下，要为 `ec2-user` 提供访问 Docker 进程守护程序的权限，您可能需要重新启动实例。如果您收到此错误，请尝试重启实例。

#### Shell 错误：“找不到命令”
<a name="serverless-sam-cli-install-linux-troubleshooting-sam-cli-not-found"></a>

如果您收到此错误，则表示 Shell 无法在路径中找到 AWS SAM CLI 可执行文件。验证 AWS SAM CLI 可执行文件安装目录的位置，然后验证该目录是否位于路径中。

#### AWS SAMCLI错误：“/lib64/libc.so.6：找不到 `GLIBC\$12.14'版本（/.so.1 必填）” usr/local/aws-sam-cli/dist/libz
<a name="serverless-sam-cli-install-linux-troubleshooting-sam-cli-missing-lib"></a>

如果您收到此错误，则表示您使用的是不受支持的 Linux 版本，并且内置的 glibc 版本已过时。请尝试以下任一方法：
+ 将您的 Linux 主机升级到最新的 64 位 CentOS、Fedora、Ubuntu 或 Amazon Linux 2 发行版。
+ 按照 [安装 AWS SAM CLI](#install-sam-cli) 的说明进行操作。

### macOS
<a name="sam-cli-troubleshoot-install-macos"></a>

#### 安装失败
<a name="sam-cli-troubleshoot-install-macos-install-failed"></a>

![\[AWS SAM CLI 安装程序的映像，其中显示安装失败消息\]](http://docs.aws.amazon.com/zh_cn/serverless-application-model/latest/developerguide/images/sam-cli-troubleshoot-install-macos-install-failed.jpg)


 如果您是在为用户安装 AWS SAM CLI，并且选择了您没有写入权限的安装目录，则可能会出现此错误。请尝试以下任一方法：

1.  选择您具有写入权限的其他安装目录。

1.  删除安装程序。然后重新下载并运行安装程序。

## 后续步骤
<a name="install-sam-cli-next-steps"></a>

要了解有关 AWS SAM CLI 的更多信息并开始构建自己的无服务器应用程序，请参阅以下内容：
+ [教程：使用以下命令部署 Hello World 应用程序 AWS SAM](serverless-getting-started-hello-world.md)— 下载、构建和部署基本无服务器应用程序的 Step-by-step说明。
+ [完整 AWS SAM 研讨会](https://catalog.workshops.aws/complete-aws-sam/en-US) —旨在向您传授所 AWS SAM 提供的许多主要功能的研讨会.
+ [AWS SAM 示例应用程序和模式](https://serverlessland.com/patterns?framework=AWS+SAM) — 来自社区作者的示例应用程序和模式，您可以进一步进行实验。

# 可选：验证 AWS SAMCLI 安装程序的完整性
<a name="reference-sam-cli-install-verify"></a>

使用软件包安装程序安装 AWS Serverless Application Model 命令行界面 (AWS SAMCLI) 时，可以在安装前验证其完整性。此步骤是可选的，但我们强烈建议您执行此步骤。

可供您使用的两个验证选项是：
+ 验证软件包安装程序签名文件。
+ 验证软件包安装程序的哈希值。

如果可用于您的平台，我们建议您验证签名文件选项。此选项提供额外的安全层，因为密钥值在此处发布，并且与 GitHub 存储库分开管理。

**Topics**
+ [

## 验证安装程序包签名文件
](#reference-sam-cli-install-verify-signature)
+ [

## 验证哈希值
](#reference-sam-cli-install-verify-hash)

## 验证安装程序包签名文件
<a name="reference-sam-cli-install-verify-signature"></a>

### Linux
<a name="reference-sam-cli-install-verify-signature-linux"></a>

#### arm64：命令行安装程序
<a name="reference-sam-cli-install-verify-signature-linux-arm64"></a>

AWS SAM 使用 [GnuPG](https://www.gnupg.org/) 对.zip 安装程序进行签名 AWS SAMCLI。验证过程需要执行以下步骤：

1. 使用主公钥验证签署人公钥。

1. 使用签署人公钥验证 AWS SAM CLI 软件包安装程序。

**验证签署人公钥的完整性**

1. 复制主公钥并将其作为 `.txt` 文件保存到本地计算机。例如 *`primary-public-key.txt`*。

   ```
   -----BEGIN PGP PUBLIC KEY BLOCK-----
   Version: GnuPG v2.0.22 (GNU/Linux)
   
   mQINBGRuSzMBEADsqiwOy78w7F4+sshaMFRIwRGNRm94p5Qey2KMZBxekFtoryVD
   D9jEOnvupx4tvhfBHz5EcUHCEOdl4MTqdBy6vVAshozgxVb9RE8JpECn5lw7XC69
   4Y7Gy1TKKQMEWtDXElkGxIFdUWvWjSnPlzfnoXwQYGeE93CUS3h5dImP22Yk1Ct6
   eGGhlcbg1X4L8EpFMj7GvcsU8f7ziVI/PyC1Xwy39Q8/I67ip5eU5ddxO/xHqrbL
   YC7+8pJPbRMej2twT2LrcpWWYAbprMtRoa6WfE0/thoo3xhHpIMHdPfAA86ZNGIN
   kRLjGUg7jnPTRW4Oin3pCc8nT4Tfc1QERkHm641gTC/jUvpmQsM6h/FUVP2i5iE/
   JHpJcMuL2Mg6zDo3x+3gTCf+Wqz3rZzxB+wQT3yryZs6efcQy7nROiRxYBxCSXX0
   2cNYzsYLb/bYaW8yqWIHD5IqKhw269gp2E5Khs60zgS3CorMb5/xHgXjUCVgcu8a
   a8ncdf9fjl3WS5p0ohetPbO2ZjWv+MaqrZOmUIgKbA4RpWZ/fU97P5BW9ylwmIDB
   sWy0cMxg8MlvSdLytPieogaM0qMg3u5qXRGBr6Wmevkty0qgnmpGGc5zPiUbtOE8
   CnFFqyxBpj5IOnG0KZGVihvn+iRxrv6GO7WWO92+Dc6m94U0EEiBR7QiOwARAQAB
   tDRBV1MgU0FNIENMSSBQcmltYXJ5IDxhd3Mtc2FtLWNsaS1wcmltYXJ5QGFtYXpv
   bi5jb20+iQI/BBMBCQApBQJkbkszAhsvBQkHhM4ABwsJCAcDAgEGFQgCCQoLBBYC
   AwECHgECF4AACgkQQv1fenOtiFqTuhAAzi5+ju5UVOWqHKevOJSO08T4QB8HcqAE
   SVO3mY6/j29knkcL8ubZP/DbpV7QpHPI2PB5qSXsiDTP3IYPbeY78zHSDjljaIK3
   njJLMScFeGPyfPpwMsuY4nzrRIgAtXShPA8N/k4ZJcafnpNqKj7QnPxiC1KaIQWm
   pOtvb8msUF3/s0UTa5Ys/lNRhVC0eGg32ogXGdojZA2kHZWdm9udLo4CDrDcrQT7
   NtDcJASapXSQL63XfAS3snEc4e1941YxcjfYZ33rel8K9juyDZfi1slWR/L3AviI
   QFIaqSHzyOtP1oinUkoVwL8ThevKD3Ag9CZflZLzNCV7yqlF8RlhEZ4zcE/3s9El
   WzCFsozb5HfE1AZonmrDh3SyOEIBMcS6vG5dWnvJrAuSYv2rX38++K5Pr/MIAfOX
   DOI1rtA+XDsHNv9lSwSy0lt+iClawZANO9IXCiN1rOYcVQlwzDFwCNWDgkwdOqS0
   gOA2f8NF9lE5nBbeEuYquoOl1Vy8+ICbgOFs9LoWZlnVh7/RyY6ssowiU9vGUnHI
   L8f9jqRspIz/Fm3JD86ntZxLVGkeZUz62FqErdohYfkFIVcv7GONTEyrz5HLlnpv
   FJ0MR0HjrMrZrnOVZnwBKhpbLocTsH+3t5It4ReYEX0f1DIOL/KRwPvjMvBVkXY5
   hblRVDQoOWc=
   =d9oG
   -----END PGP PUBLIC KEY BLOCK-----
   ```

1. 将主公钥导入到您的密钥环中。

   ```
   $ gpg --import primary-public-key.txt
   							
   gpg: directory `/home/.../.gnupg' created
   gpg: new configuration file `/home/.../.gnupg/gpg.conf' created
   gpg: WARNING: options in `/home/.../.gnupg/gpg.conf' are not yet active during this run
   gpg: keyring `/home/.../.gnupg/secring.gpg' created
   gpg: keyring `/home/.../.gnupg/pubring.gpg' created
   gpg: /home/.../.gnupg/trustdb.gpg: trustdb created
   gpg: key 73AD885A: public key "AWS SAM CLI Primary <aws-sam-cli-primary@amazon.com>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   ```

1. 复制签署人公钥并将其作为 `.txt` 文件保存到本地计算机。例如 *`signer-public-key.txt`*。

   ```
   -----BEGIN PGP PUBLIC KEY BLOCK-----
   Version: GnuPG v2.0.22 (GNU/Linux)
   
   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
   LtZnq+n4SfeNbZjD2FQWZR4CrA==
   =lHfs
   -----END PGP PUBLIC KEY BLOCK-----
   ```

1. 将签署人公钥导入到您的密钥环中。

   ```
   $ gpg --import signer-public-key.txt
   							
   gpg: key 4094ABB1BEDFDAB4: public key "AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   gpg: no ultimately trusted keys found
   ```

   记下输出中的密钥值。例如 *`4094ABB1BEDFDAB4`*。

1. 使用密钥值获取并验证签署人公钥的指纹。

   ```
   $ gpg --fingerprint 4094ABB1BEDFDAB4
   							
   pub   rsa4096 2025-05-19 [SCEA] [expires: 2027-05-19]
         EF46 3E86 CA31 933B B688  CC1A 4094 ABB1 BEDF DAB4
   uid           [ unknown] AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>
   ```

   指纹应与以下内容匹配：

   ```
   EF46 3E86 CA31 933B B688  CC1A 4094 ABB1 BEDF DAB4
   ```

   如果指纹字符串不匹配，请不要使用 AWS SAM CLI 安装程序。通过在*aws-sam-cli GitHub 存储库*中[创建问题来上](https://github.com/aws/aws-sam-cli/issues/new?assignees=&labels=stage%2Fneeds-triage&projects=&template=Bug_report.md&title=Bug%3A+TITLE)报给 AWS SAM 团队。

1. 验证签署人公钥的签名：

   ```
   $ gpg --check-sigs 4094ABB1BEDFDAB4
   						  
   pub   rsa4096 2025-05-19 [SCEA] [expires: 2027-05-19]
         EF463E86CA31933BB688CC1A4094ABB1BEDFDAB4
   uid           [ unknown] AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>
   sig!3        4094ABB1BEDFDAB4 2025-05-19  [self-signature]
   sig!         42FD5F7A73AD885A 2025-05-19 AWS SAM CLI Primary <aws-sam-cli-primary@amazon.com>
   ```

   如果看到 `1 signature not checked due to a missing key`，请重复前面的步骤，将主公钥和签署人公钥导入到密钥环中。

   您应该会看到列出的主公钥和签署人公钥的密钥值。

现在，您已经验证了签署人公钥的完整性，您可以使用签署人公钥来验证 AWS SAM CLI 软件包安装程序。

**验证 AWS SAM CLI 软件包安装程序的完整性**

1. **获取 AWS SAM CLI 软件包签名文件** - 使用以下命令下载 AWS SAM CLI 软件包安装程序的签名文件：

   ```
   $ wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-arm64.zip.sig
   ```

1. **验证签名文件** – 将两个下载 `.sig` 和 `.zip` 文件作为参数传递给 `gpg` 命令。以下是示例：

   ```
   $ gpg --verify aws-sam-cli-linux-arm64.zip.sig aws-sam-cli-linux-arm64.zip
   ```

   该输出值应该类似于以下内容：

   ```
   gpg: Signature made Mon 19 May 2025 01:21:57 AM UTC using RSA key ID 4094ABB1BEDFDAB4
   gpg: Good signature from "AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: EF46 3E86 CA31 933B B688  CC1A 4094 ABB1 BEDF DAB4
   ```
   + 可以忽略消息`WARNING: This key is not certified with a trusted signature!`。之所以出现此警告，是因为您的个人 PGP 密钥（如果您有）和 AWS SAM CLI 密钥之间没有信任链。有关更多信息，请参阅[信任 Web](https://en.wikipedia.org/wiki/Web_of_trust)。
   + 如果输出包含短语 `BAD signature`，则检查是否正确执行了此过程。如果您继续收到此回复，请通过在*aws-sam-cli GitHub 存储库*中[创建问题](https://github.com/aws/aws-sam-cli/issues/new?assignees=&labels=stage%2Fneeds-triage&projects=&template=Bug_report.md&title=Bug%3A+TITLE)来上报给 AWS SAM 团队，并避免使用下载的文件。

   消息`Good signature from "AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>"`表示签名已通过验证，您可以继续安装。

#### x86\$164 - 命令行安装程序
<a name="reference-sam-cli-install-verify-signature-linux-x8664"></a>

AWS SAM 使用 [GnuPG](https://www.gnupg.org/) 对.zip 安装程序进行签名 AWS SAMCLI。验证过程需要执行以下步骤：

1. 使用主公钥验证签署人公钥。

1. 使用签署人公钥验证 AWS SAM CLI 软件包安装程序。

**验证签署人公钥的完整性**

1. 复制主公钥并将其作为 `.txt` 文件保存到本地计算机。例如 *`primary-public-key.txt`*。

   ```
   -----BEGIN PGP PUBLIC KEY BLOCK-----
   Version: GnuPG v2.0.22 (GNU/Linux)
   
   mQINBGRuSzMBEADsqiwOy78w7F4+sshaMFRIwRGNRm94p5Qey2KMZBxekFtoryVD
   D9jEOnvupx4tvhfBHz5EcUHCEOdl4MTqdBy6vVAshozgxVb9RE8JpECn5lw7XC69
   4Y7Gy1TKKQMEWtDXElkGxIFdUWvWjSnPlzfnoXwQYGeE93CUS3h5dImP22Yk1Ct6
   eGGhlcbg1X4L8EpFMj7GvcsU8f7ziVI/PyC1Xwy39Q8/I67ip5eU5ddxO/xHqrbL
   YC7+8pJPbRMej2twT2LrcpWWYAbprMtRoa6WfE0/thoo3xhHpIMHdPfAA86ZNGIN
   kRLjGUg7jnPTRW4Oin3pCc8nT4Tfc1QERkHm641gTC/jUvpmQsM6h/FUVP2i5iE/
   JHpJcMuL2Mg6zDo3x+3gTCf+Wqz3rZzxB+wQT3yryZs6efcQy7nROiRxYBxCSXX0
   2cNYzsYLb/bYaW8yqWIHD5IqKhw269gp2E5Khs60zgS3CorMb5/xHgXjUCVgcu8a
   a8ncdf9fjl3WS5p0ohetPbO2ZjWv+MaqrZOmUIgKbA4RpWZ/fU97P5BW9ylwmIDB
   sWy0cMxg8MlvSdLytPieogaM0qMg3u5qXRGBr6Wmevkty0qgnmpGGc5zPiUbtOE8
   CnFFqyxBpj5IOnG0KZGVihvn+iRxrv6GO7WWO92+Dc6m94U0EEiBR7QiOwARAQAB
   tDRBV1MgU0FNIENMSSBQcmltYXJ5IDxhd3Mtc2FtLWNsaS1wcmltYXJ5QGFtYXpv
   bi5jb20+iQI/BBMBCQApBQJkbkszAhsvBQkHhM4ABwsJCAcDAgEGFQgCCQoLBBYC
   AwECHgECF4AACgkQQv1fenOtiFqTuhAAzi5+ju5UVOWqHKevOJSO08T4QB8HcqAE
   SVO3mY6/j29knkcL8ubZP/DbpV7QpHPI2PB5qSXsiDTP3IYPbeY78zHSDjljaIK3
   njJLMScFeGPyfPpwMsuY4nzrRIgAtXShPA8N/k4ZJcafnpNqKj7QnPxiC1KaIQWm
   pOtvb8msUF3/s0UTa5Ys/lNRhVC0eGg32ogXGdojZA2kHZWdm9udLo4CDrDcrQT7
   NtDcJASapXSQL63XfAS3snEc4e1941YxcjfYZ33rel8K9juyDZfi1slWR/L3AviI
   QFIaqSHzyOtP1oinUkoVwL8ThevKD3Ag9CZflZLzNCV7yqlF8RlhEZ4zcE/3s9El
   WzCFsozb5HfE1AZonmrDh3SyOEIBMcS6vG5dWnvJrAuSYv2rX38++K5Pr/MIAfOX
   DOI1rtA+XDsHNv9lSwSy0lt+iClawZANO9IXCiN1rOYcVQlwzDFwCNWDgkwdOqS0
   gOA2f8NF9lE5nBbeEuYquoOl1Vy8+ICbgOFs9LoWZlnVh7/RyY6ssowiU9vGUnHI
   L8f9jqRspIz/Fm3JD86ntZxLVGkeZUz62FqErdohYfkFIVcv7GONTEyrz5HLlnpv
   FJ0MR0HjrMrZrnOVZnwBKhpbLocTsH+3t5It4ReYEX0f1DIOL/KRwPvjMvBVkXY5
   hblRVDQoOWc=
   =d9oG
   -----END PGP PUBLIC KEY BLOCK-----
   ```

1. 将主公钥导入到您的密钥环中。

   ```
   $ gpg --import primary-public-key.txt
   							
   gpg: directory `/home/.../.gnupg' created
   gpg: new configuration file `/home/.../.gnupg/gpg.conf' created
   gpg: WARNING: options in `/home/.../.gnupg/gpg.conf' are not yet active during this run
   gpg: keyring `/home/.../.gnupg/secring.gpg' created
   gpg: keyring `/home/.../.gnupg/pubring.gpg' created
   gpg: /home/.../.gnupg/trustdb.gpg: trustdb created
   gpg: key 73AD885A: public key "AWS SAM CLI Primary <aws-sam-cli-primary@amazon.com>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   ```

1. 复制签署人公钥并将其作为 `.txt` 文件保存到本地计算机。例如 *`signer-public-key.txt`*。

   ```
   -----BEGIN PGP PUBLIC KEY BLOCK-----
   Version: GnuPG v2.0.22 (GNU/Linux)
   
   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
   LtZnq+n4SfeNbZjD2FQWZR4CrA==
   =lHfs
   -----END PGP PUBLIC KEY BLOCK-----
   ```

1. 将签署人公钥导入到您的密钥环中。

   ```
   $ gpg --import signer-public-key.txt
   							
   gpg: key 4094ABB1BEDFDAB4: public key "AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   gpg: no ultimately trusted keys found
   ```

   记下输出中的密钥值。例如 *`4094ABB1BEDFDAB4`*。

1. 使用密钥值获取并验证签署人公钥的指纹。

   ```
   $ gpg --fingerprint 4094ABB1BEDFDAB4
   						  
   pub   rsa4096 2025-05-19 [SCEA] [expires: 2027-05-19]
         EF46 3E86 CA31 933B B688  CC1A 4094 ABB1 BEDF DAB4
   uid           [ unknown] AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>
   ```

   指纹应与以下内容匹配：

   ```
   EF46 3E86 CA31 933B B688  CC1A 4094 ABB1 BEDF DAB4
   ```

   如果指纹字符串不匹配，请不要使用 AWS SAM CLI 安装程序。通过在*aws-sam-cli GitHub 存储库*中[创建问题来上](https://github.com/aws/aws-sam-cli/issues/new?assignees=&labels=stage%2Fneeds-triage&projects=&template=Bug_report.md&title=Bug%3A+TITLE)报给 AWS SAM 团队。

1. 验证签署人公钥的签名：

   ```
   $ gpg --check-sigs 4094ABB1BEDFDAB4
   							
   pub   rsa4096 2025-05-19 [SCEA] [expires: 2027-05-19]
         EF463E86CA31933BB688CC1A4094ABB1BEDFDAB4
   uid           [ unknown] AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>
   sig!3        4094ABB1BEDFDAB4 2025-05-19  [self-signature]
   sig!         42FD5F7A73AD885A 2025-05-19 AWS SAM CLI Primary <aws-sam-cli-primary@amazon.com>
   ```

   如果看到 `1 signature not checked due to a missing key`，请重复前面的步骤，将主公钥和签署人公钥导入到密钥环中。

   您应该会看到列出的主公钥和签署人公钥的密钥值。

现在，您已经验证了签署人公钥的完整性，您可以使用签署人公钥来验证 AWS SAM CLI 软件包安装程序。

**验证 AWS SAM CLI 软件包安装程序的完整性**

1. **获取 AWS SAM CLI 软件包签名文件** - 使用以下命令下载 AWS SAM CLI 软件包安装程序的签名文件：

   ```
   $ wget https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip.sig
   ```

1. **验证签名文件** – 将两个下载 `.sig` 和 `.zip` 文件作为参数传递给 `gpg` 命令。以下是示例：

   ```
   $ gpg --verify aws-sam-cli-linux-x86_64.zip.sig aws-sam-cli-linux-x86_64.zip
   ```

   该输出值应该类似于以下内容：

   ```
   gpg: Signature made Mon 19 May 2025 01:21:57 AM UTC using RSA key ID 4094ABB1BEDFDAB4
   gpg: Good signature from "AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: EF46 3E86 CA31 933B B688  CC1A 4094 ABB1 BEDF DAB4
   ```
   + 可以忽略消息`WARNING: This key is not certified with a trusted signature!`。之所以出现此警告，是因为您的个人 PGP 密钥（如果您有）和 AWS SAM CLI 密钥之间没有信任链。有关更多信息，请参阅[信任 Web](https://en.wikipedia.org/wiki/Web_of_trust)。
   + 如果输出包含短语 `BAD signature`，则检查是否正确执行了此过程。如果您继续收到此回复，请通过在*aws-sam-cli GitHub 存储库*中[创建问题](https://github.com/aws/aws-sam-cli/issues/new?assignees=&labels=stage%2Fneeds-triage&projects=&template=Bug_report.md&title=Bug%3A+TITLE)来上报给 AWS SAM 团队，并避免使用下载的文件。

   消息`Good signature from "AWS SAM CLI Team <aws-sam-cli-signer@amazon.com>"`表示签名已通过验证，您可以继续安装。

### macOS
<a name="reference-sam-cli-install-verify-signature-macos"></a>

#### GUI 和命令行安装程序
<a name="reference-sam-cli-install-verify-signature-macos-installer"></a>

您可以使用 `pkgutil` 工具或手动验证 AWS SAM CLI 软件包安装程序签名文件的完整性。

**使用 pkgutil 进行验证**

1. 运行以下命令，提供下载的安装程序在本地计算机上的路径：

   ```
   $ pkgutil --check-signature /path/to/aws-sam-cli-installer.pkg
   ```

   以下是示例：

   ```
   $ pkgutil --check-signature /Users/user/Downloads/aws-sam-cli-macos-arm64.pkg
   ```

1. 从输出中找到 **Developer ID Installer: AMZN Mobile LLC** 的 **SHA256 fingerprint**。以下是示例：

   ```
   Package "aws-sam-cli-macos-arm64.pkg":
      Status: signed by a developer certificate issued by Apple for distribution
      Notarization: trusted by the Apple notary service
      Signed with a trusted timestamp on: 2026-01-28 07:39:16 +0000
      Certificate Chain:
       1. Developer ID Installer: AMZN Mobile LLC (94KV3E626L)
          Expires: 2030-09-26 00:18:06 +0000
          SHA256 Fingerprint:
              5C 45 BE 63 FD 52 10 07 2D 66 56 77 5C A9 FF 25 91 6D 3F 01 F7 0E
              9A 8A 05 F6 2D 62 B2 88 8D A9
          ------------------------------------------------------------------------
       2. Developer ID Certification Authority
          Expires: 2031-09-17 00:00:00 +0000
          SHA256 Fingerprint:
              F1 6C D3 C5 4C 7F 83 CE A4 BF 1A 3E 6A 08 19 C8 AA A8 E4 A1 52 8F
              D1 44 71 5F 35 06 43 D2 DF 3A
          ------------------------------------------------------------------------
       3. Apple Root CA
          Expires: 2035-02-09 21:40:36 +0000
          SHA256 Fingerprint:
              B0 B1 73 0E CB C7 FF 45 05 14 2C 49 F1 29 5E 6E DA 6B CA ED 7E 2C
              68 C5 BE 91 B5 A1 10 01 F0 24
   ```

1. **Developer ID Installer: AMZN Mobile LLC SHA256 fingerprint** 应匹配以下值：

   ```
   5C 45 BE 63 FD 52 10 07 2D 66 56 77 5C A9 FF 25 91 6D 3F 01 F7 0E 9A 8A 05 F6 2D 62 B2 88 8D A9
   ```

   如果指纹字符串不匹配，请不要使用 AWS SAM CLI 安装程序。通过在*aws-sam-cli GitHub 存储库*中[创建问题来上](https://github.com/aws/aws-sam-cli/issues/new?assignees=&labels=stage%2Fneeds-triage&projects=&template=Bug_report.md&title=Bug%3A+TITLE)报给 AWS SAM 团队。如果指纹字符串匹配，您可以继续使用软件包安装程序。

**手动验证软件包安装程序**
+ 请参阅 *Apple 支持网站*上的[如何验证手动下载的 Apple 软件更新的真实性](https://support.apple.com/en-us/HT202369)。

### Windows
<a name="reference-sam-cli-install-verify-signature-windows"></a>

 AWS SAMCLI安装程序打包为Windows操作系统的MSI文件。

**验证安装程序的完整性**

1. 右键单击安装程序，打开**属性**窗口。

1. 选择**数字签名**选项卡。

1. 在**签名列表**中，选择 **Amazon Web Services, Inc.**，然后选择**详细信息**。

1. 选择**常规**选项卡 (如果尚未选择)，然后选择**查看证书**。

1. 选择**详细信息**选项卡，然后选择**显示**下拉列表中的**全部** (如果尚未选择)。

1. 向下滚动直至您看到**指纹**字段，然后选择**指纹**。这将在下部窗口中显示整个指纹值。

1. 将指纹值与以下值进行匹配。如果值匹配，就继续安装。如果不是，请通过在*aws-sam-cli GitHub 存储库*中[创建问题](https://github.com/aws/aws-sam-cli/issues/new?assignees=&labels=stage%2Fneeds-triage&projects=&template=Bug_report.md&title=Bug%3A+TITLE)来上报给 AWS SAM 团队。

   ```
   cd62479397f09d72a04c7399a254b0a91da53d6c
   ```

## 验证哈希值
<a name="reference-sam-cli-install-verify-hash"></a>

### Linux
<a name="reference-sam-cli-install-verify-hash-linux"></a>

#### x86\$164 - 命令行安装程序
<a name="reference-sam-cli-install-verify-hash-linux-x8664"></a>

使用以下命令生成哈希值，验证下载的安装程序文件的完整性和真实性：

```
$ sha256sum aws-sam-cli-linux-x86_64.zip
```

输出应与以下示例类似：

```
<64-character SHA256 hash value> aws-sam-cli-linux-x86_64.zip
```

将包含 64 个字符的 SHA-256 哈希值与您所需的 AWS SAM CLI 版本在 GitHub 上的[AWS SAM CLI 发布说明](https://github.com/aws/aws-sam-cli/releases/latest)中的哈希值进行比较。

### macOS
<a name="reference-sam-cli-install-verify-hash-macos"></a>

#### GUI 和命令行安装程序
<a name="reference-sam-cli-install-verify-hash-macos-installer"></a>

 使用以下命令生成哈希值，验证下载的安装程序的完整性和真实性：

```
$ shasum -a 256 path-to-pkg-installer/name-of-pkg-installer

# Examples
$ shasum -a 256 ~/Downloads/aws-sam-cli-macos-arm64.pkg
$ shasum -a 256 ~/Downloads/aws-sam-cli-macos-x86_64.pkg
```

 将包含 64 个字符的 SHA-256 哈希值与 GitHub 存储库上的 [AWS SAM CLI 发布说明](https://github.com/aws/aws-sam-cli/releases/latest)中相应的值进行比较。