代码之家  ›  专栏  ›  技术社区  ›  snetch

Cloudformation堆栈能否知道它是在创建还是在更新?

  •  0
  • snetch  · 技术社区  · 8 年前

    我试图创建一个资源,其属性之一不是常量值。听起来像是堆栈参数的作业,只是它是一个字符串,在某些情况下可以采用Ref函数的形式。具体来说,如果是初始创建,我希望参数值是对另一个资源的引用,如果是后续更新,我希望它是对堆栈参数的引用。这可能吗?是否有函数或伪参数,如 AWS::CurrentAction 可以取如下值 create 和 update ,或诸如此类的东西?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Laurent Jalbert Simard    8 年前

    我认为这是应该避免的,但如果你找不到其他选择,我有一个解决办法。

    下面是一个具有bucket名称的示例:

    Parameters:
      ExternalBucketName:
        Type: String
        Default: ''
    
    Conditions:
      ExternalBucketNameSpecified:
        !Not [!Equals [!Ref ExternalBucketName, '']]
    
    
    Resources:
      CFManagedBucket:
        Type: AWS::S3::Bucket
    
      SomeResource:
        Type: AWS::Resource::XYZ
        Properties:
            BucketName: !If [ExternalBucketNameSpecified, !Ref ExternalBucketNameSpecified, !Ref CFManagedBucket]
    

    当需要使用此堆栈创建的bucket时,只需设置 ExternalBucketName 清空,堆栈将自动适应。