Amazon web services 使用Terraform Spot fleet请求创建的AWS Spot实例不返回公共ip地址
我正在使用Terraform为AWS Spot车队提供资源 Spot fleet已成功配置,但当我尝试使用ssh连接到实例以便在其上运行Node.js应用程序(预安装在AMI上)时,问题就出现了。我无法检索已设置的实例的公用ip地址 我的请求如下所示: main.tfAmazon web services 使用Terraform Spot fleet请求创建的AWS Spot实例不返回公共ip地址,amazon-web-services,terraform,Amazon Web Services,Terraform,我正在使用Terraform为AWS Spot车队提供资源 Spot fleet已成功配置,但当我尝试使用ssh连接到实例以便在其上运行Node.js应用程序(预安装在AMI上)时,问题就出现了。我无法检索已设置的实例的公用ip地址 我的请求如下所示: main.tf provider "aws" { access_key = "${var.aws_access_key}" secret_key = "${var.aws_secret_key}" region = "${va
provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "${var.aws_region}"
}
resource "aws_spot_fleet_request" "spot_fleet" {
iam_fleet_role = "${var.iam_fleet_role}"
spot_price = "${var.spot_price}"
allocation_strategy = "${var.allocation_strategy}"
target_capacity = "${var.target_capacity}"
terminate_instances_with_expiration = "${var.terminate_instances_with_expiration}"
valid_until = "${var.valid_until}"
wait_for_fulfillment = "${var.wait_for_fulfillment}"
launch_specification {
instance_type = "${var.instance_type}"
key_name = "${var.key_name}"
ami = "${var.ami}"
vpc_security_group_ids = ["${var.security_group_id}"]
root_block_device {
volume_size = "${var.volume_size}"
volume_type = "${var.volume_type}"
}
}
provisioner "remote-exec" {
inline = [
"cd my-app",
"npm install",
"npm start",
]
connection {
host = "${self.public_ip}"
type = "ssh"
user = "ubuntu"
private_key = "${file("my-secret.pem")}"
timeout = "2m"
agent = false
}
}
}
这是我得到的错误:
Error applying plan:
1 error(s) occurred:
* aws_spot_fleet_request.spot_fleet: 1 error(s) occurred:
* Resource 'aws_spot_fleet_request.spot_fleet' does not have attribute 'public_ip' for variable 'aws_spot_fleet_request.spot_fleet.0.public_ip'
配置的spot实例本身具有公共IP地址,我可以在AWS控制台中看到它
我还能够使用终端SSH到实例中 忘记添加以下内容:1。配置的spot实例本身具有公共IP地址,我可以在AWS控制台中看到它。2.我还可以使用终端SSH到实例中。
aws\u spot\u fleet\u请求
除了输入的属性之外,根本不会导出它创建的实例的任何属性,因此这对您不起作用。在您的情况下,您可能可以使用直点实例(使用aws\u spot\u instance\u request
资源),因为您可能不需要spot车队提供的实例类型的灵活性。非常感谢您的回复,@ydaetskcoR!该用例涉及处理大型文件,并且是计算密集型的。现在我想应该可以使用aws\u spot\u instance\u request
而不是aws\u spot\u fleet\u request
。非常感谢您抽出时间回复!如果有人碰巧出现在这个页面上搜索这个特定问题,Terraform的团队也会被问到一个问题。谢谢忘记添加以下内容:1。配置的spot实例本身具有公共IP地址,我可以在AWS控制台中看到它。2.我还可以使用终端SSH到实例中。aws\u spot\u fleet\u请求
除了输入的属性之外,根本不会导出它创建的实例的任何属性,因此这对您不起作用。在您的情况下,您可能可以使用直点实例(使用aws\u spot\u instance\u request
资源),因为您可能不需要spot车队提供的实例类型的灵活性。非常感谢您的回复,@ydaetskcoR!该用例涉及处理大型文件,并且是计算密集型的。现在我想应该可以使用aws\u spot\u instance\u request
而不是aws\u spot\u fleet\u request
。非常感谢您抽出时间回复!如果有人碰巧出现在这个页面上搜索这个特定问题,Terraform的团队也会被问到一个问题。谢谢