typescript - AWS CDK - 安全组创建打字稿
问题描述
我正在尝试使用打字稿将以下 CloudFormation 资源迁移到 CDK:
ALBSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId: !Ref VPCId
GroupDescription: !Sub "${Application}-${Environment}-alb-sg"
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 443
ToPort: 443
CidrIp: !Ref SecurityGroupIngressCidr
我已经尝试过了(我不知道如何创建必要的属性):
const albSecurityGroup = new SecurityGroup(this, "ALBSecurityGroup", {
vpc: Vpc.fromLookup(this, id, {
vpcId: props.vpcId.stringValue
}),
description: appEnv + "-alb-sg"
})
并使用这样的 Cfn 构造函数(我不知道如何将 CfnSecurityGroup 与 CfnSecurityGroupIngress 加入):
const x = new CfnSecurityGroupIngress(this, id, {
ipProtocol: "tcp",
fromPort: 443,
toPort: 443,
cidrIp: props.securityGroupIngressCidr
});
const albSecurityGroupCfn = new CfnSecurityGroup(this, id, {
vpcId: props.vpcId.stringValue,
groupDescription: appEnv + "-alb-sg"
});
我感谢您的帮助。
解决方案
通过使用,您的答案看起来更清晰CfnSecurityGroup
,但只是为了完整性并显示使用更高阶构造可以实现相同的方法SecurityGroup
如下:
import { SecurityGroup, Peer, Port, Vpc } from '@aws-cdk/aws-ec2';
....
const vpc = Vpc.fromLookup(this, id, {
vpcId: props.vpcId.stringValue
});
const albSecurityGroup = new SecurityGroup(this, 'MyALBSG', {
vpc,
description: appEnv + "-alb-sg",
allowAllOutbound: true
});
albSecurityGroup.addIngressRule(
Peer.ipv4(props.securityGroupIngressCidr),
Port.tcp(443),
"Allow HTTPS traffic from CIDR IPs"
);
....
我强烈建议您阅读您计划在 CDK 中使用的任何服务模块的概述部分。这是aws-ec2
显示如何SecurityGroup
编写的一个。
您不妨loadBalancer.connections.allowFrom()
直接使用,而不是为您的 ALB 显式创建安全组。假设您的 ALB 构造被命名为loadBalancer
,这看起来像:
loadBalancer.connections.allowFrom(
Peer.ipv4(props.securityGroupIngressCidr),
Port.tcp(443),
'Allow inbound HTTPS from CIDR IPs'
);
推荐阅读
- python - 从熊猫数据框中提取价值
- swagger - IdentityServer3:未知客户端或未启用
- angular - 拖放时如何防止nz-zorro中的nz-tree自动扩展
- javascript - 再次隐藏导航切换的问题(纯 css)
- python - Flask 布局模板表单如何获取发布/获取请求。路线布局?
- android - fontFamily "Roboto_medium" 不是系统字体,没有通过 Font.loadAsync 加载,如何解决?
- java - 如何仅为整数创建自定义异常
- node.js - 尝试读取 fullchain.pem 时出现 EPERM 错误
- scala - Spark 解析具有多种类型的 XML
- javascript - 如何删除图像并重新使用它