amazon-web-services - 如何使用 Terraform 将现有 ElasticIP 分配给 VPC 中的 NAT
问题描述
我有一些列入白名单的 ElasticIP,我正尝试将它们用作我的 VPC 中 NAT 网关的 IP,用于 Lambda 函数。
我的 VPC 配置如下所示:
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = "lambda-vpc"
cidr = "11.0.0.0/16"
azs = ["ap-southeast-2b", "ap-southeast-2c"]
private_subnets = ["11.0.1.0/24", "11.0.2.0/24"]
public_subnets = ["11.0.0.0/24"]
enable_nat_gateway = true
external_nat_ip_ids = ["eipalloc-03092d9e4de71d859", "eipalloc-03092d9e4de71d859"]
}
但这会导致 NAT 网关创建自己的 ElasticIP,而不是使用已列入白名单的现有 ElasticIP。
解决方案
根据模块文档,reuse_nat_ips
选项应结合使用external_nat_ip_ids
:
reuse_nat_ips - 如果您不希望为您的 NAT 网关创建 EIP,而是通过“external_nat_ip_ids”变量传递它们,则应该为真
因此,假设您的代码中的其他所有内容都是正确的:
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = "lambda-vpc"
cidr = "11.0.0.0/16"
azs = ["ap-southeast-2b", "ap-southeast-2c"]
private_subnets = ["11.0.1.0/24", "11.0.2.0/24"]
public_subnets = ["11.0.0.0/24"]
enable_nat_gateway = true
reuse_nat_ips = true
external_nat_ip_ids = ["eipalloc-03092d9e4de71d859", "eipalloc-03092d9e4de71d859"]
}
推荐阅读
- java - 从 GC 角度看 Java 流的影响或 GC 处理短期对象
- angular - 项目的角度列表在服务中更改时不会更新
- c# - JSON序列化 - 对象引用未设置为对象的实例
- .net-core - 能够在 Rider 中为单元测试(特别是 xUnit)配置环境变量
- c - 无法写入 int const 数组
- python - pandas fillna 在列中包含前行的累积(在每个 nan 之后重置)
- sql - 如何将多个 SQL 行动态组合成列
- c# - 未处理的异常,在 C# 中连接到 MySql?
- docker - 读取容器的特定 Docker env_file
- php - 使用序列化程序时 Symfony 4 未定义的属性错误