如何在python的aws cdk中创建安全组?

如何在python的aws cdk中创建安全组?,python,amazon-cloudformation,aws-security-group,aws-cdk,Python,Amazon Cloudformation,Aws Security Group,Aws Cdk,嗨,我正在尝试使用aws cdk编写seurity组。我知道如何使用云形成来编写它。 下面是我的云形成模板 MerchWebServicesSecurityGroup: Type: "AWS::EC2::SecurityGroup" Properties: Tags: - Key: "Name" Value: !Ref "AWS::StackName" GroupDescription: "EC2 Services Se

嗨,我正在尝试使用aws cdk编写seurity组。我知道如何使用云形成来编写它。 下面是我的云形成模板

MerchWebServicesSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      Tags:
        - Key: "Name"
          Value: !Ref "AWS::StackName"
      GroupDescription: "EC2 Services Security Group"
      VpcId:
        Fn::ImportValue: "infra-vpc-base::VpcId"
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: "80"
          ToPort: "80"
          SourceSecurityGroupId: !Ref MerchWebServicesLoadBalancerSecurityGroup
        - IpProtocol: tcp
          FromPort: "443"
          ToPort: "443"
          SourceSecurityGroupId: !Ref MerchWebServicesLoadBalancerSecurityGroup
        - IpProtocol: tcp
          FromPort: 31000
          ToPort: 65535
          SourceSecurityGroupId: !Ref MerchWebServicesLoadBalancerSecurityGroup
我试图用python cdk编写如下安全组

  mws_vpc_sg  = ec2.SecurityGroup(stack, "MerchWebServicesSecurityGroup",
        description= "Allow ssh access to ec2 instances",
        security_group_name= "MerchWebServicesSecurityGroup",
        vpc= vpc
    );

 mws_vpc_sg.add_ingress_rule(?, Port.tcp(80));

上面我想添加sourceSecurityGroupId和端口。有人能帮我写这个吗?任何帮助都将不胜感激。谢谢

如果您也在CDK中创建了另一个安全组,您可以将该安全组作为对等方传递

mws_vpc_sg.add_ingress_rule(load_balancer_sg, Port.tcp(80));
如果您在其他地方创建了安全组,则需要使用静态方法从中获取ISecurityGroup:

var load_balancer_sg = ec2.SecurityGroup.fromSecurityGroupId(this, 'loadbalancer_sg', THE_ID_OF_THE_SG)

谢谢你的回答。我无法从aws_cdk将aws_ec2作为ec2导入。我可以访问s3、sqs和所有服务器,但不能访问ecs和ec2。我可以知道原因吗?我收到错误ImportError:无法从“aws_cdk”未知位置导入名称“aws_ecs”。您是否使用pip I aws cdk.aws-ec2安装了aws_ec2依赖项?。如果您不能使用ec2,您可能应该编辑您的问题。您也在示例中使用它。