AWS CDK测试失败:模板无AWS::EC2::VPC资源,已定义仍报错
问题原因与解决方案
核心原因
你用ec2.Vpc.fromVpcAttributes导入的是已存在的外部VPC,而非在当前CDK栈中创建新的VPC资源。CDK生成的CloudFormation模板只会包含栈内主动创建的资源,引用外部资源不会在模板中生成AWS::EC2::VPC类型的资源条目,所以测试时template.hasResourceProperties找不到匹配项。
正确的测试思路
既然VPC不是当前栈创建的,就不需要测试模板中是否存在该资源,转而验证依赖此VPC的资源是否正确关联了该VPC的属性,比如检查Lambda、ECS服务等资源的VPC配置是否包含正确的子网ID、安全组ID等。
举个Lambda关联VPC的测试示例:
test('Lambda关联了指定的VPC子网', () => { const template = Template.fromStack(new YourStack()); template.hasResourceProperties('AWS::Lambda::Function', { VpcConfig: { SubnetIds: ['subnet-123456', 'subnet-7890ab'], SecurityGroupIds: ['sg-cdefgh'] } }); });
内容的提问来源于stack exchange,提问作者CB_at_Sw
相关产品推荐
相关产品推荐

