Cloudformation堆栈可以知道它是在创建还是更新?

时间:2018-02-19 22:17:55

标签: amazon-cloudformation

我正在尝试创建一个资源,其中一个属性不是常量值。听起来像堆栈参数的作业,除了它是一个字符串,在某些情况下可以采用Ref函数的形式。具体来说,如果它是初始创建,我希望参数值是另一个资源的Ref,如果是后续更新,我希望它是一个堆栈参数的参考。这可能吗?是否存在函数或伪参数,例如AWS::CurrentAction可以采用createupdate之类的值,或类似的任何值?

1 个答案:

答案 0 :(得分:0)

我认为这是值得避免的事情,但如果你找不到任何其他选择,我会有一个解决方法。

这是一个带有桶名称的例子:

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]

当使用此堆栈创建的存储桶时,只需将ExternalBucketName设置为空,堆栈将自动适应。