AWS:从请求者 VPC 中的 fargate 任务连接到接受者 VPC 中的 VPC 端点
AWS: connect to VPC endpoint in Accepter VPC from fargate task in Requester VPC
我在同一账户和区域内有两个 VPC,VPC-A
和 VPC-B
。我在两者之间创建了一个 VPC 对等连接,其中 VPC-A
是接受者,VPC-B
是请求者。
VPC-A
包含一些能够访问 AWS 服务(ECR、SSM、日志)的接口端点w/o public IP(工作正常)。
现在我想在 VPC-B
中启动一个 Fargate 任务,它也没有 public IP,希望我可以使用对等连接访问 [=] 中所需的端点10=],但我做不到。
当我在 VPC-B
中启动 fargate 任务时,我收到 CannotPullContainerError
消息:
request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
表示无法到达终点
但是,当我 运行 使用同一任务的弹性网络接口作为源,并将所需的 VPC 端点作为目标进行可达性分析时,它 returns 结果是 Reachable
具有预期路径(已编辑 ID):
我想我可能在某处缺少一些配置,但是在哪里?或者这甚至可能吗?
考虑 DNS。
您的 fargate 服务需要将 com.amazonaws.eu-west-1.ecr.dkr 等路由到 vpc-b 中的 IP 地址,而不是通过互联网网关。
我认为当您在 vpc-a 中创建端点并为其启用 dns 时,它会创建一个私有托管区域,其中包含如下记录:
com.amazonaws.eu-西-1.ecr.dkr = [ip.address.1, ip.address.2]
数组中的每条记录都是您创建的接口端点的 IP。
私有托管区域附加到 VPC-A 但对您隐藏,因此您不能只将其附加到 VPC-B。
我认为您没有遗漏任何直接配置,即接口端点的目的是在单个 vpc 中工作。
但是,您可以通过多种方式使其在 vpc-b 中运行。这些未经测试,有点老套,可能不值得付出努力,但可能会奏效。
选项 1:
例如为域 com.amazonaws.eu-west-1.ecr.dkr 创建一个私有托管并将其附加到 vpc-b。
在区域顶点为您的接口的 vpc-a 中的每个 IP 地址创建一个具有多个值的 A 记录。
您需要为所有必需的接口重复此操作,因此可能有点乏味。
理论上 dns 将首先解析此记录,然后通过对等连接将其路由到接口 IP。
选项2.
您可以尝试添加条目,例如:
com.amazonaws.eu-西-1.ecr.dkr=ip.address.1
您只能为给定域添加一个 IP 地址,但理论上该任务应该通过对等连接将该流量路由到接口。
假设您的接口端点策略和安全组不会阻止网络流量。
同样,这可能行不通,但可能会为您指明问题所在的方向,希望无论如何
我在同一账户和区域内有两个 VPC,VPC-A
和 VPC-B
。我在两者之间创建了一个 VPC 对等连接,其中 VPC-A
是接受者,VPC-B
是请求者。
VPC-A
包含一些能够访问 AWS 服务(ECR、SSM、日志)的接口端点w/o public IP(工作正常)。
现在我想在 VPC-B
中启动一个 Fargate 任务,它也没有 public IP,希望我可以使用对等连接访问 [=] 中所需的端点10=],但我做不到。
当我在 VPC-B
中启动 fargate 任务时,我收到 CannotPullContainerError
消息:
request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
表示无法到达终点
但是,当我 运行 使用同一任务的弹性网络接口作为源,并将所需的 VPC 端点作为目标进行可达性分析时,它 returns 结果是 Reachable
具有预期路径(已编辑 ID):
我想我可能在某处缺少一些配置,但是在哪里?或者这甚至可能吗?
考虑 DNS。
您的 fargate 服务需要将 com.amazonaws.eu-west-1.ecr.dkr 等路由到 vpc-b 中的 IP 地址,而不是通过互联网网关。
我认为当您在 vpc-a 中创建端点并为其启用 dns 时,它会创建一个私有托管区域,其中包含如下记录:
com.amazonaws.eu-西-1.ecr.dkr = [ip.address.1, ip.address.2]
数组中的每条记录都是您创建的接口端点的 IP。 私有托管区域附加到 VPC-A 但对您隐藏,因此您不能只将其附加到 VPC-B。
我认为您没有遗漏任何直接配置,即接口端点的目的是在单个 vpc 中工作。
但是,您可以通过多种方式使其在 vpc-b 中运行。这些未经测试,有点老套,可能不值得付出努力,但可能会奏效。
选项 1:
例如为域 com.amazonaws.eu-west-1.ecr.dkr 创建一个私有托管并将其附加到 vpc-b。 在区域顶点为您的接口的 vpc-a 中的每个 IP 地址创建一个具有多个值的 A 记录。
您需要为所有必需的接口重复此操作,因此可能有点乏味。 理论上 dns 将首先解析此记录,然后通过对等连接将其路由到接口 IP。
选项2.
您可以尝试添加条目,例如:
com.amazonaws.eu-西-1.ecr.dkr=ip.address.1
您只能为给定域添加一个 IP 地址,但理论上该任务应该通过对等连接将该流量路由到接口。
假设您的接口端点策略和安全组不会阻止网络流量。
同样,这可能行不通,但可能会为您指明问题所在的方向,希望无论如何