【问题标题】:How to deploy to different environments with AWS SAM如何使用 AWS SAM 部署到不同的环境
【发布时间】:2021-10-19 21:05:59
【问题描述】:

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

我正在阅读文档并检查 this 等示例,但我仍然不太确定如何使用我的 SAM 模板分别部署到 stagingproduction 环境。是不是像部署一个像sam deploy —stack-name my-app-stagingsam deploy —stack-name my-app-production 这样的新名称的新堆栈那么简单?

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

【问题讨论】:

  • 对于我的第二个问题,调用—guided 会提示用户为Parameters 部分中声明的每个参数提供值。请参阅Parameters 下的here

标签: aws-lambda aws-api-gateway aws-serverless aws-sam


【解决方案1】:

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

例如:

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"

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

sam deploy --config-env <qa|prod>

【讨论】:

  • 有没有办法在 template.yaml 文件中使用这个变量?我想在函数名中使用它;像这样 => Resources: TestFunction: Type: AWS::Serverless::Function Properties: FunctionName: &lt;qa|prod&gt;-function-name
  • parameter_overrides 属性设置堆栈部署的参数值。在上面的示例中,有一个 Environment 参数。因此,如果您在 yaml 堆栈中定义该参数,则可以使用 !Sub ${Environment}-function-name
猜你喜欢
  • 2021-05-03
  • 2018-10-11
  • 1970-01-01
  • 2015-07-05
  • 2011-11-29
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多