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

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

sam deploy

部署和Amazon SAM应用程序.

默认情况下,当你使用此命令时,Amazon SAMCLI 假设你当前的工作目录是项目的根目录。这些区域有:Amazon SAMCLI 首先尝试查找使用sam 构建命令,位于.aws-sam子文件夹,并命名template.yaml. 下一步是Amazon SAMCLI 尝试找到名为的模板文件template.yaml要么template.yml在当前工作目录中。如果你指定--template选项,Amazon SAMCLI 的默认行为被覆盖,并将仅部署该行为Amazon SAM模板以及它指向的本地资源。

此命令带有引导式交互模式,您可以通过指定--guided选项。交互模式将引导您完成部署所需的参数,提供默认选项,并可以选择将这些选项保存在项目目录中的配置文件中。使用以下方式执行应用程序的后续部署时sam deploy,Amazon SAMCLI 从配置文件中检索所需的参数。

中声明的对象Parameters的 部分Amazon SAM模板文件显示为其他交互模式提示。系统会提示您为每个参数提供值。有关这些对象的示例和相应提示,请参阅示例在本主题后面的一节。

使用代码签名配置的无服务器应用程序会生成更多交互模式提示。系统会询问是否要签署代码,如果是,系统会提示您输入签名配置文件名称和所有者。有关这些提示的示例,请参阅示例在本主题后面的一节。

有关指定--guided选项,请参阅Amazon SAM CLI 配置文件.

部署Amazon Lambda函数通过Amazon CloudFormationLambda 部署程序包需要 Amazon Simple Storage Service (Amazon S3) 存储桶。这些区域有:Amazon SAMCLI 为您创建和管理此 Amazon S3 存储桶。Amazon SAM启用 Amazon S3 中存储的所有文件的加密。

如果您的应用程序包含声明的任何函数或层资源PackageType: Image,然后你可以指示Amazon SAMCLI 为您自动创建所需的 Amazon ECR 存储库,使用--resolve-image-repos选项,或者--guided选项并响应提示 “为所有功能创建托管 ERC 存储库?” 和Y.

使用方法:

sam deploy [OPTIONS] [ARGS]...

选项:

选项 描述
-g, --guided

指定此选项以具有Amazon SAM使用提示指导您完成部署。

-t, --template-file, --template PATH 您的路径和文件名Amazon SAM已找到模板。

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

--stack-name TEXT (必需)Amazon CloudFormation要部署到的堆栈。如果指定现有堆栈,则该命令将更新堆栈。如果指定了新堆栈,则命令将创建它。
--s3-bucket TEXT 此命令在其中上传您的 Amazon S3 存储桶的名称Amazon CloudFormation模板。如果你的模板大于 51,200 字节,那么--s3-bucket或者--resolve-s3选项是必需的。如果指定了--s3-bucket--resolve-s3选项,则将导致出现错误。
--s3-prefix TEXT 添加到上传到 Amazon S3 存储桶的项目名称中的前缀。前缀名称是 Amazon S3 存储桶的路径名称(文件夹名称)。
--image-repository TEXT Amazon Elastic Container Registry (Amazon ECR) 存储库的名称,此命令将在其中上传函数映像。对于使用声明的函数所必需的Image包装类型。
--signing-profiles LIST 用来签署部署包的配置文件的列表。此选项接受键值对的列表,其中键是要签名的函数或图层的名称,值是签名配置文件,其中可选配置文件所有者分隔为:. 例如:FunctionNameToSign=SigningProfileName1 LayerNameToSign=SigningProfileName2:SigningProfileOwner
--capabilities LIST 必须指定才能允许的功能列表Amazon CloudFormation来创建某些堆栈。一些堆栈模板可能包含的资源会影响您的中的权限Amazon例如,通过创建新账户Amazon Identity and Access Management(IAM) 用户。对于这些堆栈,您必须指定此选项以显示确认它们的功能。有效值仅为 CAPABILITY_IAMCAPABILITY_NAMED_IAM。如果包含 IAM 资源,您可以指定任意一个功能。如果包含具有自定义名称的 IAM 资源,则必须指定 CAPABILITY_NAMED_IAM。如果未指定此选项,则操作将返回InsufficientCapabilities错误消息。
--region TEXT 这些区域有:Amazon要部署到的区域。例如,us-east-1。
--profile TEXT 获取凭证文件中的特定配置文件Amazon凭证。
--kms-key-id TEXT IDAmazon Key Management Service(Amazon KMS) 用于加密 Amazon S3 存储桶中静态的项目的密钥。如果未指定此选项,则Amazon SAM使用 Amazon S3 托管加密密钥。
--force-upload 指定此选项可上传工件,即使它们与 Amazon S3 存储桶中的现有工件匹配。匹配的工件将被覆盖。
--no-execute-changeset 指示是否执行变更集。如果要在执行变更集之前查看堆栈更改,请指定此选项。此命令会创建Amazon CloudFormation变更集然后退出而不执行变更集。要执行更改集,请在不使用此选项的情况下运行同一命令。
--role-arn TEXT IAM 角色的 Amazon 资源名称 (ARN)Amazon CloudFormation假定在执行更改集时。
--fail-on-empty-changeset | --no-fail-on-empty-changeset 指定如果没有对堆栈进行更改,是否返回非零退出代码。默认行为是返回非零退出代码。
--confirm-changeset | --no-confirm-changeset 提示确认是否Amazon SAMCLI 部署计算出的变更集。
--use-json 输出 JSONAmazon CloudFormation模板。默认输出为 YAML。
--resolve-s3 自动创建一个 Amazon S3 存储桶,用于打包和部署非引导式部署。如果你指定--guided选项,然后--resolve-s3将忽略。如果指定了--s3-bucket--resolve-s3选项,则将导致出现错误。
--resolve-image-repos 自动创建 Amazon ECR 存储库,用于打包和部署非引导式部署。此选项仅适用于函数和图层PackageType: Image指定。如果你指定--guided选项,然后忽略 —resolve image-repos。注意:如果Amazon SAM使用此选项自动为函数或图层创建任何 Amazon ECR 存储库,然后您将这些函数或图层从Amazon SAM模板,相应的 Amazon ECR 存储库将自动删除。
--metadata 要附加到模板中引用的所有工件的元数据映射。
--notification-arns LIST Amazon Simple Notification Service (Amazon SNS) 主题 ARN 的列表Amazon CloudFormation与堆栈关联。
--tags LIST 要与创建或更新的堆栈关联的标签的列表。Amazon CloudFormation还可以将这些标签传播到堆栈中支持它的资源。
--parameter-overrides 包含的字符串Amazon CloudFormation参数覆盖编码为键值对。请使用与Amazon Command Line Interface(Amazon CLI)。例如:ParameterKey=ParameterValue InstanceType=t1.micro
--disable-rollback | --no-disable-rollback 指定是否回滚Amazon CloudFormation如果在部署期间出现错误,则堆栈。默认情况下,Amazon CloudFormation如果部署过程中出现错误,堆栈将回滚到最后一个稳定状态。如果你指定--disable-rollback并且在部署过程中发生错误,在错误发生之前创建或更新的资源不会回滚。
--config-file PATH 包含要使用的默认参数值的路径和文件名。默认值是 。samconfig.toml在项目目录的根目录中。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--config-env TEXT 指定配置文件中要使用的默认参数值的环境名称。默认值为 default。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--no-progressbar 将工件上传到 Amazon S3 时,请勿显示进度条。
--debug 打开调试日志记录以打印调试消息Amazon SAMCLI 生成和显示时间戳。
--help 显示此消息并退出。

示例

参数

下面是在中声明的示例对象Parameters部分,以及使用时出现的相应提示sam deploy --guided.

Amazon SAM模板:

Parameters: MyPar: Type: String Default: MyParVal

通信sam deploy --guided提示:

Parameter MyPar [MyParVal]:

代码签名

以下是一个配置了代码签名的函数示例。

Amazon SAM模板:

Resources: HelloWorld: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 CodeSigningConfigArn: arn:aws:lambda:us-east-1:111122223333:code-signing-config:csc-12e12345db1234567

通信sam deploy --guided提示:

#Found code signing configurations in your function definitions Do you want to sign your code? [Y/n]: #Please provide signing profile details for the following functions & layers #Signing profile details for function 'HelloWorld' Signing Profile Name: Signing Profile Owner Account ID (optional): #Signing profile details for layer 'MyLayer', which is used by functions {'HelloWorld'} Signing Profile Name: Signing Profile Owner Account ID (optional):