0

我在同一个账户和区域中有两个 VPC,VPC-A并且VPC-B. 我在两者之间创建了一个 VPC 对等连接,VPC-A接受者和VPC-B请求者在哪里。

VPC-A包含一些接口端点,以便能够访问带有公共 IP 的 AWS 服务(ECR、SSM、日志)(工作正常)。

现在我想启动一个VPC-B也没有公共 IP 的 Fargate 任务,希望我可以使用对等连接来访问所需的端点VPC-A,但我无法让它工作。

当我在 中启动 fargate 任务时VPC-B,我收到一条CannotPullContainerError消息:

等待连接时取消请求(等待标头时超出了 Client.Timeout)

表示无法到达终点。

但是,当我使用与源相同的任务的弹性网络接口和所需的 VPC 端点作为目标运行可达性分析时,它会返回 Reachable带有预期路径的结果(ID 已编辑):

在此处输入图像描述

我想我可能在某处遗漏了一些配置,但是在哪里呢?或者这甚至可能吗?

4

1 回答 1

1

认为DNS。

您的 Fargate 服务需要将 com.amazonaws.eu-west-1.ecr.dkr 等路由到 vpc-b 中的 IP 地址,而不是通过 Internet 网关。

我认为当您在 vpc-a 中创建端点并为其启用 dns 时,它会创建一个私有托管区域,其记录如下:

com.amazonaws.eu-west-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。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-containerdefinitions-hostentry.html

您可以尝试添加一个条目,例如:

com.amazonaws.eu-west-1.ecr.dkr=ip.address.1

您只能为给定域添加一个 IP 地址,但理论上任务应该通过对等连接将该流量路由到接口。

假设您的接口端点策略和安全组不会阻止网络流量。

同样,这可能不起作用,但可能会为您指明问题所在的方向,希望无论如何

于 2021-10-13T21:28:38.113 回答