问题描述
我使用 typescript 在 AWS CDK 中创建了一个 EC2 实例和一个 Classic Load Balancer。但我无法将该 EC2 实例直接添加到该负载均衡器。
this.Instance= new ec2.Instance(this,'my-Instance',{
vpc,instanceType: new InstanceType(instanceType),...});
和负载均衡器
this.Elb = new LoadBalancer(this,'my-ELB',{
..
crossZone: true,internetFacing: false,...});
this.Elb.addEc2Instance(this.Instance)
但是没有任何可用的属性。
解决方法
您不能使用 LoadBalancer
执行此操作。您必须先将您的实例放入自动缩放组。然后您将 ASG 附加到您的 LB,如 example 所示:
const lb = new elb.LoadBalancer(this,'LB',{
vpc,internetFacing: true,healthCheck: {
port: 80
},});
lb.addTarget(myAutoScalingGroup);
lb.addListener({
externalPort: 80,});
,
这终于对我有用了。把它放在这里,这样没有人会像我一样浪费时间来解决这个问题。
elbObj.instances
需要实例 ID 的字符串数组。 (read here)
const elbObj = this.elb.node.defaultChild as CfnLoadBalancer;
if (elbObj) {
elbObj.instances = [(this.jenkinsInstance.instanceId).toString()];
}