【发布时间】:2021-10-16 12:52:39
【问题描述】:
在 AWS-CDK 中,我正在尝试创建流量镜像会话。 EC2 机器是在以前的堆栈中创建的,并作为道具传递给新堆栈。但是,虽然我能够引用显式创建的 ENI(嗅探接口),但我找不到将 EC2 主网络接口引用为流量镜像源的方法
class TrafficMirringStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope,id,props)
const {
suricataInstance,
sniffingInterface,
targetInstance
} = props;
const mirrorTarget = new ec2.CfnTrafficMirrorTarget(this, 'TrafficMirrorTarget', {
description:' This is the traffic mirror target',
networkInterfaceId: sniffingInterface.ref,
});
const mirrorFilter = new ec2.CfnTrafficMirrorFilter(this, 'TrafficMirrorFilter', {
description: 'This filter allows all traffic from the target machine to be redirected to the sniffing interface',
networkServices:[],
});
const allowAllInboundRule = new ec2.CfnTrafficMirrorFilterRule(this, 'InboundMirrorFilter', {
destinationCidrBlock : '0.0.0.0/0',
sourceCidrBlock:'0.0.0.0/0',
trafficDirection: 'ingress',
ruleAction: 'accept',
ruleNumber:100,
trafficMirrorFilterId: mirrorFilter.ref
});
const allowAllOutboundRule = new ec2.CfnTrafficMirrorFilterRule(this, 'OutboundMirrorFilter', {
destinationCidrBlock : '0.0.0.0/0',
sourceCidrBlock:'0.0.0.0/0',
trafficDirection: 'egress',
ruleAction: 'accept',
ruleNumber:200,
trafficMirrorFilterId: mirrorFilter.ref
});
const mirrorSession = new ec2.CfnTrafficMirrorSession(this, 'TrafficMirrorSession', {
sessionNumber: 1,
networkInterfaceId: targetInstance.instance.networkInterfaceId,
trafficMirrorFilterId: mirrorFilter.ref,
trafficMirrorTargetId: mirrorTarget.ref
})
}
}
我收到以下错误
Error: TrafficMirroringStack/TrafficMirrorSession [AWS::EC2::TrafficMirrorSession] is missing required property: networkInterfaceId
【问题讨论】:
-
您是否尝试过使用 SDK 检索信息?许多 CDK 构造实际上并没有附加所有信息,因为其中许多信息仅在部署时才知道。 CDK 始终假定它是第一次部署,并且会要求您为许多事情找到自己的答案 - 对于许多此类情况,使用 SDK 是公认的解决方案。此外,请注意将构造作为道具传递给其他堆栈。除非它们都是包含在同一个公共堆栈中的所有 NestedStack,否则一个更改可能会锁定部署,因为它们相互依赖。
标签: amazon-web-services aws-cdk elastic-network-interface