如何使用 AWS SAM 部署到不同环境

Pet*_*sta 24 aws-lambda aws-api-gateway aws-serverless aws-sam

我有两个关于 AWS SAM 和部署的问题。

\n

我\xe2\x80\x99m 阅读文档并检查这样的示例,并且我\xe2\x80\x99m 仍然不太确定如何使用我的 SAM 模板单独部署到stagingproduction环境。是否像部署一个具有新名称(例如sam deploy \xe2\x80\x94stack-name my-app-staging和 )的新堆栈一样简单sam deploy \xe2\x80\x94stack-name my-app-production

\n

在下面的例子中,我有一个问题。如果我的 SAM 模板包含具有三个可能值的Parameters名称MyEnvironment,则部署如何知道在部署堆栈时使用这三个值中的哪个值?就像我会怎么说使用值stagingor production?这是我部署时会自动询问的问题还是我必须在 CLI 上提供的问题?

\n

在此输入图像描述

\n

sti*_*tel 44

您可以使用samconfig.toml文件来确定如何将堆栈部署到不同的环境。

例如:

version = 0.1

[qa.deploy.parameters]
stack_name = "my-qa-stack"
s3_bucket = "XXXXX-qa"
s3_prefix = "XXXXX/qa"
region = "eu-west-1"
capabilities = "CAPABILITY_IAM"
parameter_overrides = "Environment=qa"

[prod.deploy.parameters]
stack_name = "my-prod-stack"
s3_bucket = "XXXXX-prod"
s3_prefix = "XXXXX/prod"
region = "eu-west-1"
capabilities = "CAPABILITY_IAM"
parameter_overrides = "Environment=prod"
Run Code Online (Sandbox Code Playgroud)

然后,您可以将所需的配置环境传递给命令:

version = 0.1

[qa.deploy.parameters]
stack_name = "my-qa-stack"
s3_bucket = "XXXXX-qa"
s3_prefix = "XXXXX/qa"
region = "eu-west-1"
capabilities = "CAPABILITY_IAM"
parameter_overrides = "Environment=qa"

[prod.deploy.parameters]
stack_name = "my-prod-stack"
s3_bucket = "XXXXX-prod"
s3_prefix = "XXXXX/prod"
region = "eu-west-1"
capabilities = "CAPABILITY_IAM"
parameter_overrides = "Environment=prod"
Run Code Online (Sandbox Code Playgroud)

  • “parameter_overrides”属性设置堆栈部署的参数值。在上面的示例中,有一个“Environment”参数。因此,如果您在 yaml 堆栈中定义该参数,则可以使用 `!Sub ${Environment}-function-name`。 (10认同)
  • 有没有办法在 template.yaml 文件中使用此变量?我想在函数名称中使用它;像这样=> `资源:TestFunction:类型:AWS::Serverless::Function 属性:FunctionName: <qa|prod>-function-name` (3认同)