当前位置: 首页 > 知识库问答 >
问题:

EC2有两个接口(一个公共接口和一个专用接口)

庾远航
2023-03-14

我基本上想要一个EC2,一个接口在公共子网,一个在私有子网。我应该能够通过公共接口从外界SSH,私有网络将用于与私有网络中的数据库通信。

在地形上。。。

  • 我在该 VPC 中创建了一个 VPC,两个子网(一个公共子网,一个私有子网)。
  • 创建了一个互联网网关,即 VPC 中的路由表,其路由为 0.0.0.0/0 至 IGW
  • 已在与公有子网和路由表之间创建路由关联。
  • 已创建一个 EC2 实例,其中一个接口位于公有子网中,另一个接口位于私有子网中。
  • 在 EC2 的公有接口上创建了弹性 IP 地址
  • 已创建允许 ssh 端口的安全组 (22)

我不能SSH,连接超时,谁能看看这个?


conf_vpc_cidr_block = "10.100.0.0/16"
conf_vpc_enable_dns_support = "true"
conf_vpc_enable_dns_hostnames =  "true"
conf_vpc_enable_classiclink =  "false"
conf_vpc_instance_tenancy = "default"

conf_private_subnet_cidr_block = "10.100.100.0/24"
conf_private_subnet_map_public_ip_on_launch = "false"
conf_private_subnet_availability_zone = "eu-north-1a"

conf_public_subnet_cidr_block = "10.100.200.0/24"
conf_public_subnet_map_public_ip_on_launch = "true"
conf_public_subnet_availability_zone = "eu-north-1a"

conf_instance_ami = "ami-000e50175c5f86214"
conf_instance_type = "t3.micro"

provider "aws" {
  region = var.conf_aws_region
  profile = var.conf_aws_profile
}

resource "aws_vpc" "Terraform_XX_VPC" {
  cidr_block = var.conf_vpc_cidr_block
  enable_dns_support = var.conf_vpc_enable_dns_support
  enable_dns_hostnames =  var.conf_vpc_enable_dns_hostnames
  enable_classiclink =  var.conf_vpc_enable_classiclink
  instance_tenancy = var.conf_vpc_instance_tenancy

}

resource "aws_subnet" "Terraform_XX_Private_SN" {
  vpc_id = "${aws_vpc.Terraform_XX_VPC.id}"
  cidr_block = var.conf_private_subnet_cidr_block
  map_public_ip_on_launch = var.conf_private_subnet_map_public_ip_on_launch
  availability_zone = var.conf_private_subnet_availability_zone

}


resource "aws_subnet" "Terraform_XX_Public_SN" {
  vpc_id = "${aws_vpc.Terraform_XX_VPC.id}"
  cidr_block = var.conf_public_subnet_cidr_block
  map_public_ip_on_launch = var.conf_public_subnet_map_public_ip_on_launch
  availability_zone = var.conf_public_subnet_availability_zone

}


resource "aws_internet_gateway" "Terraform_XX_IGW" {
  vpc_id = "${aws_vpc.Terraform_XX_VPC.id}"

}


resource "aws_route_table" "Terraform_XX_Route_Public" {
  vpc_id = "${aws_vpc.Terraform_XX_VPC.id}"

  route {
    cidr_block =  "0.0.0.0/0"
    gateway_id = "${aws_internet_gateway.Terraform_XX_IGW.id}"
  }

}


resource "aws_route_table_association" "Terraform_XX_Route_Table_Public_Association" {

  subnet_id      = "${aws_subnet.Terraform_XX_Public_SN.id}"
  route_table_id = "${aws_route_table.Terraform_XX_Route_Public.id}"
}


resource "aws_security_group" "Terraform_XX_SG_ALLOW_SSH" {
  name        = "Terraform_XX_SG_ALLOW_SSH"
  description = "Allow SSH"
  vpc_id      = "${aws_vpc.Terraform_XX_VPC.id}"

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_instance" "Terraform_XX_EC2" {
  ami = var.conf_instance_ami
  instance_type = var.conf_instance_type
  key_name = "${local.environmentLC}"

  network_interface  {
    device_index         = 0
    network_interface_id = "${aws_network_interface.Terraform_XX_EC2_Private_Intf.id}"
    #delete_on_termination = true
  }
  network_interface  {
    device_index         = 1
    network_interface_id = "${aws_network_interface.Terraform_XX_EC2_Public_Intf.id}"
    #delete_on_termination = true
  }

}

resource "aws_network_interface" "Terraform_XX_EC2_Private_Intf" {
  subnet_id       = "${aws_subnet.Terraform_XX_Private_SN.id}"
  private_ips     = ["10.100.100.5"]
  security_groups = [aws_security_group.Terraform_XX_SG_ALLOW_SSH.id]
}

resource "aws_network_interface" "Terraform_XX_EC2_Public_Intf" {
  subnet_id       = "${aws_subnet.Terraform_XX_Public_SN.id}"
  private_ips     = ["10.100.200.5"]
  security_groups = [aws_security_group.Terraform_XX_SG_ALLOW_SSH.id]
}

resource "aws_eip" "Terraform_XX_EC2_EIP" {
  vpc             = true
  network_interface = "${aws_network_interface.Terraform_XX_EC2_Public_Intf.id}"
}

共有1个答案

栾耀
2023-03-14

我可以通过将device_index交换为公共和私有接口来解决这个问题

 类似资料:
  • 问题内容: 我的意思是: 我用谷歌搜索,发现了这个: 表示定义接口方法的实现。但是接口没有实现,因此是不可能的。 但是,interface是100%抽象的类,抽象类可以实现接口(100%抽象的类)而无需实现其方法。将其定义为“接口”时会出现什么问题? 详细来说, 问题答案: 表示实现,当旨在声明仅提供不提供实现时。 A 100%,是功能上等同于,但它也可以实现,如果你想(在这种情况下,它不会保持1

  • 我使用的界面看起来大致如下: 并且我目前正在使用一个匿名类来实现接口,但我并不关心这两种方法中的一种。大致如下: 现在,我已经在Java8中尽可能地使用新的lambda表达式,我想在这种情况下使用增加的简单性。毕竟,我只是在实现其中的一个方法,但由于接口中有两个方法,所以我不能在一个lambda表达式中使用它。

  • 问题内容: 我想知道我们可以在一个接口内定义一个接口。喜欢 这是面试中提出的问题。任何实时使用。 问题答案: 是的,我们可以做到。Java中的嵌套接口的定义如下: 嵌套接口是其声明出现在另一个类或接口的主体内的任何接口。顶级接口是不是嵌套接口的接口。 请参阅此为多。 进一步 … 一个原因可能是外部接口具有一种将回调实现作为参数的方法。在这种情况下,嵌套接口是回调方法必须实现的协定。我没有理由在顶层

  • 定义一个接口还是很方便的,我先给出一个PHP语言中的形式。 <?php interface i_myinterface { public function hello(); } 那它在扩展中的实现是这样的。 zend_class_entry *i_myinterface_ce; static zend_function_entry i_myinterface_method[]={

  • 在我的应用程序中有一个对象树。要构成该树,每个对象都有一个父引用。由于某些对象类型可以是多个父对象类型的子对象,所有潜在的父对象类型都通过实现公共接口来统一。我尽可能地缩小了问题的范围(JAXB抱怨父成员变量(注释为@XmlIDREF和@xmldattribute)是一个接口): 这是我在尝试运行它时得到的例外: com.sun.xml.internal.bind.v2.runtime.非法注释异

  • 问题内容: 尝试部署应用程序时,似乎出现以下异常: 我的代码运行良好,直到将返回类型从List更改为List > 这是部分Web服务: 我也尝试过通过删除@SOAPBinding并尝试使用默认值,但是会出现相同的结果。 感谢任何帮助 更新 我要注意一些事情。我将所有List更改为ArrayList,然后进行编译。我之所以说编译但不起作用是因为它的行为很奇怪。我得到一个类型为Object的对象:Re