【问题标题】:Cloudformation Stack Template ConditionsCloudformation 堆栈模板条件
【发布时间】:2018-06-05 08:50:05
【问题描述】:

如何创建带有条件子句的 Cloudformation 模板以创建 10 个实例作为参数。

我已将以下示例用于最多 5 个实例。但是我怎样才能使用它超过 5 个呢?这取决于我们如何创建条件子句。

Conditions:
  Launch1: !Equals [1, 1]
  Launch2: !Not [!Equals [1, !Ref InstanceCount]]
  Launch3: !Or
  - !Not [!Equals [1, !Ref InstanceCount]]
  - !Not [!Equals [2, !Ref InstanceCount]]
  Launch4: !Or
  - !Equals [4, !Ref InstanceCount]
  - !Equals [5, !Ref InstanceCount]
  Launch5: !Equals [5, !Ref InstanceCount]

你能帮我把这个例子扩大到 10 个实例吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 yaml amazon-cloudformation


    【解决方案1】:

    高度建议您依赖 AutoScaling 组 (AWS::AutoScaling::AutoScalingGroup)。这样您就可以使用DesiredCapacity 属性引用实例计数。这样做你也会有很多其他好处。

    编辑:但如果你仍然想使用条件来做,这就是你需要做的:

    AWSTemplateFormatVersion: "2010-09-09"
    Parameters:
      InstanceCount:
        Type: Number
    
    Conditions:
      Launch10: !Equals [10, !Ref InstanceCount]
      Launch9: !Or
      - !Equals [9, !Ref InstanceCount]
      - !Condition Launch10
      Launch8: !Or
      - !Equals [8, !Ref InstanceCount]
      - !Condition Launch9
      Launch7: !Or
      - !Equals [7, !Ref InstanceCount]
      - !Condition Launch8
      Launch6: !Or
      - !Equals [6, !Ref InstanceCount]
      - !Condition Launch7
      Launch5: !Or
      - !Equals [5, !Ref InstanceCount]
      - !Condition Launch6
      Launch4: !Or
      - !Equals [4, !Ref InstanceCount]
      - !Condition Launch5
      Launch3: !Or
      - !Equals [3, !Ref InstanceCount]
      - !Condition Launch4
      Launch2: !Or
      - !Equals [2, !Ref InstanceCount]
      - !Condition Launch3
      Launch1: !Or
      - !Equals [1, !Ref InstanceCount]
      - !Condition Launch2
    
    Resources:
      Bucket1:
        Condition: Launch1
        Type: AWS::S3::Bucket
    
      Bucket2:
        Condition: Launch2
        Type: AWS::S3::Bucket
    
      Bucket3:
        Condition: Launch3
        Type: AWS::S3::Bucket
    
      Bucket4:
        Condition: Launch4
        Type: AWS::S3::Bucket
    
      Bucket5:
        Condition: Launch5
        Type: AWS::S3::Bucket
    
      Bucket6:
        Condition: Launch6
        Type: AWS::S3::Bucket
    
      Bucket7:
        Condition: Launch7
        Type: AWS::S3::Bucket
    
      Bucket8:
        Condition: Launch8
        Type: AWS::S3::Bucket
    
      Bucket9:
        Condition: Launch9
        Type: AWS::S3::Bucket
    
      Bucket10:
        Condition: Launch10
        Type: AWS::S3::Bucket
    

    我用过bucket,所以测试起来会更快

    【讨论】:

    • 是的,同意这是一个选项,但我如何在当前条件下(如上)做到这一点?赞赏。
    • @user2501165 我已经编辑了原始答案以包含使用条件的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2021-12-29
    • 2023-02-15
    • 1970-01-01
    • 2014-02-24
    • 2022-01-16
    相关资源
    最近更新 更多