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

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

sam deploy

部署Amazon SAM应用程序。

默认情况下,当你使用这个命令时,Amazon SAMCLI 假定您当前的工作目录是项目的根目录。这些区域有:Amazon SAMCLI 首先尝试找到使用创建的模板文件sam bu命令,位于.aws-sam子文件夹,并命名为template.yaml. 接下来,则Amazon SAMCLI 尝试找到名为的模板文件template.yaml要么template.yml在当前工作目录中。

要覆盖Amazon SAMCLI 的默认行为,请指定--template选项。指定此选项时,则Amazon SAMCLI 只部署那个Amazon SAM模板及其指向的本地资源。

要打开引导式交互模式,请指定--guided选项。此模式显示部署所需的参数,提供默认选项,并可选择将这些选项保存在项目目录的配置文件中。当您使用以下方法执行应用程序的后续部署时sam deploy,Amazon SAMCLI 从配置文件中检索所需的参数。

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

使用代码签名配置的无服务器应用程序会生成更多交互模式提示。这些区域有:Amazon SAMCLI 询问您是否要对代码进行签名,如果是,则提示您输入签名配置文件名称和所有者。有关这些提示的示例,请参阅示例本主题后面的部分。

有关设置的更多信息Amazon SAMCLI 可选择在您指定--guided选项,请参阅Amazon SAM CLI 配置文件.

要部署Amazon Lambda函数通过Amazon CloudFormation,则必须包含 Lambda 部署包的 Amazon Simple Storage Service (Amazon S3) 存储桶。这些区域有:Amazon SAMCLI 会为您创建和管理这个 Amazon S3 存储桶。Amazon SAM启用对 Amazon S3 中存储的所有文件进行加密。

如果您的应用程序包含任何用声明的函数或层资源PackageType: Image,那么你可以指示Amazon SAMCLI 可自动创建所需的Amazon Elastic Container Registry (Amazon ECR) 存储库 要有Amazon SAMCLI 创建这些存储库,使用--resolve-image-repos选项或--guided选项,然后使用以下命令回复后续提示Y.

用法

sam deploy [OPTIONS] [ARGS]...

选项:

选项 描述
-g, --guided

指定此选项可获得Amazon SAMCLI 使用提示来指导您完成部署。

-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 ECR 存储库的名称。此选项对于使用声明的函数是必需的Image程序包类型。
--signing-profiles LIST 用于对部署包进行签名的签名配置文件列表。此选项采用键值对列表,其中密钥是要签名的函数或层的名称,值是签名配置文件,可选配置文件所有者分隔为:. 例如,FunctionNameToSign=SigningProfileName1 LayerNameToSign=SigningProfileName2:SigningProfileOwner
--capabilities LIST 必须指定才能允许的功能列表Amazon CloudFormation创建特定的堆栈。一些堆栈模板中可能包含的资源会影响您的中的权限Amazon Web Services 账户,例如,通过创建新的Amazon Identity and Access Management(IAM) 用户。对于这些堆栈,您必须通过指定此选项来明确确认其功能。有效值仅为 CAPABILITY_IAMCAPABILITY_NAMED_IAM。如果包含 IAM 资源,则可以指定任意一个功能。如果包含具有自定义名称的 IAM 资源,则必须指定CAPABILITY_NAMED_IAM. 如果不指定此选项,则操作将返回InsufficientCapabilities错误消息。
--region TEXT 这些区域有:Amazon Web Services 区域要部署到。例如,us-east-1。
--profile TEXT 凭证文件中的特定配置文件将获取Amazon凭证。
--kms-key-id TEXT 的身份证Amazon 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 Resource Name (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选项,然后是Amazon SAMCLI 忽略--resolve-s3. 如果指定了两者--s3-bucket--resolve-s3选项,则出错。
--resolve-image-repos 自动创建 Amazon ECR 存储库,用于打包和部署非引导式部署。此选项仅适用于具有以下功能的函数和层PackageType: Image指定的。如果您指定--guided选项,然后是Amazon SAMCLI 忽略--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并且在部署期间出现错误,则不会回滚错误发生之前创建或更新的资源。
--on-failure [ROLLBACK | DELETE | DO_NOTHING]

指定堆栈创建失败时要采取的操作。

以下选项可用:

  • ROLLBACK— 将堆栈回滚到以前的已知良好状态。

  • DELETE— 将堆栈回滚到以前的已知良好状态(如果存在)。否则将删除堆栈。

  • DO_NOTHING— 既不回滚也不会删除堆栈。效果与的效果相同--disable-rollback.

默认行为是 ROLLBACK

注意:您可指定以下任一值--disable-rollback选项或--on-failure选项,但不能同时兼而有之。

--config-file PATH 包含要使用的默认参数值的配置文件的路径和文件名。默认值为samconfig.toml在项目目录的根目录中。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--config-env TEXT 在配置文件中指定要使用的默认参数值的环境名称。默认值为 default。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--no-progressbar 将构件上传到 Amazon S3 时不要显示进度条。
--debug 打开调试日志记录以打印调试消息Amazon SAMCLI 生成和显示时间戳。
--help 显示此消息并退出。

环境变量:

环境变量 描述
SAM_CLI_POLL_DELAY

指定延迟,以秒为单位DescribeStackAPI 调用。

示例

参数

以下是声明的示例对象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):

SAM_CLI_POLL_DELAY

以下是示例sam deploy使用SAM_CLI_POLL_DELAY用于设置 5 秒延迟的变量DescribeStackAPI 调用。

SAM_CLI_POLL_DELAY=5 sam deploy