使用 AWS CDK 将入口规则添加到安全组

新手上路,请多包涵

我正在尝试使用 Python 通过 AWS CDK 将入口规则添加到安全组。根据 此处 的文档 - 类 aws_cdk.aws_ec2 上有一个方法 add_ingress_rule()。

但是 - 当我尝试部署堆栈时,出现以下错误:

AttributeError:“方法”对象没有属性“ jsii__type ”子进程退出,出现错误 1

下面的安全组代码片段-

         sg_elb = ec2.SecurityGroup(
            self,
            id = "sg_elb",
            vpc = vpc,
            security_group_name = "sg_elb"
        )

        sg_elb.add_ingress_rule(
            peer = ec2.Peer.any_ipv4,
            connection = ec2.Port.tcp(443)   # This line seems to be a problem.
        )

这里 的官方文档甚至给出了相同的示例(在 TypeScript 中),所以我不确定我做错了什么。

谁能建议?

提前致谢 !

原文由 SwapnilJak 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 569
2 个回答

我得到了以下使用 TS 的工作,希望它能帮助一些。

 const mySG = new ec2.SecurityGroup(this, `${stack}-security-group`, {
    vpc: vpc,
    allowAllOutbound: true,
    description: 'CDK Security Group'
});

mySG.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(22), 'SSH frm anywhere');
mySG.addIngressRule(ec2.Peer.ipv4('10.200.0.0/24'), ec2.Port.tcp(5439), 'Redshift Ingress1');
mySG.addIngressRule(ec2.Peer.ipv4('10.0.0.0/24'), ec2.Port.tcp(5439), 'Redshift Ingress2');

顺便说一句,不建议使用明确的安全组名称: https ://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ec2.SecurityGroup.html

原文由 Ultradoxx 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 SDK 文档中:“可以通过 addIngressRule 和 addEgressRule 直接操作安全组,但建议通过 .connections 对象进行突变。如果您以这种方式将两个构造与安全组对等,则将在两者中创建适当的规则。”

所以最好添加这样的规则:

 sg.connections.allow_from(
  Peer.any_ipv4(),
  Port.tcp(22),
  "ssh"
)

原文由 Shams Larbi 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题