

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

# sam package
<a name="sam-cli-command-reference-sam-package"></a>

 AWS Serverless Application Model 命令行界面 (AWS SAM CLI) 打包 AWS SAM 应用程序。

此命令会创建一个`.zip`包含您的代码和依赖项的文件，并将该文件上传到亚马逊简单存储服务 (Amazon S3) Simple Service。 AWS SAM 为存储在 Amazon S3 中的所有文件启用加密。然后，它会返回您的 AWS SAM 模板副本，将对本地项目的引用替换为命令上传项目的 Amazon S3 位置。

默认情况下，当您使用此命令时， AWS SAM CLI 会假设当前工作目录是项目的根目录。 AWS SAMCLI第一个尝试查找使用[sam build](sam-cli-command-reference-sam-build.md)命令构建的模板文件，该文件位于`.aws-sam`子文件夹中并命名`template.yaml`。接下来， AWS SAM CLI 尝试在当前工作目录中查找名为 `template.yaml` 或 `template.yml` 的模板文件。如果您指定该`--template`选项， AWS SAMCLI则其默认行为将被覆盖，并且只会打包该 AWS SAM 模板及其指向的本地资源。

**注意**  
[sam deploy](sam-cli-command-reference-sam-deploy.md) 现在隐式执行 `sam package` 的功能。您可以直接使用 [sam deploy](sam-cli-command-reference-sam-deploy.md) 命令打包和部署应用程序。

## 用法
<a name="sam-cli-command-reference-sam-package-usage"></a>

```
$ sam package <arguments> <options>
```

## 参数
<a name="sam-cli-command-reference-sam-package-args"></a>

**Resource ID**  <a name="sam-cli-command-reference-sam-package-args-resource-id"></a>
要打包的 Lambda 函数的 ID。  
此参数是可选的。如果您的应用程序包含单个 Lambda 函数，则 CL AWS SAM I 会将其打包。如果应用程序包含多个函数，请提供用于打包单个函数的函数 ID。  
*有效值*：资源的逻辑 ID 或资源 ARN。

## 选项
<a name="sam-cli-command-reference-sam-package-options"></a>

`--config-env TEXT`  <a name="sam-cli-command-reference-sam-package-options-config-env"></a>
在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--config-file PATH`  <a name="sam-cli-command-reference-sam-package-options-config-file"></a>
包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中，默认值为“samconfig.toml”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--debug`  <a name="sam-cli-command-reference-sam-package-options-debug"></a>
启用调试日志记录，以打印 AWS SAM CLI 生成的调试消息并显示时间戳。

`--force-upload`  <a name="sam-cli-command-reference-sam-package-options-force-upload"></a>
覆盖 Amazon S3 存储桶中的现有文件。指定此标志可上传构件，即使它们与 Amazon S3 存储桶中的现有构件匹配。

`--help`  <a name="sam-cli-command-reference-sam-package-options-help"></a>
显示此消息并退出。

`--image-repository TEXT`  <a name="sam-cli-command-reference-sam-package-options-image-repository"></a>
此命令用于上传函数映像的 Amazon Elastic Container Registry (Amazon ECR) 的 URI。对于使用 `Image` 包类型声明的函数是必需的。

`--kms-key-id TEXT`  <a name="sam-cli-command-reference-sam-package-options-kms-key-id"></a>
用于加密 Amazon S3 存储桶中静态项目的 AWS Key Management Service (AWS KMS) 密钥的 ID。如果未指定此选项，则 AWS SAM 使用 Amazon S3 托管的加密密钥。

`--metadata`  <a name="sam-cli-command-reference-sam-package-options-metadata"></a>
（可选）要附加到模板中引用的所有构件的元数据的映射。

`--no-progressbar`  <a name="sam-cli-command-reference-sam-package-options-no-progressbar"></a>
将构件上传到 Amazon S3 时不显示进度条。

`--output-template-file PATH`  <a name="sam-cli-command-reference-sam-package-options-output-template-file"></a>
命令写入打包模板的文件的路径。如果不指定路径，则命令将模板写入标准输出。

`--profile TEXT`  <a name="sam-cli-command-reference-sam-package-options-profile"></a>
您的凭证文件中用于获取 AWS 凭证的特定个人资料。

`--region TEXT`  <a name="sam-cli-command-reference-sam-package-options-region"></a>
要部署到的 AWS 区域。例如，us-east-1。

`--resolve-s3`  <a name="sam-cli-command-reference-sam-package-options-resolve-s3"></a>
自动创建 Amazon S3 存储桶以用于打包。如果同时指定 `--s3-bucket` 和 `--resolve-s3` 选项，则会出现错误。

`--s3-bucket TEXT`  <a name="sam-cli-command-reference-sam-package-options-s3-bucket"></a>
此命令用于上传构件的 Amazon S3 存储桶的名称。如果构件大于 51,200 字节，则需要 `--s3-bucket` 或 `--resolve-s3` 选项。如果同时指定 `--s3-bucket` 和 `--resolve-s3` 选项，则会出现错误。

`--s3-prefix TEXT`  <a name="sam-cli-command-reference-sam-package-options-s3-prefix"></a>
上传到 Amazon S3 存储桶的构件名称中添加的前缀。前缀名称是 Amazon S3 存储桶的路径名称（文件夹名称）。这仅适用于以 `Zip` 包类型声明的函数。

`--save-params`  <a name="sam-cli-command-reference-sam-package-options-save-params"></a>
将您在命令行中提供的参数保存到 AWS SAM 配置文件中。

`--signing-profiles LIST`  <a name="sam-cli-command-reference-sam-package-options-signing-profiles"></a>
（可选）用于签署部署包的签名配置文件列表。此参数采用键值对列表，其中密钥是要签名的函数或层的名称，值是签名配置文件，可选的配置文件所有者用 `:` 分隔。例如 `FunctionNameToSign=SigningProfileName1 LayerNameToSign=SigningProfileName2:SigningProfileOwner`。

`--template-file, --template, -t PATH`  <a name="sam-cli-command-reference-sam-package-options-template-file"></a>
 AWS SAM 模板所在的路径和文件名。  
如果指定此选项，则仅 AWS SAM 打包模板及其指向的本地资源。

`--use-json`  <a name="sam-cli-command-reference-sam-package-options-use-json"></a>
输出 CloudFormation 模板的 JSON。默认使用 YAML。

## 示例
<a name="sam-cli-command-reference-sam-package-examples"></a>

以下示例为 Lambda 函数和应用程序创建和 CodeDeploy 打包工件。构件将上传到 Amazon S3 存储桶。命令的输出是名为 `package.yml` 的新文件。

```
$ sam package \
  --template-file template.yml \
  --output-template-file package.yml \
  --s3-bucket amzn-s3-demo-bucket
```