|
En AWS re: inventar 2022, presentamos en la vista previa Amazon VPC Lattice, una nueva capacidad de Amazon Virtual Private Cloud (Amazon VPC) que le brinda una forma consistente de conectarse, asegurar y monitorear la comunicación entre sus servicios. Con VPC Lattice, puede definir políticas para el acceso a la red, la gestión del tráfico y la supervisión para conectar servicios informáticos entre instancias, contenedores y aplicaciones sin servidor.
Hoy, me complace compartir que VPC Lattice ahora está disponible para el público en general. En comparación con la vista previa, tiene acceso a nuevas capacidades:
- Los servicios pueden usar un nombre de dominio personalizado además del nombre de dominio generado automáticamente por VPC Lattice. Al usar HTTPS, puede configurar un certificado SSL/TLS que coincida con el nombre de dominio personalizado.
- Puede implementar el código abierto Controlador de API de puerta de enlace de AWS para usar VPC Lattice con una experiencia nativa de Kubernetes. utiliza el API de puerta de enlace de Kubernetes para permitirle conectar servicios a través de múltiples clústeres y servicios de Kubernetes que se ejecutan en instancias EC2, contenedores y funciones sin servidor.
- Puede utilizar un Balanceador de carga de aplicaciones (ALB) o un Balanceador de carga de red (NLB) como destino de un servicio.
- El tipo de destino de la dirección IP ahora es compatible con la conectividad IPv6.
Veamos algunas de estas nuevas funciones en la práctica.
Uso de Amazon VPC Lattice para la conectividad de servicio a servicio
En mi publicación anterior sobre VPC Lattice, muestro cómo crear una red de servicios, asociar varias VPC y servicios, y configurar grupos objetivo para instancias EC2 y funciones Lambda. Allí, también muestro cómo enrutar el tráfico según las características de la solicitud y cómo usar el enrutamiento ponderado. El enrutamiento ponderado es realmente útil para las implementaciones de estilo blue/green y canary o para migrar de una plataforma informática a otra.
Ahora, veamos cómo usar VPC Lattice para permitir que los servicios de una aplicación de comercio electrónico se comuniquen entre sí. Por simplicidad, solo considero cuatro servicios:
- El
Order
servicio, ejecutándose como una función de Lambda. - El
Inventory
servicio, implementado como un servicio de Amazon Elastic Container Service (Amazon ECS) en una VPC de doble pila compatible con IPv6. - El
Delivery
servicio, implementado como un servicio de ECS mediante un ALB para distribuir el tráfico a las tareas de servicio. - El
Payment
servicio, ejecutándose en una instancia EC2.
Primero, creo una red de servicios. El Order
servicio necesita llamar al Inventory
servicio (para comprobar si un artículo está disponible para la compra), el Delivery
servicio (para organizar la entrega del artículo), y el Payment
servicio (para transferir los fondos). El siguiente diagrama muestra la comunicación de servicio a servicio desde la perspectiva de la red de servicio.
Estos servicios se ejecutan en diferentes cuentas de AWS y múltiples VPC. VPC Lattice maneja la complejidad de configurar la conectividad a través de los límites de VPC y el permiso entre cuentas para que la comunicación de servicio a servicio sea tan simple como una llamada HTTP/HTTPS.
El siguiente diagrama muestra cómo fluye la comunicación desde el punto de vista de la implementación.
El Order
El servicio se ejecuta en una función Lambda conectada a una VPC. Dado que todas las VPC del diagrama están asociadas a la red de servicio, la Order
El servicio puede llamar a los otros servicios (Inventory
, Delivery
y Payment
) incluso si se implementan en diferentes cuentas de AWS y en VPC con direcciones IP superpuestas.
Uso de un equilibrador de carga de red (NLB) como destino
El Inventory
El servicio se ejecuta en una VPC de doble pila. Se implementa como un servicio de ECS con un NLB para distribuir el tráfico a las tareas del servicio. Para obtener las direcciones IPv6 de NLB, busco las interfaces de red utilizadas por NLB en la consola de EC2.
Al crear el grupo objetivo para el Inventory
servicio, bajo Configuracion basicaYo elijo Direcciones IP como el tipo de objetivo. Luego, selecciono IPv6 Para el Tipo de dirección IP.
En el siguiente paso, ingreso las direcciones IPv6 del NLB como objetivos. Una vez que se crea el grupo objetivo, las verificaciones de estado prueban los objetivos para ver si están respondiendo como se esperaba.
Uso de un balanceador de carga de aplicaciones (ALB) como destino
Usar un ALB como objetivo es aún más fácil. Al crear un grupo objetivo para el Delivery
servicio, bajo Configuracion basicaelijo lo nuevo Equilibrador de carga de aplicaciones tipo de objetivo.
selecciono el VPC en el que buscar el ALB y elegir el Versión del protocolo.
En el siguiente paso, elijo Regístrate ahora y seleccione el ALB del menú desplegable. Utilizo el puerto predeterminado utilizado por el grupo objetivo. VPC Lattice no proporciona comprobaciones de estado adicionales para los ALB. Sin embargo, los balanceadores de carga ya tienen sus propias verificaciones de estado configuradas.
Uso de nombres de dominio personalizados para servicios
Para llamar a estos servicios, uso nombres de dominio personalizados. Por ejemplo, cuando creo el Payment
servicio en la consola de VPC, elijo Especificar una configuración de dominio personalizadaentrar a Nombre de dominio personalizadoy seleccione un certificado SSL/TLS para el agente de escucha HTTPS. El Certificado SSL/TLS personalizado El menú desplegable muestra los certificados disponibles de AWS Certificate Manager (ACM).
Protección de las comunicaciones de servicio a servicio
Ahora que se han creado los grupos objetivo, veamos cómo puedo asegurar la forma en que los servicios se comunican entre sí. Para implementar la autenticación y la autorización de confianza cero, utilizo AWS Identity and Access Management (IAM). Al crear un servicio, selecciono el IAM de AWS como Tipo de autenticación.
selecciono el Permitir solo el acceso autenticado plantilla de política para que las solicitudes a los servicios deban firmarse con Signature Version 4, el mismo protocolo de firma que utilizan las API de AWS. De esta manera, las solicitudes entre servicios son autenticadas por sus credenciales de IAM y no tengo que administrar secretos para asegurar sus comunicaciones.
Opcionalmente, puedo ser más preciso y usar una política de autenticación que solo brinde acceso a algunos servicios o rutas URL específicas de un servicio. Por ejemplo, puedo aplicar la siguiente política de autenticación al Order
service para dar a la función Lambda estos permisos:
- Acceso de solo lectura (método GET) al
Inventory
servicio/stock
Ruta de URL. - Acceso completo (cualquier método HTTP) a la
Delivery
servicio/delivery
Ruta de URL.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<Order Service Lambda Function IAM Role ARN>"
},
"Action": "vpc-lattice-svcs:Invoke",
"Resource": "<Inventory Service ARN>/stock",
"Condition": {
"StringEquals": {
"vpc-lattice-svcs:RequestMethod": "GET"
}
}
},
{
"Effect": "Allow",
"Principal": {
"AWS": "<Order Service Lambda Function IAM Role ARN>"
},
"Action": "vpc-lattice-svcs:Invoke",
"Resource": "<Delivery Service ARN>/delivery"
}
]
}
Usando VPC Lattice, configuré rápidamente la comunicación entre los servicios de mi aplicación de comercio electrónico, incluida la seguridad y el monitoreo. Ahora, puedo concentrarme en la lógica comercial en lugar de administrar cómo los servicios se comunican entre sí.
Disponibilidad y precios
Amazon VPC Lattice ya está disponible en las siguientes regiones de AWS: EE. UU. Este (Ohio), EE. UU. Este (Norte de Virginia), EE. UU. Oeste (Oregón), Asia Pacífico (Singapur), Asia Pacífico (Sídney), Asia Pacífico (Tokio), y Europa (Irlanda).
Con VPC Lattice, paga por el tiempo que se presta un servicio, la cantidad de datos transferidos a través de cada servicio y la cantidad de solicitudes. No hay ningún cargo por las primeras 300 000 solicitudes cada hora y solo paga por las solicitudes que superan este umbral. Para obtener más información, consulte Precios de VPC Lattice.
Diseñamos VPC Lattice para permitir la suscripción incremental con el tiempo. Cada equipo de su organización puede elegir si usar VPC Lattice y cuándo hacerlo. Otras aplicaciones pueden conectarse a los servicios de VPC Lattice mediante protocolos estándar como HTTP y HTTPS. Al usar VPC Lattice, puede concentrarse en la lógica de su aplicación y mejorar la productividad y la flexibilidad de implementación con soporte consistente para instancias, contenedores y computación sin servidor.
Simplifique la forma en que conecta, protege y supervisa sus servicios con VPC Lattice.
— Danilo