Amazon web services 添加从自定义资源获取属性的条件

Amazon web services 添加从自定义资源获取属性的条件,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我有一个创建EBS卷的CFT。然后我有第二个CFT将卷连接到实例。我使用一个运行lambda的自定义资源来查找EbsVolumeId和InstanceId 2个CFT是jenkins管道的一部分,可能会跳过使用CFT创建EBS卷的剧本,因此没有EbsVolumeId可供参考 因此,在连接EBS卷的CFT中,我尝试添加一个条件 Resources: MountPoint: Type: AWS::EC2::VolumeAttachment Condition: AttachEBS

我有一个创建EBS卷的CFT。然后我有第二个CFT将卷连接到实例。我使用一个运行lambda的自定义资源来查找EbsVolumeId和InstanceId

2个CFT是jenkins管道的一部分,可能会跳过使用CFT创建EBS卷的剧本,因此没有EbsVolumeId可供参考

因此,在连接EBS卷的CFT中,我尝试添加一个条件

Resources:
  MountPoint:
    Type: AWS::EC2::VolumeAttachment
    Condition: AttachEBS
    Properties:
      InstanceId: !GetAtt SCSHelper.InstanceId
      VolumeId: !GetAtt SCSHelper.EbsVolumeId
自定义资源看起来像

SCSHelper:
  Type: Custom::SCSHelper
因此,我必须在资源之前定义条件:

Conditions:
  AttachEBS: !Not [!Equals http:// !GetAtt SCSHelper.EbsVolumeId , None ]
问题在于,这些条件在以下方面失败:

调用CreateStack操作时出错(ValidationError):模板格式错误:未解析的依赖项。无法引用模板的条件块中的资源调用CreateStack操作时出错(ValidationError):模板格式错误:未解析的依赖项

因此,
SCSHelper.EbsVolumeId
属性似乎不适用于要使用的条件

有没有一种方法可以实现这一点,或者有没有更好的方法可以有条件地运行连接EBS卷的CFT


提前感谢…

本文档的重要部分如下

参数

定义要在条件中计算的输入值。根据这些输入参数的值,条件将导致true或false


云信息中的条件可以仅基于参数。他们不能考虑飞行中的资源值,因为这些值在编译时是未知的。

感谢Jamie的回复。是的,那是我的德莱玛。我的管理人员希望我创建两个独立的CFT。一个用于创建EBS卷,另一个用于连接。您能想出一种方法从创建堆栈获取InstanceId和VolumeId并将其传递到附加堆栈吗?