亚马逊AWS官方博客

借助 Amazon VPC Lattice 中的内置 Amazon ECS 支持,简化容器应用程序网络连接



自推出以来,Amazon VPC Lattice 就帮助客户简化了复杂的网络连接任务。因此,我对构建和连接现代多服务应用程序的方式有了新的认识。正如我的同事 Danilo 在宣布 VPC Lattice 正式发布的文章中所写的那样:

“通过使用 VPC Lattice,您可以专注于应用程序逻辑,通过对实例、容器和无服务器计算的一致支持来提高生产力和部署灵活性。”

现在,我们宣布 Amazon VPC Lattice 内置对 Amazon Elastic Container Service (Amazon ECS) 的支持。通过这种新的内置集成,Amazon ECS 服务现在可以直接与 VPC Lattice 目标组相关联,而无需中间的负载均衡器。

下面将简要介绍如何在创建 Amazon ECS 服务时找到 Amazon VPC Lattice 集成:

Amazon VPC Lattice 与 Amazon ECS 的集成是通过将服务中 ECS 任务的 IP 地址作为 VPC Lattice 目标组中的目标进行注册和注销来实现的。随着服务的 ECS 任务启动,Amazon ECS 会自动将这些任务注册到 VPC Lattice 目标组。

此外,如果 ECS 任务未通过 VPC Lattice 运行状况检查,Amazon ECS 将自动替换这些任务。如果任何任务终止或缩小规模,Amazon ECS 也会将其从目标组中删除。

使用 Amazon VPC Lattice 集成
让我来给您介绍一下如何使用这项新的集成功能。在以下演示中,我将部署一个作为 ECS 服务运行的简单应用程序服务器,并配置与 VPC Lattice 的集成。然后,我将通过连接到 VPC Lattice 域名来测试应用程序服务器,无需在 Amazon ECS 上配置额外的负载均衡器。

在开始集成之前,我需要确保 Amazon ECS 拥有在 VPC Lattice 中注册和注销目标所需的权限。要了解更多信息,请访问 Amazon ECS 基础设施 IAM 角色文档页面。

要使用与 VPC Lattice 的集成,我需要定义一个任务定义,其中至少包含一个容器和一个端口映射。以下是任务定义的示例。

{
    "containerDefinitions": [
        {
            "name": "webserver",
            "image": "public.ecr.aws/ecs-sample-image/amazon-ecs-sample:latest",
            "cpu": 0,
            "portMappings": [
                {
                    "name": "web-80-tcp",
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            ...
            *redacted for brevity*
}

然后,我导航到 ECS 集群并选择创建

接下来,我需要选择任务定义并指定服务名称。

在 VPC Lattice 集成部分中,我选择打开 VPC Lattice,开始为 VPC Lattice 配置目标组。因为我将使用 VPC Lattice,所以不需要指定负载均衡器。默认情况下,VPC Lattice 将使用循环路由算法,将请求路由到运行状况良好的目标。

现在,我可以开始在 VPC Lattice 中定义 ECS 服务的集成。首先,我为 Amazon ECS 选择基础设施角色。然后,我需要选择要在哪个虚拟私有云 (VPC) 中运行服务。之后,我需要定义将接收流量的目标。在完成与 VPC Lattice 集成的服务配置后,我创建了这项服务。

几分钟后,我就准备好了 ECS 服务。我导航到该服务,并选择配置和连接网络。如果我向下滚动到 VPC Lattice 部分,就能看到已创建的 VPC Lattice 目标组。

为了获取有关该目标组的更多信息,我选择目标组名称,这会跳转到 VPC Lattice 目标组页面。在这里,我可以看到 Amazon ECS 成功注册了运行任务的 IP 地址。

现在,我需要创建 VPC Lattice 服务和服务网络。我倾向于先创建 VPC Lattice 服务,然后再将其与 VPC Lattice 服务网络关联起来。那么,让我们开始吧。

我在 VPC Lattice 部分下选择服务,然后选择创建服务

我填写创建 VPC Lattice 服务所需的所有详细信息,然后选择下一步

然后,我添加一个侦听器,对于侦听器默认操作上的转发到目标组,我选择新创建的目标组。

在下一页,因为我稍后要创建 VPC Lattice 服务网络,所以跳过此步骤,直接选择下一步,查看配置并创建服务。

创建 VPC Lattice 服务后,接下来就是创建 VPC Lattice 服务网络了。我导航到 VPC Lattice 部分的服务网络,然后选择创建服务网络

首先,我填写 VPC Lattice 服务网络名称。

然后,在服务关联页面上,我选择已创建的服务。

我将此服务网络关联到 VPC 和安全组。

为了简化演示,我将身份验证类型设置为 None。但是,我强烈建议您阅读如何使用 IAM 管理对 VPC Lattice 的访问。然后,我选择创建服务网络

到了这个阶段,我们已经为集成做好了一切准备。VPC Lattice 服务网络现在与 VPC Lattice 服务和 VPC 相关联。

一切准备就绪后,我从 VPC Lattice 服务页面复制域名

然后,为了访问服务,我登录到同一 VPC 中的实例,并使用 VPC Lattice 中的域名调用服务。

[ec2-user@ ~]$ curl http://service-a-XYZ.XYZ.vpc-lattice-svcs.XYZ.on.aws

"Hello there! I'm Amazon ECS."

需要注意的是,如果您没有接收到 Amazon ECS 工作负载的流量,请按照使用安全组控制 VPC Lattice 中的流量文档页面中的说明检查安全组。

我个人对这种集成充满期待,因为它不仅简化了应用程序架构,增强了系统的可靠性,还带来了无限的可能性。现在,VPC Lattice 本身支持所有 AWS 计算类型,我就可以在所有 ECS 集群、AWS 账户和 VPC 中统一服务。

注意事项
这里需要牢记以下几点:

立即试用 Amazon VPC Lattice 这一新功能,了解它如何简化您在 Amazon ECS 上运行的容器应用程序的通信。

祝大家构建顺利!

Donnie Prakoso


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。