You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK中如何引用EC2实例主网络接口解决流量镜像配置报错

问题原因

报错是因为你传入的networkInterfaceId字段为空,CDK的EC2实例对象不会默认填充networkInterfaceId属性,主网卡ID需要通过专用的实例属性或CloudFormation内置函数获取。

解决方法

根据你传入的targetInstance类型选择对应方案:

情况1:targetInstance.instance是标准ec2.Instance类型实例

直接调用attrPrimaryNetworkInterfaceId属性获取主网卡ID,修改mirrorSession代码即可:

const mirrorSession = new ec2.CfnTrafficMirrorSession(this, 'TrafficMirrorSession', {
  sessionNumber: 1,
  // 替换原有networkInterfaceId取值逻辑
  networkInterfaceId: targetInstance.instance.attrPrimaryNetworkInterfaceId,
  trafficMirrorFilterId: mirrorFilter.ref,
  trafficMirrorTargetId: mirrorTarget.ref
})

情况2:仅传入了EC2实例的ID字符串

如果跨堆栈传递的是实例ID而非完整实例对象,用CDK内置函数获取主网卡ID:

// 传入的是实例ID时,用Fn.getAtt获取主网卡ID
const targetEniId = cdk.Fn.getAtt(你的实例ID变量, 'PrimaryNetworkInterfaceId').toString()

const mirrorSession = new ec2.CfnTrafficMirrorSession(this, 'TrafficMirrorSession', {
  sessionNumber: 1,
  networkInterfaceId: targetEniId,
  trafficMirrorFilterId: mirrorFilter.ref,
  trafficMirrorTargetId: mirrorTarget.ref
})

校验方法

如果需要确认取值是否正确,可以增加输出生成验证:

new cdk.CfnOutput(this, 'TargetInstancePrimaryEniId', {
  value: targetInstance.instance.attrPrimaryNetworkInterfaceId
})

部署后在CloudFormation堆栈的输出页即可查看生成的主网卡ID,确认是否符合预期。

内容的提问来源于stack exchange,提问作者Ilias Koritsas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:27:02