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

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

sam 同步

这些区域有:Amazon SAMCLIsync命令将您的本地更改部署到Amazon Web Services 云. 使用sync在迭代应用程序时构建、打包和部署对开发环境的更改。

用法:

sam sync [OPTIONS]

选项:

选项 描述
-t, --template-file, --template PATH 您的路径和文件名Amazon SAM模板位于。

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

--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 --watch要么sam deploy.
--watch 启动一个进程,监视您的本地应用程序是否有更改,并自动将其同步到Amazon Web Services 云. 默认情况下,当您指定此选项时,Amazon SAM更新应用程序中的所有资源时对其进行同步。有了该选项,Amazon SAM执行初始操作Amazon CloudFormation部署。然后,Amazon SAM使用Amazon用于更新代码资源的服务 API。Amazon SAM使用Amazon CloudFormation在更新您的基础架构资源时更新基础架构资源Amazon SAM模板。
--resource-id TEXT 指定要同步的资源 ID。要同步多个资源,可以多次指定此选项。此选项受支持--code选项。例如,--resource-id Function1 --resource-id Function2
--resource TEXT 指定要同步的资源类型。要同步多个资源,可以多次指定此选项。此选项受支持--code选项。该值必须是下面列出的资源之一--code. 例如,--resource AWS::Serverless::Function --resouce AWS::Serverless::LayerVersion
--dependency-layer | --no-dependency-layer

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

默认设置为 --dependency-layer

-u, --use-container

如果您的函数依赖于具有本机编译依赖项的包,请使用此选项在Amazon Lambda像 Docker 容器一样。

注意:目前,此选项与不兼容--dependency-layer. 如果您将--use-container--dependency-layer,Amazon SAMCLI 会通知您并继续--no-dependency-layer.

--stack-name TEXT (必需)的名称Amazon CloudFormation为您的应用程序堆栈。
--s3-bucket TEXT Amazon Simple Storage Service (Amazon S3) 存储桶的名称Amazon CloudFormation模板。如果你的模板大于 51,200 字节,那么要么--s3-bucket或者--resolve-s3选项是必需的。如果指定了两者--s3-bucket--resolve-s3选项,则将出错。
--s3-prefix TEXT 前缀添加到您上传到 Amazon S3 存储桶的构件名称中。前缀名称是 Amazon S3 存储桶的路径名(文件夹名称)。这仅适用于使用声明的函数ZipThe 程序包。
--capabilities LIST 您指定允许的功能列表Amazon CloudFormation创建特定的堆栈。一些堆栈模板中可能包含的资源会影响您的中的权限Amazon Web Services 账户.例如,通过创建新的Amazon Identity and Access Management(IAM) 用户。默认功能是CAPABILITY_NAMED_IAMCAPABILITY_AUTO_EXPAND. 指定此选项以覆盖默认值。有效值包括:
  • CAPABITY_IAM

  • CAPABILITY_NAMED_IAM

  • 能力_资源_政策

  • CAPABILITY_AUTO_EXPAND

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

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

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

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

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

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

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

--parameter-overrides 包含以下内容的字符串Amazon CloudFormation参数覆盖。编码为键值对的参数。使用与Amazon Command Line Interface(Amazon CLI)。例如,ParameterKey=ParameterValue InstanceType=t1.micro
--image-repository TEXT Amazon EElastic Container Registry (Amazon ECR) 存储库的名称。此命令将上载函数镜像。使用声明的函数是必需的ImageThe 程序包。
--kms-key-id TEXT 的身份证Amazon Key Management Service(Amazon KMS) 密钥用于加密 Amazon S3 存储桶中的静态构件。如果不指定此选项,则Amazon SAM使用 Amaon S3 托管加密密钥。
--role-arn TEXT IAM 角色的 Amazon 资源名称 (ARN),Amazon CloudFormation在应用变更集时假设。
--notification-arns LIST Amazon Simple Notification Service (Amazon S3) 主题 ARN 列表Amazon CloudFormation与堆栈关联。
--tags LIST 要与已创建或更新的堆栈关联的标签列表。Amazon CloudFormation还可以将这些标签传播到堆栈中支持该标签的资源。
--metadata 元数据映射,用于附加到您在模板中引用的所有工件。

示例

运行以下命令以启动一个进程,该进程将本地环境中的更改自动部署到开发环境中Amazon Web Services 云.

sam sync --stack-name sam-app --watch

运行以下命令将代码更改部署到特定的 Lambda 函数和 Lambda 层。Amazon SAM使用 Lambda API 在中更新您的代码Amazon Web Services 云.

sam sync --stack-name sam-app --code --resource-id HelloWorldFunction --resource-id HelloWorldLayer

运行以下命令以将最新的本地更改部署到应用程序的Amazon CloudFormation堆栈。

sam sync --stack-name sam-app

嵌套堆栈示例

注意

我们目前支持使用以下两种方法引用堆栈:!Ref LayerName要么!GetAttr Stack.Output.LayerName.

Amazon SAM加速现在支持嵌套堆栈。要同步子堆栈中的资源,请继续为其提供根堆栈--stack-name参数。对于--resource-id参数,按以下格式指定子堆栈和资源ChildStack/resourceId. 您可以定义其他子堆栈,方法是随后使用以下方式描述堆栈名称/. 有关创建嵌套应用程序的更多信息,请参阅使用嵌套应用.

sam sync --code --stack-name sam-app --resource-id mystack/HelloWorldFunction