View a markdown version of this page

Automatice la configuración del emparejamiento entre regiones con AWS Transit Gateway - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Automatice la configuración del emparejamiento entre regiones con AWS Transit Gateway

Ram Kandaswamy, Amazon Web Services

Resumen

AWS Transit Gatewayconecta nubes privadas virtuales (VPCs) y redes locales a través de un hub central. El tráfico de Transit Gateway no atraviesa la Internet pública, lo que reduce los vectores de amenazas, como las vulnerabilidades más comunes y los ataques de denegación de servicio (DDoS) distribuidos.

Si necesitas comunicarte entre dos o más Regiones de AWS, puedes usar la interconexión de Transit Gateway entre regiones para establecer conexiones de interconexión entre pasarelas de tránsito de diferentes regiones. Sin embargo, la configuración manual de la interconexión entre regiones con Transit Gateway puede resultar compleja y llevar mucho tiempo. Este patrón proporciona una guía para usar la infraestructura como código (IaC) para configurar la interconexión. Puede utilizar este enfoque si tiene que configurar varias regiones de forma repetida y Cuentas de AWS para configurar una organización multirregional.

Este patrón configura una AWS CloudFormationpila que incluye un AWS Step Functions flujo de trabajo, AWS Lambda funciones, roles AWS Identity and Access Management (IAM) y grupos de CloudWatch registros en Amazon Logs. A continuación, ejecute el flujo de trabajo de Step Functions para crear la conexión de peering interregional para sus pasarelas de tránsito.

Requisitos previos y limitaciones

Requisitos previos 

Limitaciones

  • Solo algunas Regiones de AWS admiten la interconexión entre regiones. Para ver una lista completa de las regiones que admiten la interconexión entre regiones, consulta la. AWS Transit Gateway FAQs

Arquitectura

El enfoque de desarrollo de la IA entre agencias descrito en este patrón implica los siguientes pasos:

  1. Defina el mensaje de automatización: Kiro recibe un mensaje en lenguaje natural en el que se detallan los requisitos de interconexión.

  2. Generar script de automatización: Kiro genera los scripts Lambda CloudFormation y los scripts Lambda en función de la solicitud proporcionada.

  3. Implemente la pila: Kiro utiliza CloudFormation para implementar los recursos necesarios.

  4. Configurar el peering: Kiro ejecuta el flujo de trabajo Step Functions, que llama a las funciones Lambda para crear conexiones de peering y modificar tablas de enrutamiento.

El siguiente diagrama muestra el flujo de trabajo de Step Functions:

El flujo de trabajo de Step Functions llama a la función de Lambda para modificar las tablas de enrutamiento el emparejamiento de la puerta de enlace de tránsito.

El flujo de trabajo consta de los pasos siguientes:

  1. El flujo de trabajo de Step Functions llama a la función Lambda para el peering de Transit Gateway. 

  2. El flujo de trabajo espera un minuto.

  3. El flujo de trabajo recupera el estado de emparejamiento y lo envía al bloque de condiciones. El bloque es responsable del bucle. 

  4. Si no se cumple la condición de éxito, el flujo de trabajo se codifica para entrar en la fase de temporización. 

  5. Si se cumple la condición de éxito, una función Lambda modifica las tablas de enrutamiento.

  6. Finaliza el flujo de trabajo de Step Functions.

Tools (Herramientas)

  • AWS CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el Cuentas de AWS mundo Regiones de AWS. 

  • Amazon CloudWatch Logs le ayuda a centralizar los registros de todos sus sistemas y aplicaciones Servicios de AWS para que pueda supervisarlos y archivarlos de forma segura.

  • AWS Identity and Access Management(IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.

  • Kiro es una herramienta de desarrollo de IA para agencias que le ayuda a crear aplicaciones listas para la producción mediante un desarrollo basado en especificaciones. 

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

  • AWS Step Functionses un servicio de organización sin servidor que le ayuda a combinar funciones y otras para crear aplicaciones críticas para la empresa. AWS Lambda Servicios de AWS   

Epics

TareaDescripciónHabilidades requeridas

Rellenar los marcadores de posición de los mensajes con detalles específicos

  1. Actualice el siguiente mensaje sustituyendo los nombres de los cubos Regiones de AWS y:

    - Active region: ACTIVE_REGION - Passive region: PASSIVE_REGION - S3_BUCKET : my-lambda-packages-bucket - STACK_NAME : transit-gateway-peering - All Lambda functions use two boto3 EC2 clients at module level (one per region), each with signature_version v4 and retries max_attempts=1 mode=standard. - Print all API responses for CloudWatch logging.
  2. Guárdalo como un archivo de rebajas.

  3. Añada este archivo markdown a su proyecto de Kiro para darle contexto.

nota

Como alternativa, puedes añadirlo como un mensaje en línea que haga referencia a las variables anteriores sin adjuntar el archivo como contexto.

AWS general, administrador de red

Cree una función Lambda que cree los adjuntos de emparejamiento.

  1. En su proyecto de Kiro, introduzca el siguiente mensaje:

    Write a Python Lambda that creates a transit gateway peering attachment from active region to passive region. Both of these regions will be read as environment variables of the Lambda function. Use two boto3 EC2 clients at the module level, one per Region. The handler should describe available transit gateways in both Regions. Then check if a peering attachment already exists on the active side by filtering describe_transit_gateway_attachments for resource-type "peering" and states: available, initiatingRequest, modifying, pendingAcceptance, pending, rejected, and rejecting. Only if zero results, create the peering attachment with tags for both Transit Gateway IDs, then wait 60 seconds (AWS needs this before the passive side can accept), then call accept_transit_gateway_peering_attachment on the passive client. Print all API responses.
  2. Guarde este archivo y llámelo peer-transit-gateway.py.

AWS general, administrador de red, ingeniería rápida

Cree una función Lambda que sondee el estado del adjunto entre pares.

  1. En su proyecto de Kiro, introduzca la siguiente solicitud:

    Using the shared context above, write a Python Lambda that polls peering attachment status. Describe available transit gateways in both regions, then call describe_transit_gateway_attachments on the active client filtered by the active Transit Gateway ID only (no resource-type filter). Return exactly `{'status': status}` where status is the State field from the first attachment. Do not return statusCode or body — the Step Function Choice state reads `$.Payload.status` and compares to "available".
  2. Guarde este archivo y llámelo get-transit-gateway-peering-status.py.

AWS general, administrador de red, ingeniería rápida

Cree una función Lambda que añada rutas estáticas a ambas regiones.

  1. En su proyecto de Kiro, introduzca la siguiente solicitud:

    Using the shared context, write a Python Lambda that adds static routes to both regions' TGW route tables. Describe available transit gateways in both Regions, extract each transit gateway's AssociationDefaultRouteTableId. Discover routable VPCs by filtering describe_vpcs with tag `addtotransitgateway=true` in each region, collecting their CIDRs. Get the peering attachment ID from the active side by filtering on the active route table ID. For each passive CIDR, search the active route table using `route-search.exact-match` — only create the route if none found. For each active CIDR, search the passive route table using `route-search.supernet-of-match` (not exact-match — passive side may have supernet routes) — only create if none found. Both sides use the same peering attachment ID.
  2. Guarde este archivo y asígnele el nombre. modify-transit-gateway-routes.py

AWS general, administrador de red

Cree la CloudFormation plantilla.

  1. Introduzca la siguiente solicitud de orquestación, que crea una CloudFormation plantilla:

    Write a CloudFormation JSON template that deploys: three Lambda functions (peer-transit-gateway with 600s timeout, get-transit-gateway-peering-status with 30s timeout, modify-transit-gateway-routes with 600s timeout), Lambda code from an S3 bucket parameter (no default value — user must supply the bucket name at deploy time), a Step Functions state machine, and CloudWatch log groups with 90-day retention. The state machine flow is: 1. Invoke peer-transit-gateway 2. Wait 20 seconds (attachment needs time after the Lambda's internal 20s sleep + acceptance) 3. Invoke get-transit-gateway-peering-status 4. Choice: if `$.Payload.status` equals "available" → go to step 5, otherwise loop back to step 2 5. Invoke modify-transit-gateway-routes → End Use `Fn::Sub` with Lambda ARN references like `${PeerTransitGateways.Arn}` in the DefinitionString. The polling loop has no max retry — it loops until "available" (typically 3-5 minutes total).
  2. Guarde y asigne un nombre al archivo transit-gateway-peering.json.

AWS DevOps, AWS general, ingeniería rápida
TareaDescripciónHabilidades requeridas

Implemente la CloudFormation pila mediante las indicaciones.

Ingresa la siguiente solicitud:

Using the outputs from Prompts 1-4, package and deploy the full stack. Steps: 1. For each of the three Python files from Prompts 1-3, create a zip named after the file (e.g. peer-transit-gateway.zip that contains peer-transit-gateway.py). 2. Upload all three zips to S3_BUCKET. 3. Deploy the CloudFormation template from Prompt 4 to ACTIVE_REGION with S3BucketName=S3_BUCKET and CAPABILITY_NAMED_IAM. 4. Initiate the Step Function from the deployed stack. Zip file names must match the S3Key values in the template exactly.
AWS DevOps, administrador de la nube, AWS general, pronta ingeniería

Valide la implementación.

  1. Supervise el flujo de trabajo de Step Functions para que se complete correctamente. Para obtener instrucciones, consulte la documentación de Step Functions.

  2. Compruebe que el estado de interconexión de adjuntos de Transit Gateway esté disponible. Para obtener instrucciones, consulte la documentación de Transit Gateway.

AWS general

Recursos relacionados