我创建了一个带有AutoScaling Group的ECS群集,如下所示:
const cluster = new ecs.Cluster (
this,
"ECSCluster",
{
clusterName: "myCluster",
vpc: my-vpc
}
);
const autoScalingGroup = new autoscaling.AutoScalingGroup (
this,
"autoScalingGroup",
{
autoScalingGroupName: "myAutoScalingGroup",
vpc: my-vpc,
instanceType: new ec2.InstanceType("t3.2xlarge"),
...
}
);
const capacityProvider = new ecs.AsgCapacityProvider (
this,
"capacityProvider",
{ autoScalingGroup }
);
cluster.addAsgCapacityProvider(capacityProvider);
因此,这段代码还创建了一个EC2示例,现在我想获取此示例的私有IP,以便将其作为记录添加到Route53中。
按照上面的代码,我尝试了这样的SDK:
const EC2Client = new sdk.EC2();
const params = {
Filters: [
{
Name: "instance-state-name",
Values: ["running"]
},
{
Name: "tag:Name",
Values: ["my-ecs-name"]
}
]
}
const response = await EC2Client.describeInstances(params).promsie();
const privateIP = response.Reservations?.[0].Instances?.[0].PrivateIpAddress ?? "";
但是我遇到了这个错误“Cannot read properties of undefined(阅读'Instances')"。我认为这里的问题是我无法获取这个示例,因为它还没有创建。我如何等待创建,或者我可以做些什么来获取这个IP并将其添加到我的HostedZone记录中?
谢谢你的回答:)
1条答案
按热度按时间nue99wik1#
在加载过程中使用InitConfig更新EC2示例中的记录可能更容易。
https://subaud.io/blog/building-an-ec2-instance-with-cdkv2-and-cloud-init