问题描述
基于以下代码尝试实现 YAML 模板,并想检查导出的堆栈是否存在。请指教。
Outputs:
Publicsubnet:
Description: The subnet ID to use for public web servers
Value:
Ref: Publicsubnet
Export:
Name:
'Fn::Sub': '${AWS::StackName}-subnetID'
WebServerSecurityGroup:
Description: The security group ID to use for public web servers
Value:
'Fn::GetAtt':
- WebServerSecurityGroup
- GroupId
Export:
Name:
'Fn::Sub': '${AWS::StackName}-SecurityGroupID'
Resources:
WebServerInstance:
Type: 'AWS::EC2::Instance'
Properties:
InstanceType: t2.micro
ImageId: ami-a1b23456
NetworkInterfaces:
- GroupSet:
- !ImportValue
'Fn::Sub': '${NetworkStackNameParameter}-SecurityGroupID'
AssociatePublicIpAddress: 'true'
DeviceIndex: '0'
DeleteOnTermination: 'true'
subnetId: !ImportValue
'Fn::Sub': '${NetworkStackNameParameter}-subnetID'
解决方法
使用普通的 CloudFormation (CFN) 无法做到这一点。导出的值桅杆已经存在,您无法使用 CFN 检查它是否存在。
唯一的方法是以 lambda 函数的形式创建 custom resource。该函数将使用 AWS 开发工具包来检查给定的导出是否存在,并将检查结果返回到您的模板以供进一步处理。