【问题标题】:How can you reference the primary network interface of an EC2 instance in AWS CDK?如何在 AWS CDK 中引用 EC2 实例的主网络接口?
【发布时间】: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


【解决方案1】:

尝试使用:

instance.networkInterfaces

然后找到你想要的界面。

查看文档: networkInterfaces - aws cdk doc

【讨论】:

    猜你喜欢
    • 2019-01-20
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    相关资源
    最近更新 更多