基于参数的CloudFormation条件函数值

问题描述 投票:0回答:1

我有一个 parameter 其中我定义了环境。

Parameters:
  Environment:
    Description: Environment. Example: qa, prod
    Type: String

我正在创建一个RDS群集,并且,在环境方面,我想给 BackupRetentionPeriod

其逻辑是:如果是'prod',值应该是int 35,如果不是int 7。

BackupRetentionPeriod: !Ref Environment = prod, 35, 7

我阅读了文档,检查了几个例子,但仍然无法使它工作,引用一个参数,并在内部设置一个或其他值。

amazon-web-services amazon-cloudformation
1个回答
2
投票

你可以使用以下组合 如果等于 的CloudFormation中。

Parameters:

  Environment:
    Description: Environment. Example: qa, prod
    Type: String

Conditions:

  IsProd: 
    !Equals [!Ref Environment, 'prod']  

Resources:

    ....
    ....
    BackupRetentionPeriod: !If [IsProd, 35, 7]

你也可以不用单独的 Conditions 部分,但我认为CFN模板有了它更容易阅读,所以我加入了它。


0
投票

如果你出于某种原因不喜欢条件,你可以用以下方法来实现这一点 映射...类似的东西。

Parameters:
  EnvType:
    Description: >-
      Type of the environment (eu, tu, au, pu). 

      Please use the same environment for all components/stacks of your
      environment.
    Type: String
    Default: eu
    AllowedValues:
      - eu
      - tu
      - au
      - pu
Mappings:
  BackupRetentionPeriod:
    default:
      pu: 35
      eu: 7
      tu: 7
      au: 7

然后..:

BackupRetentionPeriod: !FindInMap 
  - BackupRetentionPeriod
  - default
  - !Ref EnvType
© www.soinside.com 2019 - 2024. All rights reserved.