我正在尝试创建一个资源,其中一个属性不是常量值。听起来像堆栈参数的作业,除了它是一个字符串,在某些情况下可以采用Ref函数的形式。具体来说,如果它是初始创建,我希望参数值是另一个资源的Ref,如果是后续更新,我希望它是一个堆栈参数的参考。这可能吗?是否存在函数或伪参数,例如AWS::CurrentAction
可以采用create
和update
之类的值,或类似的任何值?
答案 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
设置为空,堆栈将自动适应。