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

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

sam deploy

部署Amazon SAM应用程序.

默认情况下,当您使用此命令时,Amazon SAMCLI 假定您当前的工作目录是项目的根目录。这些区域有:Amazon SAMCLI 首先尝试查找使用sam build命令,位于.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 SAMCLI 配置文件.

部署Amazon Lambda函数通过Amazon CloudFormation需要 Amazon Simple Storage Service (Amazon S3) 存储桶用于 Lambda 部署包。这些区域有:Amazon SAMCLI 会为您创建和管理此 Amazon S3 存储桶。

用量:

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 存储桶的 URI,此命令将您的Amazon CloudFormation模板。这是部署大于 51,200 字节的模板所必需的。
--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 存储桶中的静态构件。
--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。
--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
--config-file PATH 包含待使用默认参数值的配置文件对应的路径和文件名。默认值是 。samconfig.toml在项目录的根目录中。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件
--config-env TEXT 指定要使用的配置文件中默认参数值的环境名称。默认值为 default。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件
--no-progressbar 将对象上传到 Amazon S3 时,请勿显示进度条。
--debug 打开调试日志记录以打印调试消息Amazon SAMCLI 生成和显示时间戳。
--help 显示此消息并退出。

Examples

Parameters

下面是一个示例对象在Parameters部分,以及在使用sam deploy --guided.

Amazon SAM Template:

Parameters: MyPar: Type: String Default: MyParVal

相应sam deploy --guided提示:

Parameter MyPar [MyParVal]:

代码签名

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

Amazon SAM Template:

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):