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

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

sam deploy

部署 AWS SAM 应用程序。

此命令附带指导式交互式模式,您可以通过指定 --guided 参数来启用该模式。交互式模式将指导您了解部署所需的参数,提供默认选项,并可选择将这些选项保存在项目目录中的配置文件中。在使用 sam deploy 执行应用程序的后续部署时,AWS SAM CLI 从配置文件中检索所需的参数。

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

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

有关指定 --guided 参数时可选存储的设置的更多信息,请参阅AWS SAM CLI 配置文件

通过 AWS Lambda 部署 AWS CloudFormation 函数需要 Amazon Simple Storage Service 部署程序包的 Amazon S3 (Lambda) 存储桶。CLI 会为您创建和管理此 AWS SAM 存储桶。Amazon S3

用量:

sam deploy [OPTIONS] [ARGS]...

选项:

选项 描述
-g, --guided

指定此标志可让 AWS SAM 使用提示来指导您完成部署。

-t, --template-file, --template PATH 模板所在的路径和文件名。AWS SAM默认值:template.[yaml|yml]
--stack-name TEXT (必需)您要部署到的 AWS CloudFormation 堆栈的名称。如果您指定现有堆栈,此命令将更新堆栈。如果您指定了新堆栈,该命令将创建它。
--s3-bucket TEXT 此命令在其中上传您的 Amazon S3 模板的 AWS CloudFormation 存储桶的 URI。在部署大于 51200 字节的模板时,需要执行此操作。
--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 您必须指定的功能的列表,以允许 AWS CloudFormation 创建特定堆栈。某些堆栈模板可能包含可能影响您的 AWS 账户中的权限的资源,例如,通过创建新的 AWS Identity and Access Management (IAM) 用户。对于这些堆栈,您必须通过指定此参数来明确确认它们的功能。唯一有效的值为 CAPABILITY_IAMCAPABILITY_NAMED_IAM。 如果您有 IAM 资源,则可以指定任一功能。如果您有带自定义名称的 IAM 资源,则必须指定 CAPABILITY_NAMED_IAM。 如果未指定该参数,则此操作会返回 InsufficientCapabilities 错误。
--region TEXT 要部署到的 AWS 区域。例如,us-east-1。
--profile TEXT 获取 AWS 凭证的凭证文件中的特定配置文件。
--kms-key-id TEXT 用于加密 AWS Key Management Service 存储桶中静态构件的 AWS KMS (Amazon S3) 密钥的 ID。
--force-upload 指定此标记可上传构件,即使它们与 Amazon S3 存储桶中的现有构件匹配。匹配的构件会被覆盖。
--no-execute-changeset 指示是否执行更改集。如果要在执行更改集之前查看堆栈更改,请指定此标记。此命令创建一个 AWS CloudFormation 更改集,然后退出,而无需执行更改集。要执行更改集,请运行相同的命令,但不带此标记。
--role-arn TEXT 执行更改集时 IAM 代入的 AWS CloudFormation 角色的 Amazon 资源名称 (ARN)。
--fail-on-empty-changeset | --no-fail-on-empty-changeset 指定在没有要对堆栈进行更改时是否返回非零退出代码。默认行为是返回非零退出代码。
--confirm-changeset | --no-confirm-changeset 提示确认 AWS SAM CLI 是否部署计算的更改集。
--use-json 模板的输出 JSON。AWS CloudFormation默认输出为 YAML。
--metadata (可选) 要附加到模板中引用的所有构件的元数据的映射。
--notification-arns LIST 与堆栈关联的 Amazon Simple Notification Service (Amazon SNS) 主题 ARNs 的列表。AWS CloudFormation
--tags LIST 要与创建或更新的堆栈关联的标签列表。AWS CloudFormation 还会将这些标签传播到堆栈中的资源(如果资源支持它)。
--parameter-overrides 包含编码为键值对的 AWS CloudFormation 参数的字符串覆盖。使用与 AWS Command Line Interface (AWS CLI) 相同的格式。例如:ParameterKey=ParameterValue InstanceType=t1.micro
--config-file PATH 包含要使用的默认参数值的配置文件的路径和文件名。默认值为项目根目录中的“samconfig.toml”。有关配置文件的详细信息,请参阅 AWS SAM CLI 配置文件
--config-env TEXT 在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息,请参阅 AWS SAM CLI 配置文件
--no-progressbar 在将构件上传到 Amazon S3 时,请勿显示进度条。
--debug 打开调试日志记录以输出由 AWS SAM CLI 生成的调试消息和显示时间戳。
--help 显示此消息并退出。

Examples

Parameters

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

AWS SAM 模板:

Parameters: MyPar: Type: String Default: MyParVal

相应的 sam deploy --guided 提示:

Parameter MyPar [MyParVal]:

代码签名

下面是配置了代码签名的示例 函数。

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