sam sync - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

sam sync

此页面提供了 Amazon Serverless Application Model 命令行界面(Amazon SAM CLI) sam sync 命令的参考信息。

sam sync 命令将本地应用程序的更改同步到 Amazon Web Services 云。

使用量

$ sam sync <options>

Options

--base-dir, -s DIRECTORY

根据此目录解析函数或层的源代码的相对路径。使用此选项更改源代码文件夹相对路径的解析方式。默认情况下,相对路径是根据 Amazon SAM 模板的位置进行解析的。

除了正在构建的根应用程序或堆栈中的资源外,此选项还适用于嵌套应用程序或堆栈。此外,此选项适用于以下资源类型和属性:

  • 资源类型:AWS::Serverless::Function 属性:CodeUri

  • 资源类型:AWS::Serverless::Function 资源属性:Metadata 条目:DockerContext

  • 资源类型:AWS::Serverless::LayerVersion 属性:ContentUri

  • 资源类型:AWS::Lambda::Function 属性:Code

  • 资源类型:AWS::Lambda::LayerVersion 属性:Content

--build-image TEXT

构建应用程序时要使用的容器映像的 URI。默认情况下,Amazon SAM 使用 Amazon Elastic Container Registry (Amazon ECR) Public 提供的容器映像存储库 URI。指定此选项以使用不同的映像。

您可以在单个命令中多次使用此选项。每种选项都接受一个字符串或一个键值对。

  • 字符串 – 指定应用程序中所有资源都将使用的容器映像的 URI。以下是 示例:

    $ sam sync --build-image amazon/aws-sam-cli-build-image-python3.8
  • 键值对 – 将资源名称指定为键,并将要与该资源一起使用的容器映像 URI 指定为值。使用此格式为应用程序中的每个资源指定不同的容器映像 URI。以下是 示例:

    $ sam sync --build-image Function1=amazon/aws-sam-cli-build-image-python3.8

在指定了 --use-container 选项的情况下此选项才适用,否则会导致错误。

--build-in-source | --no-build-in-source

提供 --build-in-source 以便直接在源文件夹中生成项目。

--build-in-source 选项支持以下运行时和构建方法:

  • 运行时sam init --runtime 选项支持的任何 Node.js 运行时。

  • 构建方法Makefileesbuild

--build-in-source 选项与以下选项不兼容:

  • --use-container

默认值--no-build-in-source

--capabilities LIST

为了使 Amazon CloudFormation 能够创建某些堆栈而指定的功能列表。一些堆栈模板中可能包含会影响您在 Amazon Web Services 账户 中的权限的资源。例如,通过创建新的 Amazon Identity and Access Management (IAM) 用户。指定此选项以覆盖默认值。有效值包括:

  • CAPABILITY_IAM

  • CAPABILITY_NAMED_IAM

  • CAPABILITY_RESOURCE_POLICY

  • CAPABILITY_AUTO_EXPAND

默认值CAPABILITY_NAMED_IAMCAPABILITY_AUTO_EXPAND

--code

默认情况下,Amazon SAM 同步应用程序中的所有资源。指定此选项可仅同步代码资源,包括以下内容:

  • AWS::Serverless::Function

  • AWS::Lambda::Function

  • AWS::Serverless::LayerVersion

  • AWS::Lambda::LayerVersion

  • AWS::Serverless::Api

  • AWS::ApiGateway::RestApi

  • AWS::Serverless::HttpApi

  • AWS::ApiGatewayV2::Api

  • AWS::Serverless::StateMachine

  • AWS::StepFunctions::StateMachine

要同步代码资源,Amazon SAM 直接使用 Amazon 服务 API,而不是通过 Amazon CloudFormation 部署。要更新 Amazon CloudFormation 堆栈,请运行 sam sync --watchsam deploy

--config-env TEXT

在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件

--config-file PATH

包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中,默认值为“samconfig.toml”。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件

--dependency-layer | --no-dependency-layer

指定是否将单个函数的依赖项分离到另一层以加快同步过程。

默认值--dependency-layer

--image-repository TEXT

此命令用于上传函数映像的 Amazon Elastic Container Registry (Amazon ECR) 存储库的名称。对于使用 Image 包类型声明的函数是必需的。

--image-repositories TEXT

函数与其 Amazon ECR 存储库 URI 之间的映射。通过逻辑 ID 引用函数。以下是 示例:

$ sam sync --image-repositories Function1=123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo

您可以在单个命令中多次指定此选项。

--kms-key-id TEXT

用于加密 Amazon S3 存储桶中静态构件的 Amazon Key Management Service (Amazon KMS) 密钥的 ID。如果不指定此选项,则 Amazon SAM 会使用 Amazon S3 托管加密密钥。

--metadata

要附加到模板中引用的所有构件的元数据的映射。

--notification-arns LIST

Amazon CloudFormation 与堆栈关联的 Amazon Simple Notification Service (Amazon SNS) 主题 ARN 列表。

--parameter-overrides

包含编码为键值对的 Amazon CloudFormation 参数覆盖的字符串。使用与 Amazon Command Line Interface (Amazon CLI) 相同的格式。例如,ParameterKey=ParameterValue InstanceType=t1.micro

--resource TEXT

指定要同步的资源类型。要同步多个资源,可以多次指定此选项。--code 选项支持此选项。该值必须是 --code 下列出的资源之一。例如,--resource AWS::Serverless::Function --resource AWS::Serverless::LayerVersion

--resource-id TEXT

指定要同步的资源 ID。要同步多个资源,可以多次指定此选项。--code 选项支持此选项。例如,--resource-id Function1 --resource-id Function2

--role-arn TEXT

应用变更集时 Amazon CloudFormation 担任的 IAM 角色的 Amazon 资源名称(ARN)。

--s3-bucket TEXT

此命令用于上传 Amazon CloudFormation 模板的 Amazon Simple Storage Service (Amazon S3) 存储桶的名称。如果模板大于 51,200 字节,则需要 --s3-bucket--resolve-s3 选项。如果同时指定 --s3-bucket--resolve-s3 选项,则会出现错误。

--s3-prefix TEXT

上传到 Amazon S3 存储桶的构件的名称中添加的前缀。前缀名称是 Amazon S3 存储桶的路径名称(文件夹名称)。这仅适用于使用 Zip 包类型声明的函数。

--save-params

将您在命令行中提供的参数保存到 Amazon SAM 配置文件中。

--skip-deploy-sync | --no-skip-deploy-sync

若不需要,则指定 --skip-deploy-sync 以跳过初始基础设施同步。Amazon SAM CLI 会将您的本地 Amazon SAM 模板与已部署的 Amazon CloudFormation 模板进行比较,并且仅在检测到更改时才执行部署。

指定 --no-skip-deploy-sync 以便每次运行 sam sync 时执行 Amazon CloudFormation 部署。

要了解更多信息,请参阅跳过初始 Amazon CloudFormation 部署

默认值--skip-deploy-sync

--stack-name TEXT

应用程序的 Amazon CloudFormation 堆栈名称。

此选项是必需的。

--tags LIST

列出要与已创建或更新的堆栈关联的标签。Amazon CloudFormation 还会将这些标签传播到堆栈中支持它的资源。

--template-file, --template, -t PATH

Amazon SAM 模板所在位置的路径和文件名。

注意

如果指定此选项,则 Amazon SAM 只会部署模板及其指向的本地资源。

--use-container, -u

如果函数依赖于具有本地编译的依赖项的程序包,请使用此选项在类似于 Amazon Lambda 的 Docker 容器中构建函数。

注意

目前,此选项与 --dependency-layer 不兼容。如果您将 --use-container--dependency-layer 一起使用,则 Amazon SAM CLI 会通知您并继续 --no-dependency-layer

--watch

启动一个进程,监控本地应用程序是否有更改,并自动将其同步到 Amazon Web Services 云。默认情况下,当您指定此选项时,Amazon SAM 会在更新应用程序中的所有资源时进行同步。基于此选项,Amazon SAM 会执行初始 Amazon CloudFormation 部署。然后,Amazon SAM 使用 Amazon 服务 API 更新代码资源。在您更新 Amazon SAM 模板时 Amazon SAM 会使用 Amazon CloudFormation 更新基础设施资源。

--watch-exclude TEXT

禁止文件或文件夹用于文件更改的观测。如果要使用此选项,则还必须提供 --watch

此选项收到键值对:

  • :应用程序中 Lambda 函数的逻辑 ID。

  • :要排除的关联文件名或文件夹。

当您更新使用 --watch-exclude 选项指定的任何文件或文件夹时,Amazon SAM CLI 将不会启动同步。但是,当对其他文件或文件夹的更新启动同步时,这些文件或文件夹将包含在该同步中。

您可以在单个命令中多次提供此选项。