

# Interconexión de los servicios de Amazon ECS
<a name="interconnecting-services"></a>

Las aplicaciones que se ejecutan en las tareas de Amazon ECS a menudo necesitan recibir conexiones de Internet o conectarse a otras aplicaciones que se ejecutan en los servicios de Amazon ECS. Si necesita conexiones externas desde Internet, le recomendamos usar Elastic Load Balancing. Para obtener más información sobre el equilibrador de carga integrado, consulte [Uso del equilibrador de carga para distribuir el tráfico de servicio de Amazon ECS](service-load-balancing.md).

Si necesita una aplicación para conectarse a otras aplicaciones que se ejecutan en los servicios de Amazon ECS, Amazon ECS proporciona las siguientes formas de hacerlo sin un equilibrador de carga:
+ *Amazon ECS Service Connect*

  Recomendamos Service Connect, que proporciona la configuración de Amazon ECS para la detección de servicios, la conectividad y la supervisión del tráfico. Con Service Connect, sus aplicaciones pueden usar nombres abreviados y puertos estándar para conectarse a los servicios de Amazon ECS del mismo clúster o a otros clústeres, incluso a través de VPC de la misma Región de AWS.

  Cuando utiliza Service Connect, Amazon ECS administra todas las partes de la detección de servicios: crea los nombres que se pueden descubrir, administra dinámicamente las entradas de cada tarea a medida que se inician y se detienen las tareas y ejecuta un agente en cada tarea que está configurado para descubrir los nombres. La aplicación puede buscar los nombres mediante la funcionalidad estándar para los nombres de DNS y establecer conexiones. Si su aplicación ya lo hace, no tendrá que modificarla para usar Service Connect.

  Usted proporciona la configuración completa dentro de cada definición de servicio y tarea. Amazon ECS administra los cambios en esta configuración en cada implementación de servicio para garantizar que todas las tareas de una implementación se comporten de la misma manera. Por ejemplo, un problema común con el DNS en la detección de servicios es el control de una migración. Si cambia un nombre de DNS para que apunte a las nuevas direcciones IP de reemplazo, es posible que pase el tiempo máximo de TTL antes de que todos los clientes comiencen a usar el nuevo servicio. Con Service Connect, la implementación del cliente actualiza la configuración sustituyendo las tareas del cliente. Puede configurar el disyuntor de implementación y otras configuraciones de implementación para que afecten a los cambios de Service Connect de la misma manera que cualquier otra implementación.

  Para obtener más información, consulte [Uso de Service Connect para conectar los servicios de Amazon ECS con nombres abreviados](service-connect.md).
+ *Detección de servicios de Amazon ECS*

  Otro enfoque para la comunicación de servicio a servicio es la comunicación directa mediante la detección de servicios. En este enfoque, puede utilizar la integración de detección de servicios AWS Cloud Map con Amazon ECS. Mediante la detección de servicios, Amazon ECS sincroniza la lista de tareas iniciadas en AWS Cloud Map, que mantiene un nombre de host DNS que se resuelve en las direcciones IP internas de una o más tareas de ese servicio en particular. Otros servicios de Amazon VPC pueden usar este nombre de host DNS para enviar tráfico directamente a otro contenedor mediante su dirección IP interna. 

  Este enfoque de comunicación de servicio a servicio proporciona una baja latencia. No hay componentes adicionales entre los contenedores. El tráfico viaja directamente de un contenedor al otro.

  Este enfoque es adecuado cuando se utiliza el modo de red `awsvpc`, en el que cada tarea tiene su propia dirección IP única. La mayoría de los programas solo admiten el uso de registros `A` de DNS, que se resuelven directamente en las direcciones IP. Cuando se utiliza el modo de red `awsvpc`, la dirección IP de cada tarea es un registro `A`. Sin embargo, si utiliza el modo de red `bridge`, es posible que varios contenedores compartan la misma dirección IP. Además, las asignaciones dinámicas de puertos hacen que a los contenedores se les asignen números de puerto de forma aleatoria en esa única dirección IP. En este punto, un registro `A` ya no es suficiente para la detección de servicios. También debe usar un registro `SRV`. Este tipo de registro puede hacer un seguimiento de las direcciones IP y los números de puerto, pero requiere que configure las aplicaciones de forma adecuada. Es posible que algunas aplicaciones prediseñadas que utilice no admitan registros `SRV`.

  Otra ventaja del modo de red `awsvpc` es que tiene un grupo de seguridad único para cada servicio. Puede configurar este grupo de seguridad para permitir las conexiones entrantes únicamente desde los servicios ascendentes específicos que necesitan comunicarse con ese servicio.

  La principal desventaja de la comunicación directa entre servicios mediante la detección de servicios es que se debe implementar una lógica adicional para llevar a cabo reintentos y solucionar los errores de conexión. Los registros de DNS tienen un período de vida (TTL) que controla el periodo durante el que se almacenan en caché. El registro DNS tarda algún tiempo en actualizarse y la caché en caducar para que las aplicaciones puedan recoger la última versión del registro DNS. Por lo tanto, su aplicación podría terminar resolviendo el registro DNS para que apunte a otro contenedor que ya no está allí. Su aplicación debe gestionar los reintentos y tener una lógica para ignorar los backends defectuosos.

  Para obtener más información, consulte [Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS](service-discovery.md)
+ *Amazon VPC Lattice *

  Amazon VPC Lattice es un servicio de redes de aplicaciones administrado que utilizan los clientes de Amazon ECS para observar, proteger y supervisar las aplicaciones creadas en servicios de computación, VPC y cuentas de AWS sin tener que modificar su código.

  VPC Lattice usa grupos de destino, que son un conjunto de recursos de computación. Estos destinos ejecutan la aplicación o servicio y pueden ser instancias de Amazon EC2, direcciones IP, funciones de Lambda y equilibradores de carga de aplicación. Al asociar sus servicios de Amazon ECS a un grupo de destino de VPC Lattice, los clientes ahora pueden habilitar las tareas de Amazon ECS como destinos de IP en VPC Lattice. Amazon ECS registra automáticamente las tareas en el grupo de destino de VPC Lattice cuando se lanzan las tareas del servicio registrado.

  Para obtener más información, consulte [Uso de Amazon VPC Lattice para conectar, observar y proteger los servicios de Amazon ECS](ecs-vpc-lattice.md).

## Tabla de compatibilidad del modo de red
<a name="interconnect-network-mode-compatibility-table"></a>

La siguiente tabla describe la compatibilidad entre estas opciones y los modos de red de tareas. En la tabla, “cliente” hace referencia a la aplicación que hace las conexiones desde una tarea de Amazon ECS.


****  

| Opciones de interconexión | Puenteado | `awsvpc` | Host | 
| --- | --- | --- | --- | 
| Detección de servicios | sí, pero requiere que los clientes conozcan los registros SRV en DNS sin hostPort. | sí | sí, pero requiere que los clientes conozcan los registros SRV en DNS sin hostPort. | 
| Service Connect  | sí | sí | no | 
| VPC Lattice | sí | sí | sí | 

# Uso de Service Connect para conectar los servicios de Amazon ECS con nombres abreviados
<a name="service-connect"></a>

Amazon ECS Service Connect proporciona la administración de la comunicación de servicio a servicio como configuración de Amazon ECS. Crea una detección de servicios y una malla de servicios en Amazon ECS. Esto proporciona la configuración completa de cada servicio que administra usted mediante implementaciones de servicios, una manera unificada de hacer referencia a los servicios dentro de los espacios de nombres que no depende de la configuración de DNS de VPC, y métricas y registros estandarizados para supervisar todas las aplicaciones. Service Connect solo interconecta servicios.

En el siguiente diagrama se muestra un ejemplo de red Service Connect con 2 subredes en la VPC y 2 servicios. Un servicio de cliente que ejecuta WordPress con 1 tarea en cada subred. Un servicio de servidor que ejecuta MySQL con 1 tarea en cada subred. Ambos servicios tienen una alta disponibilidad y son resilientes ante los problemas de tareas y zonas de disponibilidad, ya que cada servicio ejecuta varias tareas distribuidas en 2 subredes. Las flechas continuas muestran una conexión de WordPress a MySQL. Por ejemplo, un comando de la CLI de `mysql --host=mysql` que se ejecuta desde el interior del contenedor de WordPress en la tarea con la dirección IP `172.31.16.1`. El comando utiliza el nombre corto `mysql` en el puerto predeterminado para MySQL. Este nombre y puerto se conectan al proxy de Service Connect en la misma tarea. El proxy de la tarea de WordPress utiliza el equilibrador de carga de distribución equilibrada y cualquier información de error anterior en la detección de valores atípicos para elegir a qué tarea de MySQL conectarse. Como muestran las flechas continuas del diagrama, el proxy se conecta al segundo proxy de la tarea MySQL con la dirección IP `172.31.16.2`. El segundo proxy se conecta al servidor MySQL local en la misma tarea. Ambos proxys informan del rendimiento de la conexión, que se puede ver en los gráficos de las consolas de Amazon ECS y de Amazon CloudWatch, de modo que puede obtener métricas de rendimiento de todo tipo de aplicaciones de la misma manera.

![\[Ejemplo de red Service Connect que muestra un mínimo de servicios de alta disponibilidad\]](http://docs.aws.amazon.com/es_es/AmazonECS/latest/developerguide/images/serviceconnect.png)


Los siguientes términos se utilizan con Service Connect:

**nombre del puerto**  
La configuración de definición de tareas de Amazon ECS que asigna un nombre a una asignación de puertos determinada. Esta configuración solo la usa Amazon ECS Service Connect.

**alias de cliente**  
La configuración del servicio de Amazon ECS que asigna el número de puerto que se usa en el punto de conexión. Además, el alias del cliente puede asignar el nombre DNS del punto de conexión y anular el nombre de detección. Si no se proporciona un nombre de detección en el servicio de Amazon ECS, el nombre del alias del cliente sustituye al nombre del puerto como nombre del punto de conexión. Para ver ejemplos de puntos de conexión, consulte la definición de *punto de conexión*. Se pueden asignar varios alias de cliente a un servicio de Amazon ECS. Esta configuración solo la usa Amazon ECS Service Connect.

**nombre de detección**  
El nombre intermedio opcional que puede crear para un puerto especificado de la definición de la tarea. Este nombre se utiliza para crear un servicio de AWS Cloud Map. Si no se proporciona este nombre, se utiliza el nombre del puerto de la definición de la tarea. Se pueden asignar varios nombres de detección a un puerto específico de un servicio de Amazon ECS. Esta configuración solo la usa Amazon ECS Service Connect.  
Los nombres de servicio de AWS Cloud Map deben ser únicos en un espacio de nombres. Debido a esta limitación, solo puede tener una configuración de Service Connect sin un nombre de detección para una definición de tarea determinada en cada espacio de nombres.

**endpoint**  
La URL para conectarse a una API o un sitio web. La URL contiene el protocolo, un nombre DNS y el puerto. Para obtener más información sobre los puntos de conexión en general, consulte [punto de conexión](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#endpoint) en el *glosario de AWS* en la Referencia general de Amazon Web Services.  
Service Connect crea puntos de conexión que se conectan a los servicios de Amazon ECS y configura las tareas de los servicios de Amazon ECS para conectarse a los puntos de conexión. La URL contiene el protocolo, un nombre DNS y el puerto. Seleccione el protocolo y el nombre del puerto en la definición de la tarea, ya que el puerto debe coincidir con la aplicación que se encuentra dentro de la imagen del contenedor. En el servicio, selecciona cada puerto por nombre y puede asignar el nombre DNS. Si no especifica un nombre DNS en la configuración del servicio de Amazon ECS, se utiliza de forma predeterminada el nombre del puerto de la definición de la tarea. Por ejemplo, un punto de conexión de Service Connect podría ser `http://blog:80`, `grpc://checkout:8080` o `http://_db.production.internal:99`.

**Servicio de Service Connect**  
La configuración de un punto de conexión único en un servicio de Amazon ECS. Forma parte de la configuración de Service Connect y consiste en una sola fila en la **Service Connect and discovery name configuration** (Configuración de Service Connect y nombre de detección) de la consola, o un objeto de la lista de `services` de la configuración JSON de un servicio de Amazon ECS. Esta configuración solo la usa Amazon ECS Service Connect.  
Para obtener más información, consulte [ServiceConnectService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html) en la Referencia de la API de Amazon Elastic Container Service.

**namespace**  
El nombre corto o el nombre de recurso de Amazon (ARN) completo del espacio de nombres de AWS Cloud Map para su uso con Service Connect. El espacio de nombres debe estar en la misma Región de AWS que el servicio y el clúster de Amazon ECS. El tipo de espacio de nombres en AWS Cloud Map no afecta a Service Connect. El espacio de nombres puede ser uno compartido con su Cuenta de AWS mediante AWS Resource Access Manager (AWS RAM) en Regiones de AWS en las que AWS RAM esté disponible. Para obtener más información sobre los espacios de nombres compartidos, consulte [Cross-account AWS Cloud Map namespace sharing](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) en la *Guía para desarrolladores de AWS Cloud Map*.  
Service Connect utiliza el espacio de nombres de AWS Cloud Map como una agrupación lógica de tareas de Amazon ECS que se comunican entre sí. Cada servicio de Amazon ECS solo puede pertenecer a un espacio de nombres. Los servicios de un espacio de nombres se pueden distribuir en diferentes clústeres de Amazon ECS dentro de la misma Región de AWS. Si el espacio de nombres es un espacio de nombres compartido, los servicios se pueden distribuir entre las Cuentas de AWS del propietario del espacio de nombres y del consumidor del espacio de nombres. Puede organizar con toda libertad los servicios según cualquier criterio.

**servicio de cliente**  
Un servicio que ejecuta una aplicación cliente de red. Este servicio debe tener un espacio de nombres configurado. Cada tarea del servicio puede detectar y conectarse a todos los puntos de conexión del espacio de nombres a través de un contenedor del proxy de Service Connect.  
Si alguno de los contenedores de la tarea necesita conectarse a un punto de conexión desde un servicio de un espacio de nombres, elija un servicio de cliente. Si una aplicación de frontend, proxy inverso o equilibrador de carga recibe tráfico externo mediante otros métodos, como desde Elastic Load Balancing, podría utilizar este tipo de configuración de Service Connect.

**servicio cliente-servidor**  
Un servicio de Amazon ECS que ejecuta una aplicación de red o servicio web. Este servicio debe tener un espacio de nombres y al menos un punto de conexión configurado. Se puede acceder a cada tarea del servicio mediante los puntos de conexión. El contenedor del proxy de Service Connect escucha el nombre y el puerto del punto de conexión para dirigir el tráfico a los contenedores de aplicaciones de la tarea.  
Si alguno de los contenedores expone y escucha el tráfico de red en un puerto, elija un servicio cliente-servidor. Estas aplicaciones no necesitan conectarse a otros servicios cliente-servidor en el mismo espacio de nombres, pero la configuración del cliente es necesaria. Un backend, un middleware, un nivel empresarial o la mayoría de los microservicios pueden utilizar este tipo de configuración de Service Connect. Si desea que una aplicación de frontend, proxy inverso o equilibrador de carga reciba tráfico de otros servicios configurados con Service Connect en el mismo espacio de nombres, estos servicios deben usar este tipo de configuración de Service Connect.

La característica Service Connect crea una red virtual de servicios relacionados. Se puede usar la misma configuración de servicio en varios espacios de nombres diferentes para ejecutar conjuntos de aplicaciones independientes, pero idénticos. Service Connect define el contenedor del proxy en el servicio de Amazon ECS. De esta forma, se puede utilizar la misma definición de tarea para ejecutar aplicaciones idénticas en diferentes espacios de nombres con diferentes configuraciones de Service Connect. Cada tarea que lleva a cabo el servicio ejecuta un contenedor del proxy en la tarea.

Service Connect es adecuado para conexiones entre servicios de Amazon ECS dentro del mismo espacio de nombres. Para las siguientes aplicaciones, debe utilizar un método de interconexión adicional para conectarse a un servicio de Amazon ECS configurado con Service Connect:
+ Tareas configuradas en otros espacios de nombres
+ Tareas que no están configuradas para Service Connect
+ Otras aplicaciones fuera de Amazon ECS

Estas aplicaciones pueden conectarse a través del proxy de Service Connect, pero no pueden resolver los nombres de los puntos de conexión de Service Connect.

Para que estas aplicaciones resuelvan las direcciones IP de las tareas de Amazon ECS, debe utilizar otro método de interconexión. 

**Topics**
+ [Precios](#service-connect-pricing)
+ [Componentes de Amazon ECS Service Connect](service-connect-concepts-deploy.md)
+ [Información general de la configuración de Amazon ECS Service Connect](service-connect-concepts.md)
+ [Amazon ECS Service Connect con espacios de nombres de AWS Cloud Map compartidos](service-connect-shared-namespaces.md)
+ [Registros de acceso de Amazon ECS Service Connect](service-connect-envoy-access-logs.md)
+ [Cifrado del tráfico de Amazon ECS Service Connect](service-connect-tls.md)
+ [Configuración de Amazon ECS Service Connect con la AWS CLI](create-service-connect.md)

## Precios
<a name="service-connect-pricing"></a>
+ Los precios de Amazon ECS Service Connect dependerán de si utiliza AWS Fargate o la infraestructura de Amazon EC2 para alojar sus cargas de trabajo en contenedores. Cuando se utiliza Amazon ECS en AWS Outposts, los precios siguen el mismo modelo que cuando se utiliza Amazon EC2 directamente. Para obtener más información, consulte [Precios de Amazon ECS](https://aws.amazon.com/ecs/pricing).
+ El uso de Amazon ECS Service Connect no supone ningún cargo adicional.
+ El uso de AWS Cloud Map junto con Service Connect no supone ningún cargo adicional.
+ Los clientes pagan por los recursos de computación que utiliza Amazon ECS Service Connect, incluidas la vCPU y la memoria. Como el agente de Amazon ECS Service Connect se pone en marcha dentro de una tarea del cliente, poner en marcha no conlleva ningún cargo adicional. Los recursos de la tarea se comparten entre la carga de trabajo del cliente y el agente de Amazon ECS Service Connect.
+ Al utilizar la funcionalidad de cifrado de tráfico de Amazon ECS Service Connect con AWS Private CA, los clientes pagan por la autoridad de certificación privada que crean y por cada certificado TLS emitido. Para obtener más información, consulte [Precios de AWS Private Certificate Authority](https://aws.amazon.com/private-ca/pricing/). Para calcular el costo mensual de los certificados TLS, los clientes deben saber el número de servicios de Amazon ECS que tienen activado el TLS, multiplicarlo por el costo del certificado y, a continuación, multiplicarlo por seis. Como Amazon ECS Service Connect rota automáticamente los certificados TLS cada cinco días, se emiten seis certificados por servicio de Amazon ECS, por mes, de media.

# Componentes de Amazon ECS Service Connect
<a name="service-connect-concepts-deploy"></a>

Cuando utiliza Amazon ECS Service Connect, configura cada servicio de Amazon ECS para ejecutar una aplicación de servidor que recibe solicitudes de red (servicio cliente-servidor) o para ejecutar una aplicación cliente que hace las solicitudes (servicio de cliente).

Cuando se prepare para empezar a utilizar Service Connect, comience con un servicio cliente-servidor. Puede agregar una configuración de Service Connect a un servicio nuevo o existente. Amazon ECS crea un punto de conexión de Service Connect en el espacio de nombres. Además, Amazon ECS crea una nueva implementación en el servicio para reemplazar las tareas que se están ejecutando actualmente.

Las tareas y otras aplicaciones existentes pueden seguir conectándose a los puntos de conexión existentes y a las aplicaciones externas. Si un servicio cliente-servidor agrega tareas mediante el escalado horizontal, las nuevas conexiones de los clientes se equilibrarán entre todas las tareas. Si se actualiza un servicio cliente-servidor, las nuevas conexiones de los clientes se equilibrarán entre las tareas de la nueva versión.

Las tareas existentes no pueden resolverse ni conectarse al nuevo punto de conexión. Solo las tareas nuevas con una configuración de Service Connect en el mismo espacio de nombres y que comiencen a ejecutarse después de esta implementación pueden resolverse y conectarse a este punto de conexión. 

Esto significa que el operador de la aplicación cliente determina cuándo cambia la configuración de su aplicación, aunque el operador de la aplicación de servidor puede cambiar su configuración en cualquier momento. La lista de puntos de conexión del espacio de nombres puede cambiar cada vez que se implemente cualquier servicio del espacio de nombres. Las tareas existentes y las tareas de reemplazo siguen comportándose del mismo modo que después de la implementación más reciente.

Considere los siguientes ejemplos:

En primer lugar, suponga que está creando una aplicación que está disponible para el Internet público en una sola plantilla de AWS CloudFormation y una sola pila de CloudFormation. CloudFormation debe crear la detección pública y la accesibilidad en último lugar, incluido el servicio de cliente frontend. El servicio debe crearse en este orden para evitar un período en el que el servicio de cliente frontend se esté ejecutando y esté disponible para el público, pero el backend no lo esté. Esto evita que los mensajes de error se envíen al público durante ese periodo. En AWS CloudFormation, debe utilizar `dependsOn` para indicar a CloudFormation que no se pueden crear varios servicios de Amazon ECS en paralelo o simultáneamente. Debe agregar `dependsOn` al servicio de cliente frontend para cada servicio cliente-servidor backend al que se conecten las tareas del cliente.

En segundo lugar, suponga que existe un servicio frontend sin la configuración de Service Connect. Las tareas se conectan a un servicio de backend existente. Agregue primero una configuración de Service Connect de cliente-servidor al servicio backend, con el mismo nombre en el **DNS** o el `clientAlias` que usa el frontend. Esto crea una nueva implementación, es decir, toda la detección de restauración de la implementación o la Consola de administración de AWS, la AWS CLI, los SDK de AWS y otros métodos para revertir y restaurar el servicio de backend a la implementación y la configuración anteriores. Si está satisfecho con el rendimiento y el comportamiento del servicio de backend, agregue una configuración de Service Connect de cliente o cliente-servidor al servicio frontend. Solo las tareas de la nueva implementación utilizan el proxy de Service Connect que se agrega a esas tareas nuevas. Si tiene problemas con esta configuración, puede revertir y volver a su configuración anterior mediante la detección de restauración de la implementación o la Consola de administración de AWS, la AWS CLI, los SDK de AWS y otros métodos para revertir y restaurar el servicio de backend a la implementación y la configuración anteriores. Si utiliza otro sistema de detección de servicios basado en DNS en lugar de Service Connect, cualquier aplicación frontend o de cliente empezará a utilizar nuevos puntos de conexión y una configuración de punto de conexión modificada una vez que caduque la caché de DNS local, lo que suele tardar varias horas.

## Red
<a name="service-connect-concepts-network"></a>

De manera predeterminada, el proxy de Service Connect escucha en `containerPort` desde la asignación de puertos de la definición de la tarea. Las reglas del grupo de seguridad deben permitir el tráfico entrante a este puerto desde las subredes en las que se ejecutarán los clientes.

Incluso si establece un número de puerto en la configuración del servicio de Service Connect, esto no cambia el puerto del servicio cliente-servidor que escucha el proxy de Service Connect. Al configurar este número de puerto, Amazon ECS cambia el puerto del punto de conexión al que se conectan los servicios del cliente, en el proxy de Service Connect dentro de esas tareas. El proxy del servicio de cliente se conecta al proxy del servicio cliente-servidor mediante el `containerPort`.

Si desea cambiar el puerto que escucha el proxy de Service Connect, cambie `ingressPortOverride` en la configuración de Service Connect del servicio cliente-servidor. Si cambia este número de puerto, debe permitir el tráfico entrante en este puerto que utiliza el tráfico hacia este servicio.

El tráfico que sus aplicaciones envían a los servicios de Amazon ECS configurados para Service Connect requiere que Amazon VPC y las subredes cuenten con reglas de tabla de enrutamiento y reglas de ACL de red que permitan los números de puerto `containerPort` y `ingressPortOverride` que está utilizando.

 Puede utilizar Service Connect para enviar tráfico entre las VPC. Los mismos requisitos para las reglas de la tabla de enrutamiento, las ACL de red y los grupos de seguridad se aplican a ambas VPC.

Por ejemplo, dos clústeres crean tareas en diferentes VPC. Un servicio de cada clúster está configurado para usar el mismo espacio de nombres. Las aplicaciones de estos dos servicios pueden resolver todos los puntos de conexión del espacio de nombres sin ninguna configuración de DNS de VPC. Sin embargo, los proxies no se pueden conectar a menos que el emparejamiento de VPC, las tablas de enrutamiento de subredes o VPC, y las ACL de red de VPC permitan el tráfico en los números de puerto `containerPort` y `ingressPortOverride`.

Para las tareas que utilizan el modo de red `bridge`, debe crear un grupo de seguridad con una regla de entrada que permita el tráfico en el rango superior de puertos dinámicos. A continuación, asigne el grupo de seguridad a todas las instancias EC2 del clúster de Service Connect.

## Proxy de Service Connect
<a name="service-connect-concepts-proxy"></a>

Si crea o actualiza un servicio con la configuración de Service Connect, Amazon ECS agrega un contenedor nuevo a cada tarea nueva a medida que se inicia. Este patrón de uso de un contenedor independiente se denomina `sidecar`. Este contenedor no está presente en la definición de la tarea y no puede configurarlo. Amazon ECS administra la configuración de este contenedor en el servicio. Esto le permite reutilizar las mismas definiciones de tareas entre varios servicios, espacios de nombres y tareas sin Service Connect.

**Recursos de proxy**
+ Para las definiciones de tareas, debe establecer los parámetros de la CPU y la memoria. 

  Recomendamos agregar 256 unidades de CPU adicionales y al menos 64 MiB de memoria a la memoria y la CPU de la tarea del contenedor del proxy de Service Connect. En AWS Fargate, la cantidad mínima de memoria que puede configurar es de 512 MiB. En Amazon EC2, es necesaria la memoria de definición de tareas.
+ Para el servicio, se establece la configuración del registro en la configuración de Service Connect.
+ Si espera que las tareas de este servicio reciban más de 500 solicitudes por segundo en su carga máxima, le recomendamos agregar 512 unidades de CPU a la CPU de tareas en esta definición de tareas para el contenedor del proxy de Service Connect.
+ Si espera crear más de 100 servicios de Service Connect en el espacio de nombres o 2000 tareas en total en todos los servicios de Amazon ECS dentro del espacio de nombres, le recomendamos agregar 128 MiB de memoria a la memoria de tareas para el contenedor del proxy de Service Connect. Debe hacerlo en todas las definiciones de tareas que utilicen todos los servicios de Amazon ECS del espacio de nombres.

**Configuración del proxy**  
Sus aplicaciones se conectan al proxy del contenedor sidecar en la misma tarea en la que se encuentra la aplicación. Amazon ECS configura la tarea y los contenedores para que las aplicaciones solo se conecten al proxy cuando la aplicación se conecta a los nombres de los puntos de conexión en el mismo espacio de nombres. El resto del tráfico no utiliza el proxy. El resto del tráfico incluye direcciones IP en la misma VPC, puntos de conexión de servicios de AWS y tráfico externo.

**Equilibrio de carga**  
Service Connect configura el proxy para que utilice la estrategia de distribución equilibrada para equilibrar la carga entre las tareas en un punto de conexión de Service Connect. El proxy local que se encuentra en la tarea desde la que proviene la conexión selecciona una de las tareas del servicio cliente-servidor que proporciona el punto de conexión.  
Por ejemplo, consideremos una tarea que ejecuta WordPress en un servicio configurado como *servicio de cliente* en un espacio de nombres llamado *local*. Hay otro servicio con 2 tareas que ejecuta la base de datos MySQL. Este servicio está configurado para proporcionar un punto de conexión llamado `mysql` a través de Service Connect en el mismo espacio de nombres. En la tarea de WordPress, la aplicación de WordPress se conecta a la base de datos mediante el nombre del punto de conexión. Las conexiones con este nombre van al proxy que se ejecuta en un contenedor asociado en la misma tarea. A continuación, el proxy puede conectarse a cualquiera de las tareas de MySQL mediante la estrategia de distribución equilibrada.  
Estrategias de equilibrio de carga: distribución equilibrada

**Detección de valores atípicos**  
Esta característica utiliza los datos que el proxy tiene sobre conexiones con errores anteriores para evitar enviar nuevas conexiones a los hosts que tenían las conexiones con errores. Service Connect configura la característica de detección de valores atípicos del proxy para proporcionar comprobaciones de estado pasivas.  
Con el ejemplo anterior, el proxy puede conectarse a cualquiera de las tareas de MySQL. Si el proxy realizó varias conexiones a una tarea de MySQL específica y 5 o más de las conexiones fallaron en los últimos 30 segundos, el proxy evita esa tarea de MySQL durante 30 a 300 segundos.

**Reintentos**  
Service Connect configura el proxy para volver a intentar la conexión que pasa por el proxy y falla, y el segundo intento evita usar el host de la conexión anterior. Esto garantiza que cada conexión a través de Service Connect no tenga errores por motivos puntuales.  
Número de reintentos: 2

**Tiempo de espera**  
Service Connect configura el proxy para que espere un tiempo máximo a que respondan las aplicaciones cliente-servidor. El valor de tiempo de espera predeterminado es de 15 segundos, pero se puede actualizar.  
Parámetros opcionales:  
**idleTimeout**: el tiempo en segundos que una conexión permanece activa mientras está inactiva. Un valor de `0` deshabilita `idleTimeout`.  
El `idleTimeout` predeterminado de `HTTP`/`HTTP2`/`GRPC` es 5 minutos.  
El `idleTimeout` predeterminado de `TCP` es una hora.  
**perRequestTimeout**: el tiempo que se tarda en esperar a que el remitente responda con una respuesta completa por solicitud. El valor `0` desactiva `perRequestTimeout`. Esto solo se puede configurar cuando `appProtocol` del contenedor de la aplicación es `HTTP`, `HTTP2` o `GRPC`. El valor predeterminado es de 15 segundos.  
Si `idleTimeout` se establece en un tiempo inferior a `perRequestTimeout`, la conexión se cerrará cuando `idleTimeout` se alcance y no el `perRequestTimeout`.

## Consideraciones
<a name="service-connect-considerations"></a>

Cuando utilice Service Connect, tenga en cuenta lo siguiente:
+ Las tareas que se ejecutan en Fargate deben utilizar la versión `1.4.0` o superior de la plataforma de Fargate Linux para utilizar Service Connect.
+ La versión del agente de Amazon ECS en la instancia de contenedor debe ser `1.67.2` o una superior.
+ Las instancias de contenedor deben ejecutar la versión AMI de Amazon Linux 2023 optimizada para Amazon ECS `20230428` o una posterior o la versión AMI de Amazon Linux 2 optimizada para Amazon ECS `2.0.20221115` para utilizar Service Connect. Estas versiones tienen el agente de Service Connect además del agente de contenedor de Amazon ECS. Para obtener más información sobre el agente de ECS, consulte [Agente de Service Connect de Amazon ECS](https://github.com/aws/amazon-ecs-service-connect-agent) en GitHub.
+ Las instancias de contenedor deben tener el permiso `ecs:Poll` para el recurso `arn:aws:ecs:region:0123456789012:task-set/cluster/*`. Si utiliza `ecsInstanceRole`, no es necesario que agregue permisos adicionales. La política administrada `AmazonEC2ContainerServiceforEC2Role` tiene los permisos necesarios. Para obtener más información, consulte [Rol de IAM de instancia de contenedor de Amazon ECS](instance_IAM_role.md).
+ Las tareas que usan el modo de red `bridge` y utilizan Service Connect no admiten el parámetro de definición de contenedor `hostname`.
+ Las definiciones de tareas deben establecer el límite de memoria de tareas para usar Service Connect. Para obtener más información, consulte [Proxy de Service Connect](#service-connect-concepts-proxy).
+ No se admiten las definiciones de tareas que establezcan límites de memoria de contenedores.

  Puede establecer límites de memoria de contenedores en sus contenedores, pero debe establecer el límite de memoria de tareas en un número mayor que la suma de los límites de memoria del contenedor. El contenedor del proxy de Service Connect y otros contenedores que no establecen límites de contenedores utilizan la CPU y la memoria adicionales de los límites de tareas que no están asignadas en los límites de contenedores. Para obtener más información, consulte [Proxy de Service Connect](#service-connect-concepts-proxy).
+ Puede configurar Service Connect para utilizar cualquier espacio de nombres de AWS Cloud Map de la misma región que esté en la misma Cuenta de AWS o se comparta con su Cuenta de AWS mediante AWS Resource Access Manager. Para obtener más información acerca del uso de espacios de nombres compartidos, consulte [Amazon ECS Service Connect con espacios de nombres de AWS Cloud Map compartidos](service-connect-shared-namespaces.md).
+ Cada servicio puede pertenecer a un solo espacio de nombres.
+ Solo se admiten las tareas que crean los servicios. 
+ Todos los puntos de conexión deben ser únicos dentro de un espacio de nombres.
+ Todos los nombres de detección deben ser únicos dentro de un espacio de nombres.
+ Debe volver a implementar los servicios existentes para que las aplicaciones puedan resolver nuevos puntos de conexión. Los puntos de conexión nuevos que se agreguen al espacio de nombres después de la implementación más reciente no se agregarán a la configuración de la tarea. Para obtener más información, consulte [Componentes de Amazon ECS Service Connect](#service-connect-concepts-deploy).
+ Service Connect no elimina los espacios de nombres cuando se eliminan los clústeres. Debe eliminar los espacios de nombres en AWS Cloud Map.
+ El tráfico del Equilibrador de carga de aplicación se dirige de forma predeterminada a través del agente Service Connect en el modo de red `awsvpc`. Si desea que el tráfico no relacionado con el servicio omita el agente de Service Connect, utilice el parámetro `[ingressPortOverride](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html)` en la configuración del servicio de Service Connect.
+ Service Connect con TLS no admite el modo de red `bridge`. Solo se admite el modo de red `awsvpc`.
+ En el modo `awsvpc`, el proxy de Service Connect reenvía el tráfico al host local de IPv4 `127.0.0.1` para los servicios en configuraciones de doble pila y solo IPv4. En el caso de los servicios en una configuración de solo IPv6, el proxy reenvía el tráfico al host local de IPv6 `::1`. Recomendamos configurar las aplicaciones para que escuchen ambos hosts locales para evitar problemas cuando un servicio se actualice de una configuración de solo IPv4 o de doble pila a una configuración de solo IPv6. Para obtener más información, consulte [Opciones de red de tareas de Amazon ECS para EC2](task-networking.md) y [Opciones de red de tareas de Amazon ECS para Fargate](fargate-task-networking.md).

**Service Connect no admite lo siguiente:**
+ Contenedores de Windows
+ HTTP 1.0
+ Tareas independientes
+ Servicios que utilizan los tipos de implementación azul/verde impulsada por CodeDeploy y la implementación externa
+ Service Connect no admite la instancia de contenedor `External` para Amazon ECS Anywhere.
+ PPv2
+ Modo FIPS

# Información general de la configuración de Amazon ECS Service Connect
<a name="service-connect-concepts"></a>

Cuando se utiliza Service Connect, hay parámetros que se deben configurar en los recursos. 

En la siguiente tabla se describen los parámetros de configuración de los recursos de Amazon ECS.


| Ubicación de parámetros | Tipo de aplicación | Descripción | Obligatorio | 
| --- | --- | --- | --- | 
| Definición de tarea | Cliente | No hay cambios disponibles para Service Connect en las definiciones de tareas del cliente. | N/A | 
| Definición de tarea | Cliente-servidor | Los servidores deben agregar campos name a los puertos en las portMappings de los contenedores. Para obtener más información, consulte [portMappings](task_definition_parameters.md#ContainerDefinition-portMappings) | Sí | 
| Definición de tarea | Cliente-servidor | De manera opcional, los servidores pueden proporcionar un protocolo de aplicación (por ejemplo, HTTP) para recibir métricas específicas del protocolo para sus aplicaciones de servidor (por ejemplo, HTTP 5xx). | No | 
| Definición de servicio | Cliente | Los servicios de cliente deben agregar una serviceConnectConfiguration para configurar el espacio de nombres al cual unirse. Este espacio de nombres debe contener todos los servicios de servidor que este servicio debe detectar. Para obtener más información, consulte [serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration). | Sí | 
| Definición de servicio | Cliente-servidor | Los servicios del servidor deben agregar una serviceConnectConfiguration para configurar los nombres DNS, los números de puerto y el espacio de nombres desde los que está disponible el servicio. Para obtener más información, consulte [serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration). | Sí | 
| Clúster | Cliente | Los clústeres pueden agregar un espacio de nombres de Service Connect predeterminado. Los nuevos servicios del clúster heredan el espacio de nombres cuando Service Connect se configura en un servicio.  | No | 
| Clúster | Cliente-servidor | No hay cambios disponibles para Service Connect en los clústeres que aplican a los servicios del servidor. Las definiciones y los servicios de las tareas del servidor deben establecer la configuración correspondiente. | N/A | 

**Descripción general de los pasos para configurar Service Connect**  
En los siguientes pasos se proporciona información general sobre cómo configurar Service Connect.

**importante**  
 Service Connect crea servicios de AWS Cloud Map en la cuenta. La modificación de estos recursos AWS Cloud Map mediante el registro o la anulación del registro manual de las instancias, el cambio de los atributos de la instancia o la eliminación de un servicio puede provocar un comportamiento inesperado en el tráfico de las aplicaciones o en las implementaciones posteriores.
 Service Connect no admite enlaces en la definición de la tarea.

1. Agregue los nombres de los puertos a las asignaciones de puertos en las definiciones de las tareas. Además, puede identificar el protocolo de capa 7 de la aplicación para obtener métricas adicionales.

1. Cree un clúster con un espacio de nombres de AWS Cloud Map, use un espacio de nombres compartido o cree el espacio de nombres por separado. Para una organización sencilla, cree un clúster con el nombre que desea para el espacio de nombres y especifique un nombre idéntico para el espacio de nombres. En este caso, Amazon ECS crea un nuevo espacio de nombres HTTP con la configuración necesaria. Service Connect no utiliza ni crea zonas alojadas de DNS en Amazon Route 53.

1. Configure los servicios para crear puntos de conexión de Service Connect dentro del espacio de nombres.

1. Implemente los servicios para crear los puntos de conexión. Amazon ECS agrega un contenedor del proxy de Service Connect a cada tarea y crea los puntos de conexión de Service Connect en AWS Cloud Map. Este contenedor no está configurado en la definición de la tarea y la definición de la tarea se puede reutilizar sin modificaciones para crear varios servicios en el mismo espacio de nombres o en varios espacios de nombres.

1. Implemente aplicaciones cliente como servicios para conectarse a los puntos de conexión. Amazon ECS los conecta a los puntos de conexión de Service Connect a través del proxy de Service Connect en cada tarea.

   Las aplicaciones solo utilizan el proxy para conectarse a los puntos de conexión de Service Connect. No hay ninguna configuración adicional para utilizar el proxy. El proxy realiza el equilibrio de cargas de distribución equilibrada, la detección de valores atípicos y los reintentos. Para obtener más información sobre el proxy, consulte [Proxy de Service Connect](service-connect-concepts-deploy.md#service-connect-concepts-proxy).

1. Monitoree el tráfico a través del proxy de Service Connect en Amazon CloudWatch.

## Configuración del clúster
<a name="service-connect-concepts-cluster-defaults"></a>

Puede establecer un espacio de nombres predeterminado para Service Connect cuando crea o actualiza el clúster. El nombre del espacio de nombres que especifique de forma predeterminada puede estar en la misma Región de AWS y en la misma cuenta o en la misma Región de AWS y compartida por otra Cuenta de AWS mediante AWS Resource Access Manager.

Si crea un clúster y especifica un espacio de nombres de Service Connect predeterminado, el clúster espera en estado `PROVISIONING` mientras Amazon ECS crea el espacio de nombres. Puede ver una `attachment` en el estado del clúster que muestra el estado del espacio de nombres. Las conexiones no se muestran de forma predeterminada en la AWS CLI, debe agregar `--include ATTACHMENTS` para verlos.

Si desea utilizar un espacio de nombres compartido con su Cuenta de AWS mediante AWS RAM, especifique el nombre de recurso de Amazon (ARN) del espacio de nombres en la configuración del clúster. Para obtener más información acerca de los espacios de nombres de AWS Cloud Map compartidos, consulte [Amazon ECS Service Connect con espacios de nombres de AWS Cloud Map compartidos](service-connect-shared-namespaces.md).

## Configuración del servicio
<a name="service-connect-concepts-config"></a>

Service Connect está diseñado para requerir la configuración mínima. Debe establecer un nombre para cada asignación de puertos que desee utilizar con Service Connect en la definición de la tarea. En el servicio, debe activar Service Connect y seleccionar un espacio de nombres de su Cuenta de AWS o un espacio de nombres compartido para crear un servicio de cliente. Para crear un servicio cliente-servidor, debe agregar una configuración del servicio Service Connect única que coincida con el nombre de una de las asignaciones de puertos. Amazon ECS reutiliza el número de puerto y el nombre del puerto de la definición de la tarea para definir el servicio y el punto de conexión de Service Connect. Para anular esos valores, puede utilizar los demás parámetros **Detección**, **DNS** y **Puerto** en la consola o `discoveryName` y `clientAliases`, respectivamente, en la API de Amazon ECS.

## Configuración de la comprobación de estado inicial
<a name="service-connect-concepts-health-check"></a>

Service Connect se asegura de que las tareas estén en buen estado antes de enrutar el tráfico hacia ellas. Cuando se inicializa una tarea (durante las implementaciones, el escalado o las sustituciones), Service Connect supervisa el estado de la tarea para asegurarse de que esté lista para aceptar el tráfico. Debe definir comprobaciones de estado para el contenedor esencial en la definición de la tarea a fin de habilitar este comportamiento.

El comportamiento de la comprobación de estado inicial tiene en cuenta los posibles retrasos a la hora de alcanzar el estado en el que una tarea está lista para aceptar tráfico:
+ Si una tarea tiene el estado `HEALTHY`, significa que está inmediatamente disponible para el tráfico.
+ Si el estado de una tarea es `UNKNOWN`, Service Connect sigue la configuración de la comprobación de estado del contenedor (consulte [Comprobación de estado](task_definition_parameters.md#container_definition_healthcheck)) de los contenedores esenciales de la tarea para calcular el tiempo de espera, hasta `8 minutes`, antes de ponerlo a disposición del tráfico, incluso si permanece en el estado `UNKNOWN`.
+ Si una tarea es `UNHEALTHY`, Amazon ECS puede iniciar tareas de reemplazo. Si no hay ninguna tarea en buen estado disponible, la implementación podría revertirse en función de la configuración del servicio.

Para todo el tráfico continuo, Service Connect utiliza comprobaciones de estado pasivas basadas en la detección de valores atípicos para enrutar el tráfico de manera eficiente.

# Amazon ECS Service Connect con espacios de nombres de AWS Cloud Map compartidos
<a name="service-connect-shared-namespaces"></a>

Amazon ECS Service Connect admite el uso de espacios de nombres de AWS Cloud Map compartidos entre varias Cuentas de AWS dentro de la misma Región de AWS. Esta capacidad le permite crear aplicaciones distribuidas en las que los servicios que se ponen en marcha en diferentes Cuentas de AWS pueden detectarse y comunicarse entre sí a través de Service Connect. Los espacios de nombres compartidos se administran mediante AWS Resource Access Manager (AWS RAM), lo que permite compartir recursos entre cuentas de forma segura. Para obtener más información sobre los espacios de nombres compartidos, consulte [Cross-account AWS Cloud Map namespace sharing](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) en la *Guía para desarrolladores de AWS Cloud Map*.

**importante**  
Debe usar el permiso administrado `AWSRAMPermissionCloudMapECSFullPermission` para compartir el espacio de nombres para que Service Connect funcione correctamente con el espacio de nombres.

Cuando usa espacios de nombres de AWS Cloud Map compartidos con Service Connect, los servicios de varias Cuentas de AWS pueden participar en el mismo espacio de nombres del servicio. Esto resulta especialmente útil para las organizaciones con varias Cuentas de AWS que tienen que mantener la comunicación entre servicios a través de los límites de las cuentas y, al mismo tiempo, preservar la seguridad y el aislamiento.

**nota**  
Para comunicarse con los servicios que se encuentran en diferentes VPC, deberá configurar la conectividad entre VPC. Esto se puede lograr mediante una conexión de emparejamiento de VPC. Para obtener más información, consulte [Creación o eliminación de una interconexión de VPC](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) en la *Guía de emparejamiento de VPC de Amazon Virtual Private Cloud*.

# Uso de espacios de nombres de AWS Cloud Map compartidos con Amazon ECS Service Connect
<a name="service-connect-shared-namespaces-setup"></a>

La configuración de los AWS Cloud Map espacios de nombres compartidos para Service Connect implica los siguientes pasos: el propietario del espacio de nombres crea el espacio de nombres, el propietario lo comparte mediante AWS Resource Access Manager (AWS RAM), el consumidor acepta el recurso compartido y el consumidor configura Service Connect para usar el espacio de nombres compartido.

## Paso 1: Creación del espacio de nombres de AWS Cloud Map
<a name="service-connect-shared-namespaces-create"></a>

El propietario del espacio de nombres crea un espacio de nombres de AWS Cloud Map que se compartirá con otras cuentas.

**Creación de un espacio de nombres para compartirlo mediante Consola de administración de AWS**

1. Abra la consola de AWS Cloud Map en [https://console.aws.amazon.com/cloudmap/](https://console.aws.amazon.com/cloudmap/).

1. Elija **Crear espacio de nombres**.

1. Introduzca un nombre en **Nombre del espacio de nombres**. Los servicios de todas las cuentas participantes utilizarán este nombre.

1. En **Tipo de espacio de nombres**, elija el tipo adecuado para su caso de uso:
   + **Llamadas a la API**: espacios de nombres HTTP para la detección de servicios sin funcionalidad de DNS.
   + **Llamadas a la API y consultas de DNS en las VPC**: espacios de nombres de DNS privados para la detección de servicios con consultas de DNS privadas en una VPC.
   + **Llamadas a la API y consultas de DNS públicas**: espacios de nombres de DNS públicos para la detección de servicios con consultas de DNS públicas.

1.  Elija **Crear espacio de nombres**.

## Paso 2: Uso compartido del espacio de nombres con AWS RAM
<a name="service-connect-shared-namespaces-share"></a>

El propietario del espacio de nombres utiliza AWS RAM para compartir el espacio de nombres con otras Cuentas de AWS.

**Uso compartido de un espacio de nombres mediante la consola de AWS RAM**

1. Abra la consola de AWS RAM en [https://console.aws.amazon.com/ram/](https://console.aws.amazon.com/ram/).

1. Elija **Crear recurso compartido**.

1. En **Nombre**, introduzca un nombre descriptivo para el recurso compartido.

1. En la sección **Recursos**:

   1. En **Tipo de recurso**, seleccione **Espacios de nombres de Cloud Map**.

   1. Seleccione el espacio de nombres que creó en el paso anterior.

1. En la sección **Permisos administrados**, especifique **AWSRAMPermissionCloudMapECSFullPermission**.
**importante**  
Debe usar el permiso administrado `AWSRAMPermissionCloudMapECSFullPermission` para compartir el espacio de nombres para que Service Connect funcione correctamente con el espacio de nombres.

1. En la sección **Entidades principales**, especifique las Cuentas de AWS con las que desea compartir el espacio de nombres. Puede introducir ID de cuenta o ID de unidad organizativa.

1. Elija **Crear recurso compartido**.

## Paso 3: Aceptación del recurso compartido
<a name="service-connect-shared-namespaces-accept"></a>

Las cuentas de consumidor del espacio de nombres deben aceptar la invitación del recurso compartido para usar el espacio de nombres compartido.

**Aceptación de la invitación del recurso compartido mediante la consola de AWS RAM**

1. En la cuenta de consumidor, abra la consola de AWS RAM en [https://console.aws.amazon.com/ram/](https://console.aws.amazon.com/ram/).

1. En el panel de navegación, elija **Compartidos conmigo** y, a continuación, seleccione **Recursos compartidos**.

1. Seleccione la invitación del recurso compartido y elija **Aceptar el recurso compartido**.

1. Tras aceptar, anote el ARN del espacio de nombres compartido que se indica en los detalles del recurso. Utilizará este ARN al configurar los servicios de Service Connect.

## Paso 4: Configuración de un servicio de Amazon ECS con el espacio de nombres compartido
<a name="service-connect-shared-namespaces-configure"></a>

Tras aceptar el espacio de nombres compartido, el consumidor del espacio de nombres puede configurar los servicios de Amazon ECS para que usen el espacio de nombres compartido. La configuración es similar a usar un espacio de nombres normal, pero debe especificar el ARN del espacio de nombres en lugar del nombre. Para ver un procedimiento detallado de creación de servicios, consulte [Creación de una implementación de actualización continua de Amazon ECS](create-service-console-v2.md).

**Creación de un servicio con un espacio de nombres compartido mediante la Consola de administración de AWS**

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En la página **Clústeres**, seleccione el clúster en el que desea crear el servicio.

1. En **Servicios**, seleccione **Crear**.

1. Tras rellenar otros detalles en función de la carga de trabajo, en la sección **Service Connect**, seleccione **Usar Service Connect**.

1. En **Espacio de nombres**, introduzca el ARN completo del espacio de nombres compartido.

   El formato del ARN es: `arn:aws:servicediscovery:region:account-id:namespace/namespace-id`

1. Configure el resto de los ajustes de Service Connect según sea necesario para su tipo de servicio (cliente o cliente-servidor).

1. Complete el proceso de creación del servicio.

También puede configurar los servicios mediante la AWS CLI o los SDK de AWSespecificando el ARN del espacio de nombres compartido en el parámetro `namespace` de `serviceConnectConfiguration`.

```
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-task-def \
    --service-connect-configuration '{
        "enabled": true,
        "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-abcdef1234567890",
        "services": [{
            "portName": "web",
            "discoveryName": "my-service",
            "clientAliases": [{
                "port": 80,
                "dnsName": "my-service"
            }]
        }]
    }'
```

## Consideraciones
<a name="service-connect-shared-namespaces-considerations"></a>

Cuando utilice espacios de nombres de AWS Cloud Map compartidos con Service Connect, tenga en cuenta lo siguiente:
+ AWS RAM debe estar disponible en la Región de AWS en la que desee utilizar el espacio de nombres compartido.
+ El espacio de nombres compartido debe estar en la misma Región de AWS que los servicios y clústeres de Amazon ECS.
+ Debe usar el ARN del espacio de nombres, no el ID, al configurar Service Connect con un espacio de nombres compartido.
+ Se admiten todos los tipos de espacios de nombres: HTTP, DNS privado y DNS público.
+ Si se revoca el acceso a un espacio de nombres compartido, se producirá un error en las operaciones de Amazon ECS que necesiten la interacción con el espacio de nombres (como `CreateService`, `UpdateService` y `ListServicesByNamespace`) fallarán. Para obtener más información sobre cómo solucionar problemas relacionados con los permisos con espacios de nombres compartidos, consulte [Solución de problemas de Amazon ECS Service Connect con espacios de nombres de AWS Cloud Map compartidos](service-connect-shared-namespaces-troubleshooting.md).
+ Para la detección de servicios mediante consultas de DNS en un espacio de nombres de DNS privado compartido, siga estos pasos:
  + El propietario del espacio de nombres tendrá que llamar a `create-vpc-association-authorization` con el ID de la zona alojada privada asociada al espacio de nombres y la VPC del consumidor.

    ```
    aws route53 create-vpc-association-authorization --hosted-zone-id Z1234567890ABC --vpc VPCRegion=us-east-1,VPCId=vpc-12345678
    ```
  + El consumidor del espacio de nombres tendrá que llamar a `associate-vpc-with-hosted-zone` con el ID de la zona alojada privada.

    ```
    aws route53 associate-vpc-with-hosted-zone --hosted-zone-id Z1234567890ABC --vpc VPCRegion=us-east-1,VPCId=vpc-12345678
    ```
+ Solo el propietario del espacio de nombres puede administrar el recurso compartido.
+ Los consumidores del espacio de nombres pueden crear y administrar servicios dentro del espacio de nombres compartido, pero no pueden modificar el espacio de nombres en sí.
+ Los nombres de detección deben ser únicos dentro del espacio de nombres compartido, independientemente de la cuenta que cree el servicio.
+ Los servicios del espacio de nombres compartido pueden detectar servicios de otras cuentas de AWS que tengan acceso al espacio de nombres y conectarse a ellos.
+ Al habilitar TLS para Service Connect y usar un espacio de nombres compartido, la autoridad de certificación (CA) de AWS Private CA se limita al espacio de nombres. Cuando se revoca el acceso al espacio de nombres compartido, se detiene el acceso a la CA.
+ Al trabajar con un espacio de nombres compartido, los propietarios y los consumidores del espacio de nombres no tienen acceso a las métricas de varias cuentas de Amazon CloudWatch de forma predeterminada. Las métricas de destino solo se publican para las cuentas que tienen servicios cliente. Las cuenta que son propietarias de servicios cliente no tienen acceso a las métricas que reciben las cuenta que son propietarias de servicios cliente-servidor, y viceversa. Para permitir el acceso entre cuentas a las métricas, configure la observabilidad entre cuentas de CloudWatch. Para obtener más información sobre cómo configurar la observabilidad entre cuentas, consulte [Observabilidad entre cuentas de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) en la *Guía del usuario de Amazon CloudWatch*. Para obtener más información acerca de las métricas de CloudWatch para Service Connect, consulte [Métricas de CloudWatch de Amazon ECS](available-metrics.md).

# Solución de problemas de Amazon ECS Service Connect con espacios de nombres de AWS Cloud Map compartidos
<a name="service-connect-shared-namespaces-troubleshooting"></a>

Utilice la siguiente información para solucionar problemas con los espacios de nombres de AWS Cloud Map compartidos y Service Connect. Para obtener más información sobre la localización de los mensajes de error, consulte [Solución de problemas de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html).

Los mensajes de error relacionados con problemas de permisos aparecen porque faltan permisos o si se ha revocado el acceso al espacio de nombres. 

**importante**  
Debe usar el permiso administrado `AWSRAMPermissionCloudMapECSFullPermission` para compartir el espacio de nombres para que Service Connect funcione correctamente con el espacio de nombres.

El mensaje de error aparece en uno de los siguientes formatos:

Se produjo un error (ClientException) al llamar a la operación <OperationName>: el usuario: arn:aws:iam::<account-id>:user/<user-name> no está autorizado para realizar: <ActionName> en el recurso: <ResourceArn> porque no hay ninguna política basada en recursos que permita la acción <ActionName>

Los escenarios siguientes pueden dar lugar a un mensaje de error en este formato:

**Error al crear o actualizar el clúster**  
Estos problemas se produce cuando surge un error en operaciones de Amazon ECS como `CreateCluster` o `UpdateCluster` debido a la falta de permisos de AWS Cloud Map. Las operaciones necesitan permisos para las siguientes acciones de AWS Cloud Map:  
+ `servicediscovery:GetNamespace`
Asegúrese de que la invitación del recurso compartido se haya aceptado en la cuenta del consumidor y de que en la configuración de Service Connect se utilice el ARN del espacio de nombres correcto.

**Error al crear o actualizar el servicio**  
Estos problemas se produce cuando surge un error en operaciones de Amazon ECS como `CreateService` o `UpdateService` debido a la falta de permisos de AWS Cloud Map. Las operaciones necesitan permisos para las siguientes acciones de AWS Cloud Map:  
+ `servicediscovery:CreateService`
+ `servicediscovery:GetNamespace`
+ `servicediscovery:GetOperation` (para crear un nuevo servicio de AWS Cloud Map)
+ `servicediscovery:GetService` (para cuando ya existe un servicio de AWS Cloud Map)
Asegúrese de que la invitación del recurso compartido se haya aceptado en la cuenta del consumidor y de que en la configuración de Service Connect se utilice el ARN del espacio de nombres correcto.

**`ListServicesByNamespace` Error en la operación**  
Este problema surge cuando se produce un error en la operación `ListServicesByNamespace` de Amazon ECS. La operación necesita permisos para las siguientes acciones de AWS Cloud Map:  
+ `servicediscovery:GetNamespace`
Para resolver este problema, siga estos pasos:  
+ Compruebe que la cuenta del consumidor tenga el permiso `servicediscovery:GetNamespace`.
+ Use el ARN del espacio de nombres al llamar a la API, no el nombre.
+ Asegúrese de que el recurso compartido esté activo y de que se haya aceptado la invitación.

El usuario: <iam-user> no está autorizado para realizar: <ActionName> en el recurso: <ResourceArn> con una denegación explícita en una política basada en la identidad.

Los escenarios siguientes pueden dar lugar a un mensaje de error en este formato:

**Se produce un error al eliminar el servicio y se queda bloqueado en el estado `DRAINING`**  
Este problema surge cuando se produce un error en las operaciones `DeleteService` de Amazon ECS debido a la falta del permiso `servicediscovery:DeleteService` cuando se revoca el acceso al espacio de nombres. Al principio puede parecer que el servicio se ha eliminado correctamente, pero se quedará bloqueado en el estado `DRAINING`. El mensaje de error aparece como un evento del servicio de Amazon ECS.  
Para resolver este problema, el propietario del espacio de nombres debe compartir el espacio de nombres con la cuenta del consumidor para permitir que se complete la eliminación del servicio.

**Las tareas del servicio no se pueden poner en marcha**  
Este problema se produce cuando las tareas no se inician debido a la falta de permisos. El mensaje de error aparece como un error de tarea detenida. Para obtener más información, consulte [Solución de los errores de las tareas detenidas de Amazon ECS](resolve-stopped-errors.md).  
Se necesitan las siguientes acciones de AWS Cloud Map para poner en marcha una tarea:  
+ `servicediscovery:GetOperation`
+ `servicediscovery:RegisterInstance`
Asegúrese de que la cuenta del consumidor tenga los permisos necesarios y de que se pueda acceder al espacio de nombres compartido.

**Las tareas no se detienen correctamente o se quedan bloqueadas en el estado `DEACTIVATING` o `DEPROVISIONING`**  
Este problema se produce cuando no se puede anular el registro de las tareas del servicio de AWS Cloud Map durante el cierre debido a la falta de permisos. El error aparece como `statusReason` en el adjunto de la tarea que se puede recuperar mediante la API `DescribeTasks`. Para obtener más información, consulte [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) en la *Referencia de la API de Amazon Elastic Container Service*.  
Se necesitan las siguientes acciones de AWS Cloud Map para detener una tarea:  
+ `servicediscovery:DeregisterInstance`
+ `servicediscovery:GetOperation`
Si se revoca el acceso al espacio de nombres compartido, las tareas pueden permanecer en un estado `DEACTIVATING` o `DEPROVISIONING` hasta que se restablezca el acceso al espacio de nombres. Solicite al propietario del espacio de nombres que restablezca el acceso al espacio de nombres.

# Registros de acceso de Amazon ECS Service Connect
<a name="service-connect-envoy-access-logs"></a>

Amazon ECS Service Connect es compatible con los registros de acceso para proporcionar telemetría detallada sobre las solicitudes individuales procesadas por el proxy de Service Connect. Los registros de acceso complementan los registros de aplicaciones existentes al capturar metadatos de tráfico por solicitud, como los métodos HTTP, las rutas, los códigos de respuesta, los indicadores y la información de temporización. Esto brinda una observabilidad más detallada de los patrones de tráfico a nivel de las solicitudes y las interacciones de los servicios para una resolución de problemas y una supervisión eficaces.

Para habilitar los registros de acceso, especifique los objetos `logConfiguration` y `accessLogConfiguration` del objeto `serviceConnectConfiguration`. Puede configurar el formato de los registros y si los registros deben incluir parámetros de consulta en `accessLogConfiguration`. El controlador de registro especificado en `logConfiguration` entrega los registros al grupo de registro de destino.

```
{
    "serviceConnectConfiguration": {
        "enabled": true,
        "namespace": "myapp.namespace",
        "services": [
            ...
        ],
        "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
                "awslogs-group": "my-envoy-log-group",
                "awslogs-region": "us-west-2",
                "awslogs-stream-prefix": "myapp-envoy-logs"
            }
        },
         "accessLogConfiguration": {
            "format": "TEXT",
            "includeQueryParameters": "ENABLED" 
        }
    }
}
```

## Consideraciones
<a name="service-connect-envoy-access-logs-considerations"></a>

Tenga en cuenta lo siguiente cuando habilite el acceso a los registros de acceso:
+ Tanto los registros de acceso como los registros de aplicación se escriben en `/dev/stdout`. Para separar los registros de acceso de los registros de aplicación, se recomienda utilizar el controlador de registro `awsfirelens` con una configuración Fluent Bit o Fluentd personalizada.
+  Se recomienda utilizar el controlador de registro `awslogs` para enviar los registros de aplicación y de acceso al mismo destino de CloudWatch.
+ Los registros de acceso son compatibles con los servicios de Fargate que utilizan la versión `1.4.0` y posteriores de la plataforma.
+ De forma predeterminada, los parámetros de consulta, como los ID de solicitud y los tokens, no se incluyen en los registros de acceso. Para incluir los parámetros de consulta en los registros de acceso, establezca `includeQueryParameters` en `"ENABLED"`.

## Formatos de los registro de acceso
<a name="service-connect-envoy-access-logs-formats"></a>

Los registros de acceso se pueden formatear en diccionarios en formato JSON o en cadenas de formato de texto, con diferencias en los operadores de comandos compatibles para los distintos tipos de registros de acceso.

### Registros de acceso HTTP
<a name="service-connect-envoy-access-logs-formats-http"></a>

Los siguientes operadores de comandos se incluyen de forma predeterminada en los registros HTTP:

------
#### [ Text ]

```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"\n
```

------
#### [ JSON ]

```
{
  "start_time": "%START_TIME%",
  "method": "%REQ(:METHOD)%",
  "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
  "protocol": "%PROTOCOL%",
  "response_code": "%RESPONSE_CODE%",
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration_ms": "%DURATION%",
  "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
  "forwarded_for": "%REQ(X-FORWARDED-FOR)%",
  "user_agent": "%REQ(USER-AGENT)%",
  "request_id": "%REQ(X-REQUEST-ID)%",
  "authority": "%REQ(:AUTHORITY)%",
  "upstream_host": "%UPSTREAM_HOST%"
}
```

------

### Registros de acceso HTTP2
<a name="service-connect-envoy-access-logs-formats-http2"></a>

Además de los operadores de comandos incluidos en los registros HTTP, los registros HTTP2 incluyen el operador `%STREAM_ID%` de forma predeterminada.

------
#### [ Text ]

```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%STREAM_ID%"\n
```

------
#### [ JSON ]

```
{
  "start_time": "%START_TIME%",
  "method": "%REQ(:METHOD)%",
  "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
  "protocol": "%PROTOCOL%",
  "response_code": "%RESPONSE_CODE%",
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration": "%DURATION%",
  "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
  "forwarded_for": "%REQ(X-FORWARDED-FOR)%",
  "user_agent": "%REQ(USER-AGENT)%",
  "request_id": "%REQ(X-REQUEST-ID)%",
  "authority": "%REQ(:AUTHORITY)%",
  "upstream_host": "%UPSTREAM_HOST%",
  "stream_id": "%STREAM_ID%"
}
```

------

### Registros de acceso gRPC
<a name="service-connect-envoy-access-logs-formats-grpc"></a>

Además de los operadores de comandos incluidos en los registros HTTP, los registros de acceso gRPC incluyen los operadores `%STREAM_ID%` y `%GRPC_STATUS()%` de forma predeterminada.

------
#### [ Text ]

```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %GRPC_STATUS()% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%STREAM_ID%"\n
```

------
#### [ JSON ]

```
{
  "start_time": "%START_TIME%",
  "method": "%REQ(:METHOD)%",
  "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
  "protocol": "%PROTOCOL%",
  "response_code": "%RESPONSE_CODE%",
  "grpc_status": "%GRPC_STATUS()%",
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration": "%DURATION%",
  "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
  "forwarded_for": "%REQ(X-FORWARDED-FOR)%",
  "user_agent": "%REQ(USER-AGENT)%",
  "request_id": "%REQ(X-REQUEST-ID)%",
  "authority": "%REQ(:AUTHORITY)%",
  "upstream_host": "%UPSTREAM_HOST%",
  "stream_id": "%STREAM_ID%"
}
```

------

### Registros de acceso TCP
<a name="service-connect-envoy-access-logs-formats-tcp"></a>

Los siguientes operadores de comandos se incluyen de forma predeterminada en los registros de acceso TCP:

------
#### [ Text ]

```
[%START_TIME%] %DOWNSTREAM_REMOTE_ADDRESS% %DOWNSTREAM_REMOTE_PORT% 
%BYTES_RECEIVED% %BYTES_SENT% %DURATION%  
%CONNECTION_TERMINATION_DETAILS% %CONNECTION_ID%\n
```

------
#### [ JSON ]

```
{
  "start_time": "%START_TIME%",
  "downstream_remote_address": "%DOWNSTREAM_REMOTE_ADDRESS%",
  "downstream_remote_port": "%DOWNSTREAM_REMOTE_PORT%",s
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration": "%DURATION%",
  "connection_termination_details": "%CONNECTION_TERMINATION_DETAILS%",
  "connection_id": %CONNECTION_ID%
}
```

------

Para obtener más información acerca de estos operadores de comandos, consulte [Command Operators](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators) en la documentación de Envoy.

# Habilitación de registros de acceso para Amazon ECS Service Connect
<a name="service-connect-access-logs-configuration"></a>

Los registros de acceso no están habilitados de forma predeterminada para los servicios de Amazon ECS que utilizan Service Connect. Puede habilitar los registros de acceso de las siguientes formas.

## Habilitación de registros de acceso mediante la AWS CLI
<a name="service-connect-access-logs-configure-cli"></a>

El siguiente comando muestra cómo puede habilitar los registros de acceso para un servicio de Amazon ECS mediante la AWS CLI especificando `accessLogConfiguration` al crear el servicio:

```
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-task-def \
    --service-connect-configuration '{
        "enabled": true,
        "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-abcdef1234567890",
        "services": [{
            "portName": "web",
            "discoveryName": "my-service",
            "clientAliases": [{
                "port": 80,
                "dnsName": "my-service"
            }]
        }],
        "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
                "awslogs-group": "my-envoy-log-group",
                "awslogs-region": "us-west-2",
                "awslogs-stream-prefix": "myapp-envoy-logs"
            }
        },
         "accessLogConfiguration": {
            "format": "TEXT",
            "includeQueryParameters": "ENABLED" 
        }
    }'
```

## Habilitación de registro de acceso desde la consola
<a name="service-connect-access-logs-configure-console"></a>

Para ver un procedimiento detallado de creación de servicios, consulte [Creación de una implementación de actualización continua de Amazon ECS](create-service-console-v2.md).

**Creación de un servicio con un espacio de nombres compartido mediante la Consola de administración de AWS**

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En la página **Clústeres**, seleccione el clúster en el que desea crear el servicio.

1. En **Servicios**, seleccione **Crear**.

1. Tras rellenar otros detalles en función de la carga de trabajo, en la sección **Service Connect**, seleccione **Usar Service Connect**.

1. Configure los ajustes de Service Connect según sea necesario para su tipo de servicio (cliente o cliente-servidor).

1. Amplíe **Configuración del registro de acceso**. En **Formato**, elija **JSON** o `TEXT`.

1. Para incluir los parámetros de consulta en los registros de acceso, seleccione **Incluir parámetros de consulta**.

1. Complete el proceso de creación del servicio.

# Cifrado del tráfico de Amazon ECS Service Connect
<a name="service-connect-tls"></a>

Amazon ECS Service Connect admite el cifrado automático del tráfico con certificados de seguridad de la capa de transporte (TLS) para los servicios de Amazon ECS. Cuando dirige sus servicios de Amazon ECS hacia un [AWS Private Certificate Authority(AWS Private CA)](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html), Amazon ECS aprovisiona automáticamente certificados TLS para cifrar el tráfico entre sus servicios de Amazon ECS Service Connect. Amazon ECS genera, rota y distribuye los certificados TLS que se utilizan para el cifrado del tráfico.

El cifrado automático del tráfico con Service Connect utiliza funcionalidades de cifrado líderes del sector para proteger la comunicación entre servicios, lo que ayuda a cumplir sus requisitos de seguridad. Es compatible con los certificados TLS AWS Private Certificate Authority con el cifrado `256-bit ECDSA` y `2048-bit RSA`. También tiene el control total sobre los certificados privados y las claves de firma para ayudarle a cumplir los requisitos de conformidad. De forma predeterminada, se admite TLS 1.3, pero no se admite TLS 1.0 - 1.2. Service Connect admite TLS 1.3 con los siguientes cifrados:
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

**nota**  
Para poder utilizar TLS 1.3, debe habilitarlo en el oyente del destino.  
Solo se cifra el tráfico entrante y saliente que pasa por el agente de Amazon ECS.

## Service Connect y comprobación del estado del equilibrador de carga de aplicación
<a name="service-connect-tls-alb-healthchecks"></a>

Puede usar Service Connect con las comprobaciones de estado del equilibrador de carga de aplicación y el cifrado TLS 1.3. 

### Configuración del equilibrador de carga de aplicación
<a name="service-connect-tls-alb-config"></a>

Configure el equilibrador de carga de aplicación con la siguiente configuración:
+ Configure un oyente TLS con una política de seguridad TLS 1.3 (como `ELBSecurityPolicy-TLS13-1-2-2021-06`). Para obtener más información, consulte [Políticas de seguridad para el Equilibrador de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/describe-ssl-policies.html). 
+ Cree un grupo de destinos con la siguiente configuración:
  + Establezca el protocolo en HTTPS
  + Adjunte el grupo de destinos al oyente de TLS
  + Configure el puerto de comprobación de estado para que coincida con el puerto del contenedor del servicio Service Connect

### Configuración de Service Connect
<a name="service-connect-tls-sc-config"></a>

Configure un servicio con la siguiente configuración:
+ Configure el servicio para que utilice el modo de red `awsvpc`, ya que el modo de red `bridge` no es compatible.
+ Habilite Service Connect para el servicio.
+ Establezca la configuración del equilibrador de carga con los siguientes ajustes:
  + Especifique el grupo de destino que configuró para el rquilibrador de carga de aplicación
  + Configure el puerto del contenedor para que coincida con el puerto del contenedor del servicio TLS de Service Connect
+ Evite configurar `ingressPortOverride` para el servicio. Para obtener más información, consulte [ServiceConnectService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html) en la *Referencia de la API de Amazon Elastic Container Service*.

### Consideraciones
<a name="service-connect-tls-alb-considerations"></a>

Cuando utilice el equilibrador de carga de aplicación, TLS y Service Connect, tenga en cuenta lo siguiente:
+ Utilice el modo de red `awsvpc` en lugar del modo de red `bridge` para las comprobaciones de estado de HTTPS cuando utilice Service Connect con cifrado TLS. Las comprobaciones de estado de HTTP seguirán funcionando con el modo `bridge`.
+ Configure el puerto de comprobación de estado del grupo de destino para que coincida con el puerto del contenedor del servicio Service Connect, no con el puerto HTTPS predeterminado (443).

## Certificados AWS Private Certificate Authority y Service Connect
<a name="service-connect-tls-certificates"></a>

Debe tener el rol de IAM de infraestructura. Para obtener más información sobre este rol, consulte [Rol de IAM para la infraestructura de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html                     ).

**Modos de AWS Private Certificate Authority de Service Connect**

AWS Private Certificate Authority puede funcionar en dos modos: de uso general y de corta duración.
+ Uso general: certifica que se pueden configurar con cualquier fecha de caducidad.
+ De corta duración: emite certificados con un periodo de validez máximo de siete días.

Si bien Amazon ECS admite ambos modos, recomendamos utilizar certificados de corta duración. De forma predeterminada, los certificados se renuevan cada cinco días y, si se ejecutan en el modo de corta duración, se obtienen importantes ahorros de costos en comparación con el uso general.

Service Connect no admite la revocación de certificados, pero aprovecha los certificados de corta duración con una rotación frecuente de certificados. Tiene la autoridad para modificar la frecuencia de rotación, deshabilitar o eliminar los secretos mediante la [rotación administrada](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_managed.html) en [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), pero hacerlo podría acarrear las siguientes consecuencias.
+ Frecuencia de rotación más corta: una frecuencia de rotación más corta implica costos más altos debido a que AWS Private CA, AWS KMS, Secrets Manager y Auto Scaling experimentan una mayor carga de trabajo para la rotación.
+ Frecuencia de rotación más larga: las comunicaciones de sus aplicaciones fallan si la frecuencia de rotación supera los **siete** días.
+ Eliminación del secreto: la eliminación del secreto provoca un error de rotación y afecta a las comunicaciones de las aplicaciones con los clientes.

En caso de que la rotación secreta no funcione, se publicará un evento `RotationFailed` en [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). También puede configurar una [alarma de CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) para `RotationFailed`.

**importante**  
No agregue regiones de réplica a los secretos. Si las agrega, se evita que Amazon ECS elimine el secreto, ya que Amazon ECS no tiene permiso para eliminar regiones de la replicación. Si ya agregó la replicación, ejecute el siguiente comando.  

```
aws secretsmanager remove-regions-from-replication \
 --secret-id SecretId \
 --remove-replica-regions region-name
```

**Entidades de certificación subordinadas**  
Puede incorporar cualquier AWS Private CA, raíz o subordinado a TLS de Service Connect para emitir certificados de entidad final para los servicios. El emisor proporcionado se considera el firmante y la raíz de la confianza en todas partes. Puede emitir certificados de entidad final para distintas partes de la solicitud desde distintas entidades de certificación subordinadas. Al utilizar la AWS CLI, proporcione el Nombre de recurso de Amazon (ARN) de la CA para establecer la cadena de confianza.

**Autoridades de certificación en las instalaciones**  
Para usar su CA en las instalaciones, debe crear y configurar una CA subordinada en AWS Private Certificate Authority. Esto garantiza que todos los certificados TLS emitidos para sus cargas de trabajo de Amazon ECS compartan la cadena de confianza con las cargas de trabajo que ejecuta en las instalaciones y puedan conectarse de forma segura.

**importante**  
Agregue la etiqueta **obligatoria** `AmazonECSManaged : true` en su AWS Private CA. 

**Infraestructura como código**  
Al utilizar TLS de Service Connect con las herramientas de infraestructura como código (IaC), es importante configurar las dependencias correctamente para evitar problemas, como el agotamiento de los servicios. La clave de AWS KMS (si la ha proporcionado), el rol de IAM y las dependencias de AWS Private CA se deben eliminar después de utilizar el servicio de Amazon ECS.

Si el espacio de nombres que se usa para Service Connect es un espacio de nombres compartido, puede optar por utilizar un recurso compartido de AWS Private CA. Para obtener más información, consulte [Attach a policy for cross-account access](https://docs.aws.amazon.com/privateca/latest/userguide/pca-ram.html) en la *Guía del usuario de AWS Private Certificate Authority*.

## Service Connect y Secrets Manager
<a name="service-connect-asm"></a>

**Cuando se utiliza Amazon ECS Service Connect con el cifrado TLS, el servicio interactúa con Secrets Manager de las siguientes maneras:**  
Service Connect utiliza el rol de infraestructura proporcionado para crear secretos en Secrets Manager. Estos secretos se utilizan para almacenar las claves privadas asociadas para los certificados TLS para cifrar el tráfico entre los servicios de Service Connect.

**aviso**  
La creación y administración automáticas de estos secretos mediante Service Connect agiliza el proceso de implementación del cifrado TLS para los servicios. Sin embargo, es importante tener en cuenta las posibles implicaciones de seguridad. Es posible que otros roles de IAM que tengan acceso de lectura a Secrets Manager puedan acceder a estos secretos creados automáticamente. Esto podría exponer el material criptográfico confidencial a terceros no autorizados si los controles de acceso no están configurados correctamente.  
Para mitigar este riesgo, siga estas prácticas recomendadas:  
Administre y restrinja con cautela el acceso a Secrets Manager, sobre todo a los secretos creados por Service Connect.
Audite periódicamente los roles de IAM y sus permisos para garantizar que se mantenga el principio del privilegio mínimo.

Al conceder acceso de lectura a Secrets Manager, considere la posibilidad de excluir las claves privadas TLS creadas por Service Connect. Para ello, utilice una condición en las políticas de IAM para excluir los secretos con ARN que coincidan con el patrón:

```
"arn:aws:secretsmanager:::secret:ecs-sc!"
```

Un ejemplo de política de IAM que niega la acción `GetSecretValue` a todos los secretos con el prefijo `ecs-sc!`:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*"
        }
    ]
}
```

------

**nota**  
Este es un ejemplo general y puede que sea necesario ajustarlo en función del caso de uso específico y de la configuración de la cuenta de AWS. Pruebe siempre minuciosamente las políticas de IAM para garantizar que proporcionan el acceso previsto y, al mismo tiempo, mantienen la seguridad.

Al comprender cómo interactúa Service Connect con Secrets Manager, podrá administrar mejor la seguridad de los servicios de Amazon ECS y, al mismo tiempo, aprovechar las ventajas del cifrado TLS automático.

## Service Connect y AWS Key Management Service
<a name="service-connect-kms"></a>

Puede usar [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) para cifrar y descifrar los recursos de Service Connect. AWS KMS es un servicio administrado por AWS con el que puede crear y administrar claves criptográficas que protejan sus datos.

Al usar AWS KMS con Service Connect, puede elegir usar una clave AWS propia que AWS administre por usted o puede elegir una clave AWS KMS existente. También puede [crear una clave de AWS KMS nueva](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) para utilizarla.

**Proporcionar su propia clave de cifrado**  
Puede proporcionar sus propios materiales clave o puede utilizar un almacén de claves externo mediante AWS Key Management Service Import your own key into AWS KMS y, a continuación, especificar el nombre de recurso de Amazon (ARN) de esa clave en Amazon ECS Service Connect.

A continuación, se muestra una política AWS KMS de ejemplo. Sustituya las *entradas del usuario* por valores propios.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "id",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/role-name"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyPair"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Para obtener información sobre las políticas de claves, consulte [Creating a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html) en la *Guía para desarrolladores de AWS Key Management Service*.

**nota**  
Service Connect solo es compatible con claves de cifrado de AWS KMS simétricas. No puede utilizar ningún otro tipo de clave de AWS KMS para cifrar los recursos de Service Connect. Para obtener ayuda a fin de determinar si una clave AWS KMS es una clave de cifrado simétrica, consulte [Identificación de claves KMS asimétricas](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html#identify-asymm-keys).

Para obtener más información sobre la clave de cifrado simétrica de AWS Key Management Service, consulte [Symmetric encryption AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) en la *Guía para desarrolladores de AWS Key Management Service*.

# Habilitación de TLS para Amazon ECS Service Connect
<a name="enable-service-connect-tls"></a>

El cifrado de tráfico se activa al crear o actualizar un servicio de Service Connect.

**Para habilitar el cifrado del tráfico de un servicio en un espacio de nombres existente mediante la Consola de administración de AWS**

1. Debe tener el rol de IAM de infraestructura. Para obtener más información sobre este rol, consulte [Rol de IAM para la infraestructura de Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html                     ).

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En el panel de navegación, seleccione **Namespaces (Espacios de nombres)**.

1. Elija el **Espacio de nombres** con el **Servicio** para el que quiera habilitar el cifrado del tráfico.

1. Elija el **Servicio** para el que quiere habilitar el cifrado del tráfico.

1. Elija **Actualizar servicio** en la esquina superior derecha y desplácese hacia abajo hasta la sección Service Connect.

1. Elija **Activar el cifrado de tráfico** en la información del servicio para activar el TLS.

1. En **Rol de TLS de Service Connect**, elija entre crear un nuevo rol de IAM de infraestructura o usar uno que ya exista.

1. En **Autoridad de certificación firmante**, elija una entidad de certificación existente o cree una nueva.

   Para obtener más información, consulte [Certificados AWS Private Certificate Authority y Service Connect](service-connect-tls.md#service-connect-tls-certificates).

1. En **Elegir una AWS KMS key**, elija una clave propia y administrada por AWS o puede elegir una clave diferente. También tiene la opción de crear una nueva.

Si quiere ver un ejemplo del uso de la AWS CLI para configurar TLS para su servicio, consulte [Configuración de Amazon ECS Service Connect con la AWS CLI](create-service-connect.md).

# Comprobación de la habilitación de TLS para Amazon ECS Service Connect
<a name="verify-tls-enabled"></a>

Service Connect inicia el TLS en el agente de Service Connect y lo termina en el agente de destino. Como resultado, el código de la aplicación nunca ve las interacciones de TLS. Para comprobar que TLS esté habilitado, haga lo siguiente.

1. Incluya la CLI de `openssl` en la imagen de la aplicación.

1. Habilite [ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) en sus servicios para que se conecten a sus tareas a través de SSM. Como alternativa, puede lanzar una instancia de Amazon EC2 en la misma VPC de Amazon que el servicio.

1. Recupere la IP y el puerto de una tarea de un servicio que desee verificar. Puede recuperar la dirección IP de la consola de AWS Cloud Map. La información se encuentra en la página de detalles del servicio dentro del espacio de nombres. 

1. Inicie sesión en cualquiera de las tareas mediante `execute-command`, tal como se muestra en el ejemplo siguiente. Como alternativa, inicie sesión en la instancia de Amazon EC2 creada en el **paso 2**.

   ```
   $ aws ecs execute-command --cluster cluster-name \
       --task task-id  \
       --container container-name \
       --interactive \
       --command "/bin/sh"
   ```
**nota**  
Al llamar directamente al nombre DNS no se revela el certificado.

1. En el shell conectado, utilice la CLI de `openssl` para comprobar y ver el certificado adjunto a la tarea.

   Ejemplo:

   ```
   openssl s_client -connect 10.0.147.43:6379 < /dev/null 2> /dev/null \ 
   | openssl x509 -noout -text
   ```

   Respuesta de ejemplo:

   ```
   Certificate:
       Data:
           Version: 3 (0x2)
           Serial Number:
               <serial-number>
           Signature Algorithm: ecdsa-with-SHA256
           Issuer: <issuer>
           Validity
               Not Before: Jan 23 21:38:12 2024 GMT
               Not After : Jan 30 22:38:12 2024 GMT
           Subject: <subject>
           Subject Public Key Info:
               Public Key Algorithm: id-ecPublicKey
                   Public-Key: (256 bit)
                   pub:
                       <pub>
                   ASN1 OID: prime256v1
                   NIST CURVE: P-256
           X509v3 extensions:
               X509v3 Subject Alternative Name:
                   DNS:redis.yelb-cftc
               X509v3 Basic Constraints:
                   CA:FALSE
               X509v3 Authority Key Identifier:
                   keyid:<key-id>
   
               X509v3 Subject Key Identifier:
                   1D:<id>
               X509v3 Key Usage: critical
                   Digital Signature, Key Encipherment
               X509v3 Extended Key Usage:
                   TLS Web Server Authentication, TLS Web Client Authentication
       Signature Algorithm: ecdsa-with-SHA256
           <hash>
   ```

# Configuración de Amazon ECS Service Connect con la AWS CLI
<a name="create-service-connect"></a>

Puede crear un servicio de Amazon ECS para una tarea de Fargate que utilice Service Connect a través de la AWS CLI.

**nota**  
Puede utilizar puntos de conexión de servicio de doble pila para interactuar con Amazon ECS desde la AWS CLI, los SDK y la API de Amazon ECS a través de IPv4 e IPv6. Para obtener más información, consulte [Uso de puntos de conexión de doble pila en Amazon ECS](dual-stack-endpoint.md).

## Requisitos previos
<a name="create-service-connect-prereqs"></a>

A continuación, se indican los requisitos previos de Service Connect:
+ Compruebe que la última versión de la AWS CLI esté instalada y configurada. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Su usuario de IAM dispone de los permisos requeridos que se especifican en la política de IAM [AmazonECS\$1FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess) de ejemplo.
+ Tiene una VPC, una subred, una tabla de enrutamiento y un grupo de seguridad creados para utilizarlos. Para obtener más información, consulte [Creación de una nube virtual privada](get-set-up-for-amazon-ecs.md#create-a-vpc).
+ Tiene un rol de ejecución de tareas con el nombre `ecsTaskExecutionRole` y la política administrada `AmazonECSTaskExecutionRolePolicy` está asociada al rol. Este rol permite a Fargate escribir los registros de aplicaciones de NGINX y los registros de proxy de Service Connect en los registros de Amazon CloudWatch. Para obtener más información, consulte [Creación del rol de de ejecución de tareas](task_execution_IAM_role.md#create-task-execution-role).

## Paso 1: Crear el clúster
<a name="create-service-connect-cluster"></a>

Siga los pasos a continuación para crear el clúster y el espacio de nombres de Amazon ECS.

**Para crear un clúster de Amazon ECS y espacio de nombres de AWS Cloud Map**

1. Cree un clúster de Amazon ECS con el nombre `tutorial` para su utilización. El parámetro `--service-connect-defaults` establece el espacio de nombres predeterminado del clúster. En el resultado del ejemplo, no existe un espacio de nombres de AWS Cloud Map con nombre `service-connect` en esta cuenta y Región de AWS, por lo tanto, Amazon ECS crea el espacio de nombres. El espacio de nombres se crea en AWS Cloud Map en la cuenta y es visible con todos los demás espacios de nombres, así que debe usar un nombre que indique el propósito.

   ```
   aws ecs create-cluster --cluster-name tutorial --service-connect-defaults namespace=service-connect
   ```

   Salida:

   ```
   {
       "cluster": {
           "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/tutorial",
           "clusterName": "tutorial",
           "serviceConnectDefaults": {
               "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-EXAMPLE"
           },
           "status": "PROVISIONING",
           "registeredContainerInstancesCount": 0,
           "runningTasksCount": 0,
           "pendingTasksCount": 0,
           "activeServicesCount": 0,
           "statistics": [],
           "tags": [],
           "settings": [
               {
                   "name": "containerInsights",
                   "value": "disabled"
               }
           ],
           "capacityProviders": [],
           "defaultCapacityProviderStrategy": [],
           "attachments": [
               {
                   "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                   "type": "sc",
                   "status": "ATTACHING",
                   "details": []
               }
           ],
           "attachmentsStatus": "UPDATE_IN_PROGRESS"
       }
   }
   }
   ```

1. Compruebe que se haya creado el clúster:

   ```
   aws ecs describe-clusters --clusters tutorial
   ```

   Salida:

   ```
   {
       "clusters": [
           {
               "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/tutorial",
               "clusterName": "tutorial",
               "serviceConnectDefaults": {
                   "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-EXAMPLE"
               },
               "status": "ACTIVE",
               "registeredContainerInstancesCount": 0,
               "runningTasksCount": 0,
               "pendingTasksCount": 0,
               "activeServicesCount": 0,
               "statistics": [],
               "tags": [],
               "settings": [],
               "capacityProviders": [],
               "defaultCapacityProviderStrategy": []
           }
       ],
       "failures": []
   }
   ```

1. (Opcional) Compruebe que el espacio de nombres se haya creado en AWS Cloud Map. Puede usar la Consola de administración de AWS o la configuración normal de la AWS CLI, ya que esto se crea en AWS Cloud Map.

   Por ejemplo, use la AWS CLI:

   ```
   aws servicediscovery get-namespace --id ns-EXAMPLE
   ```

   Salida:

   ```
   {
       "Namespace": {
           "Id": "ns-EXAMPLE",
           "Arn": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-EXAMPLE",
           "Name": "service-connect",
           "Type": "HTTP",
           "Properties": {
               "DnsProperties": {
                   "SOA": {}
               },
               "HttpProperties": {
                   "HttpName": "service-connect"
               }
           },
           "CreateDate": 1661749852.422,
           "CreatorRequestId": "service-connect"
       }
   }
   ```

## Paso 2: crear el servicio para el servidor
<a name="create-service-connect-nginx-server"></a>

La característica de Service Connect está diseñada para interconectar varias aplicaciones en Amazon ECS. Al menos una de esas aplicaciones debe proporcionar un servicio web al cual conectarse. En este paso, creará:
+ La definición de tarea que utiliza la imagen del contenedor oficial de NGINX sin modificar e incluye la configuración de Service Connect.
+ La definición de servicio de Amazon ECS que configura Service Connect para proporcionar la detección de servicios y el proxy de malla de servicios para el tráfico a este servicio. La configuración reutiliza el espacio de nombres predeterminado de la configuración del clúster para reducir la cantidad de configuración que se realiza para cada servicio.
+ El servicio de Amazon ECS. Ejecuta una tarea mediante la definición de tarea e inserta un contenedor adicional para el proxy de Service Connect. El proxy escucha en el puerto desde la asignación de puertos del contenedor de la definición de la tarea. En una aplicación de cliente que se ejecuta en Amazon ECS, el proxy de la tarea del cliente escucha las conexiones salientes al nombre del puerto de definición de la tarea, el nombre de detección de servicios o el nombre de alias del cliente de servicio y el número de puerto del alias de cliente.

**Para crear el servicio web con Service Connect**

1. Registre una definición de tarea que sea compatible con Fargate y utilice el `awsvpc` en modo de red. Siga estos pasos:

   1. Cree un archivo denominado `service-connect-nginx.json` con los contenidos de la siguiente definición de tareas.

      Esta definición de tarea configura Service Connect al agregar los parámetros `name` y `appProtocol` a la asignación de puertos. El nombre del puerto hace que este sea más identificable en la configuración del servicio cuando se utilizan varios puertos. El nombre del puerto también se usa de forma predeterminada como nombre detectable para que lo usen otras aplicaciones en el espacio de nombres.

      La definición de la tarea contiene el rol de IAM de la tarea porque el servicio tiene habilitado ECS Exec.
**importante**  
Esta definición de tarea usa una `logConfiguration` para enviar la salida de nginx desde `stdout` y `stderr` hacia los registros de Amazon CloudWatch. Este rol de ejecución de tareas no tiene los permisos adicionales necesarios para crear el grupo de registro de registros de CloudWatch. Cree el grupo de registro de registros de CloudWatch mediante la Consola de administración de AWS o la AWS CLI. Si no desea enviar los registros de nginx a registros de CloudWatch, puede eliminar la `logConfiguration`.  
Sustituya el ID de la Cuenta de AWS en el rol de ejecución de la tarea por el ID de su Cuenta de AWS.

      ```
      {
          "family": "service-connect-nginx",
          "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
          "taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskRole",
          "networkMode": "awsvpc",
          "containerDefinitions": [
              {
              "name": "webserver",
              "image": "public.ecr.aws/docker/library/nginx:latest",
              "cpu": 100,
              "portMappings": [
                  {
                      "name": "nginx",
                      "containerPort": 80,
                      "protocol": "tcp", 
                      "appProtocol": "http"
                  }
              ],
              "essential": true,
              "logConfiguration": {
                  "logDriver": "awslogs",
                  "options": {
                      "awslogs-group": "/ecs/service-connect-nginx",
                      "awslogs-region": "region", 
                      "awslogs-stream-prefix": "nginx"
                  }
              }
              }
          ],
          "cpu": "256",
          "memory": "512"
      }
      ```

   1. Registre la definición de tareas mediante el archivo `service-connect-nginx.json`:

      ```
      aws ecs register-task-definition --cli-input-json file://service-connect-nginx.json
      ```

1. Cree un servicio:

   1. Cree un archivo llamado `service-connect-nginx-service.json` con el contenido del servicio de Amazon ECS que va a crear. En este ejemplo se utiliza la definición de tareas creada en el paso anterior. Es necesario un `awsvpcConfiguration` porque el ejemplo de definición de tareas utiliza el modo de red `awsvpc`.

      Cuando cree el servicio de ECS, especifique Fargate y la versión `LATEST` de la plataforma que admite Service Connect. Los `securityGroups` y las `subnets` deben pertenecer a una VPC que cumpla los requisitos de uso de Amazon ECS. Puede obtener los ID de subred y grupos de seguridad en la consola de Amazon VPC. 

      Este servicio configura Service Connect al agregar el parámetro `serviceConnectConfiguration`. El espacio de nombres no es obligatorio porque el clúster tiene configurado un espacio de nombres predeterminado. Las aplicaciones de cliente que se ejecutan en ECS en el espacio de nombres se conectan a este servicio mediante `portName` y el puerto de `clientAliases`. Por ejemplo, se puede acceder a este servicio con `http://nginx:80/`, ya que nginx proporciona una página de bienvenida en la ubicación raíz `/`. Las aplicaciones externas que no se ejecutan en Amazon ECS o que no están en el mismo espacio de nombres pueden acceder a esta aplicación a través del proxy de Service Connect mediante la dirección IP de la tarea y el número de puerto de la definición de la tarea. Para su configuración de `tls`, agregue el certificado `arn` para su `awsPcaAuthorityArn` su `kmsKey`, y `roleArn` de su rol de IAM.

      Este servicio utiliza una `logConfiguration` para enviar la salida del proxy de Service Connect desde `stdout` y `stderr` hacia los registros de Amazon CloudWatch. Este rol de ejecución de tareas no tiene los permisos adicionales necesarios para crear el grupo de registro de registros de CloudWatch. Cree el grupo de registro de registros de CloudWatch mediante la Consola de administración de AWS o la AWS CLI. Le recomendamos que cree este grupo de registro y almacene los registros de proxy en registros de CloudWatch. Si no desea enviar los registros de proxy a registros de CloudWatch, puede eliminar la `logConfiguration`.

      ```
      {
          "cluster": "tutorial",
          "deploymentConfiguration": {
              "maximumPercent": 200,
              "minimumHealthyPercent": 0
          },
          "deploymentController": {
              "type": "ECS"
          },
          "desiredCount": 1,
          "enableECSManagedTags": true,
          "enableExecuteCommand": true,
          "launchType": "FARGATE",
          "networkConfiguration": {
              "awsvpcConfiguration": {
                  "assignPublicIp": "ENABLED",
                  "securityGroups": [
                      "sg-EXAMPLE"
                  ],
                  "subnets": [
                      "subnet-EXAMPLE",
                      "subnet-EXAMPLE",
                      "subnet-EXAMPLE"
                  ]
                 }
          },
          "platformVersion": "LATEST",
          "propagateTags": "SERVICE",
          "serviceName": "service-connect-nginx-service",
          "serviceConnectConfiguration": {
              "enabled": true,
              "services": [
                  {
                      "portName": "nginx",
                      "clientAliases": [
                          {
                              "port": 80
                          }
                      ],
                      "tls": {
                         "issuerCertificateAuthority": {
                            "awsPcaAuthorityArn": "certificateArn"
                         }, 
                         "kmsKey": "kmsKey", 
                         "roleArn": "iamRoleArn"
                      }
                  }
              ],
              "logConfiguration": {
                  "logDriver": "awslogs",
                  "options": {
                      "awslogs-group": "/ecs/service-connect-proxy",
                      "awslogs-region": "region",
                      "awslogs-stream-prefix": "service-connect-proxy"
                  }
              }
          },
          "taskDefinition": "service-connect-nginx"
      }
      ```

   1. Cree un servicio mediante el archivo `service-connect-nginx-service.json`:

      ```
      aws ecs create-service --cluster tutorial --cli-input-json file://service-connect-nginx-service.json
      ```

      Salida:

      ```
      {
          "service": {
              "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/tutorial/service-connect-nginx-service",
              "serviceName": "service-connect-nginx-service",
              "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/tutorial",
              "loadBalancers": [],
              "serviceRegistries": [],
              "status": "ACTIVE",
              "desiredCount": 1,
              "runningCount": 0,
              "pendingCount": 0,
              "launchType": "FARGATE",
              "platformVersion": "LATEST",
              "platformFamily": "Linux",
              "taskDefinition": "arn:aws:ecs:us-west-2:123456789012:task-definition/service-connect-nginx:1",
              "deploymentConfiguration": {
                  "deploymentCircuitBreaker": {
                      "enable": false,
                      "rollback": false
                  },
                  "maximumPercent": 200,
                  "minimumHealthyPercent": 0
              },
              "deployments": [
                  {
                      "id": "ecs-svc/3763308422771520962",
                      "status": "PRIMARY",
                      "taskDefinition": "arn:aws:ecs:us-west-2:123456789012:task-definition/service-connect-nginx:1",
                      "desiredCount": 1,
                      "pendingCount": 0,
                      "runningCount": 0,
                      "failedTasks": 0,
                      "createdAt": 1661210032.602,
                      "updatedAt": 1661210032.602,
                      "launchType": "FARGATE",
                      "platformVersion": "1.4.0",
                      "platformFamily": "Linux",
                      "networkConfiguration": {
                          "awsvpcConfiguration": {
                              "assignPublicIp": "ENABLED",
                              "securityGroups": [
                                  "sg-EXAMPLE"
                              ],
                              "subnets": [
                                  "subnet-EXAMPLEf",
                                  "subnet-EXAMPLE",
                                  "subnet-EXAMPLE"
                              ]
                          }
                      },
                      "rolloutState": "IN_PROGRESS",
                      "rolloutStateReason": "ECS deployment ecs-svc/3763308422771520962 in progress.",
                      "failedLaunchTaskCount": 0,
                      "replacedTaskCount": 0,
                      "serviceConnectConfiguration": {
                          "enabled": true,
                          "namespace": "service-connect",
                          "services": [
                              {
                                  "portName": "nginx",
                                  "clientAliases": [
                                      {
                                          "port": 80
                                      }
                                  ]
                              }
                          ],
                          "logConfiguration": {
                              "logDriver": "awslogs",
                              "options": {
                                  "awslogs-group": "/ecs/service-connect-proxy",
                                  "awslogs-region": "us-west-2",
                                  "awslogs-stream-prefix": "service-connect-proxy"
                              },
                              "secretOptions": []
                          }
                      },
                      "serviceConnectResources": [
                          {
                              "discoveryName": "nginx",
                              "discoveryArn": "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-EXAMPLE"
                          }
                      ]
                  }
              ],
              "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS",
              "version": 0,
              "events": [],
              "createdAt": 1661210032.602,
              "placementConstraints": [],
              "placementStrategy": [],
              "networkConfiguration": {
                  "awsvpcConfiguration": {
                      "assignPublicIp": "ENABLED",
                      "securityGroups": [
                          "sg-EXAMPLE"
                      ],
                      "subnets": [
                          "subnet-EXAMPLE",
                          "subnet-EXAMPLE",
                          "subnet-EXAMPLE"
                      ]
                  }
              },
              "schedulingStrategy": "REPLICA",
              "enableECSManagedTags": true,
              "propagateTags": "SERVICE",
              "enableExecuteCommand": true
          }
      }
      ```

      La `serviceConnectConfiguration` que ha proporcionado aparece dentro de la primera *implementación* de la salida. A medida que hace cambios en el servicio de ECS de manera que es necesario realizar cambios en las tareas, Amazon ECS crea una nueva implementación.

## Paso 3: Comprobar que puede conectarse
<a name="create-service-connect-verify"></a>

Para comprobar que Service Connect está configurado y funciona, siga estos pasos para conectarse al servicio web desde una aplicación externa. A continuación, consulte las métricas adicionales en CloudWatch que crea el proxy de Service Connect.

**Para conectarse al servicio web desde una aplicación externa**
+ Conéctese a la dirección IP de la tarea y al puerto del contenedor mediante la dirección IP de la tarea

  Utilice la AWS CLI para obtener el ID de la tarea, mediante el `aws ecs list-tasks --cluster tutorial`.

  Si las subredes y el grupo de seguridad permiten el tráfico de la Internet pública en el puerto de la definición de la tarea, puede conectarse a la IP pública desde su equipo. Sin embargo, la IP pública no está disponible en “describe-tasks”, por lo que los pasos incluyen ir a la Consola de administración de AWS o la AWS CLI de Amazon EC2 para obtener los detalles de la interfaz de red elástica.

  En este ejemplo, una instancia de Amazon EC2 de la misma VPC usa la IP privada de la tarea. La aplicación es nginx, pero el encabezado `server: envoy` muestra que se utiliza el proxy de Service Connect. El proxy de Service Connect escucha el puerto del contenedor de la definición de la tarea.

  ```
  $ curl -v 10.0.19.50:80/
  *   Trying 10.0.19.50:80...
  * Connected to 10.0.19.50 (10.0.19.50) port 80 (#0)
  > GET / HTTP/1.1
  > Host: 10.0.19.50
  > User-Agent: curl/7.79.1
  > Accept: */*
  >
  * Mark bundle as not supporting multiuse
  < HTTP/1.1 200 OK
  < server: envoy
  < date: Tue, 23 Aug 2022 03:53:06 GMT
  < content-type: text/html
  < content-length: 612
  < last-modified: Tue, 16 Apr 2019 13:08:19 GMT
  < etag: "5cb5d3c3-264"
  < accept-ranges: bytes
  < x-envoy-upstream-service-time: 0
  <
  <!DOCTYPE html>
  <html>
  <head>
  <title>Welcome to nginx!</title>
  <style>
      body {
          width: 35em;
          margin: 0 auto;
          font-family: Tahoma, Verdana, Arial, sans-serif;
      }
  </style>
  </head>
  <body>
  <h1>Welcome to nginx!</h1>
  <p>If you see this page, the nginx web server is successfully installed and
  working. Further configuration is required.</p>
  
  <p>For online documentation and support please refer to
  <a href="http://nginx.org/">nginx.org</a>.<br/>
  Commercial support is available at
  <a href="http://nginx.com/">nginx.com</a>.</p>
  
  <p><em>Thank you for using nginx.</em></p>
  </body>
  </html>
  ```

**Para ver las métricas de Service Connect**  
El proxy de Service Connect crea métricas de aplicaciones (conexión HTTP, HTTP2, gRPC o TCP) en las métricas de CloudWatch. Cuando utilice la consola de CloudWatch, consulte las dimensiones de métricas adicionales de **DiscoveryName**, (**DiscoveryName, ServiceName, ClusterName**), **TargetDiscoveryName** y (**TargetDiscoveryName, ServiceName, ClusterName**) en el espacio de nombres de Amazon ECS. Para obtener más información acerca de estas métricas y sus dimensiones, consulte [View Available Metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) en la Guía del usuario de Registros de Amazon CloudWatch.

# Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS
<a name="service-discovery"></a>

Su servicio de Amazon ECS también puede configurarse para utilizar la detección de servicios de Amazon ECS. La detección de servicios utiliza acciones de la API de AWS Cloud Map para administrar los espacios de nombres de DNS y HTTP para sus servicios de Amazon ECS. Para obtener más información, consulte [¿Qué es AWS Cloud Map?](https://docs.aws.amazon.com/cloud-map/latest/dg/Welcome.html) en la *Guía para desarrolladores de AWS Cloud Map*.

La detección de servicios se encuentra disponible en las siguientes regiones de AWS:


| Nombre de la región | Región | 
| --- | --- | 
|  Este de EE. UU. (Norte de Virginia)  |  us-east-1  | 
|  Este de EE. UU. (Ohio)  |  us-east-2  | 
|  Oeste de EE. UU. (Norte de California)  |  us-west-1  | 
|  Oeste de EE. UU. (Oregón)  |  us-west-2  | 
|  África (Ciudad del Cabo)  |  af-south-1  | 
|  Asia-Pacífico (Hong Kong)  |  ap-east-1  | 
|  Asia-Pacífico (Taipéi)  |  ap-east-2  | 
|  Asia-Pacífico (Mumbai)  |  ap-south-1  | 
|  Asia-Pacífico (Hyderabad)  |  ap-south-2  | 
|  Asia-Pacífico (Tokio)  |  ap-northeast-1  | 
|  Asia-Pacífico (Seúl)  |  ap-northeast-2  | 
|  Asia-Pacífico (Osaka)  |  ap-northeast-3  | 
|  Asia-Pacífico (Singapur)  |  ap-southeast-1  | 
|  Asia-Pacífico (Sídney)  |  ap-southeast-2  | 
|  Asia-Pacífico (Yakarta)  |  ap-southeast-3  | 
|  Asia-Pacífico (Melbourne)  |  ap-southeast-4  | 
|  Asia-Pacífico (Malasia)  |  ap-southeast-5  | 
|  Asia-Pacífico (Nueva Zelanda)  |  ap-southeast-6  | 
|  Asia-Pacífico (Tailandia)  |  ap-southeast-7  | 
|  Canadá (centro)  |  ca-central-1  | 
|  Oeste de Canadá (Calgary)  |  ca-west-1  | 
|  China (Pekín)  |  cn-north-1  | 
|  China (Ningxia)  |  cn-northwest-1  | 
|  Europe (Frankfurt)  |  eu-central-1  | 
|  Europa (Zúrich)  |  eu-central-2  | 
|  Europa (Irlanda)  |  eu-west-1  | 
|  Europa (Londres)  |  eu-west-2  | 
|  Europa (París)  |  eu-west-3  | 
|  Europa (Milán)  |  eu-south-1  | 
|  Europa (Estocolmo)  |  eu-north-1  | 
|  Israel (Tel Aviv)  |  il-central-1  | 
|  Europa (España)  |  eu-south-2  | 
|  Medio Oriente (EAU)  |  me-central-1  | 
|  México (centro)  |  mx-central-1  | 
|  Medio Oriente (Baréin)  |  me-south-1  | 
|  América del Sur (São Paulo)  |  sa-east-1  | 
|  AWS GovCloud (Este de EE. UU.)  |  us-gov-east-1  | 
|  AWS GovCloud (Oeste de EE. UU.)  |  us-gov-west-1  | 

## Conceptos sobre la detección de servicios
<a name="service-discovery-concepts"></a>

La detección de servicios consta de los siguientes componentes:
+ **Espacio de nombres de detección de servicios**: grupo lógico de servicios de detección de servicios que comparten el mismo nombre de dominio, como `example.com`, que es adónde quiere dirigir el tráfico. Puede crear un espacio de nombres con una llamada al comando `aws servicediscovery create-private-dns-namespace` o en la consola de Amazon ECS. Puede utilizar el comando `aws servicediscovery list-namespaces` para ver la información de resumen de los espacios de nombres creados por la cuenta corriente. Para obtener más información acerca de los comandos de detección de servicios, consulte `[create-private-dns-namespace](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-private-dns-namespace.html)` y `[list-namespaces](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/list-namespaces.html)` en la *Guía de referencia de AWS Cloud Map (detección de servicios) de la AWS CLI*.
+ **Service discovery service** (Servicio de detección de servicios): existe dentro del espacio de nombres de detección de servicios y consta del nombre del servicio y la configuración de DNS para el espacio de nombres. Proporciona los siguientes componentes principales:
  + **Registro de servicios**: permite buscar un servicio mediante DNS o con las acciones de la API de AWS Cloud Map y recuperar uno o varios puntos de enlace disponibles que se pueden utilizar para conectarse al servicio.
+ **Service discovery instance** (Instancia de detección de servicios): existe dentro del servicio de detección de servicios y consiste en atributos asociados a cada servicio de Amazon ECS del directorio de servicios.
  + **Instance attributes** (Atributos de instancia): se agregan los siguientes metadatos como atributos personalizados para cada servicio de Amazon ECS que se configura para utilizar la detección de servicios:
    + **`AWS_INSTANCE_IPV4`**: en el caso de un registro `A`, la dirección IPv4 que Route 53 devuelve en respuesta a consultas de DNS y AWS Cloud Map devuelve al detectar detalles de la instancia, por ejemplo, `192.0.2.44`.
    + **`AWS_INSTANCE_IPV6`**: en el caso de un registro `AAAA`, la dirección IPv6 que Route 53 devuelve en respuesta a consultas de DNS y AWS Cloud Map devuelve al detectar detalles de la instancia; por ejemplo, ` 2001:0db8:85a3:0000:0000:abcd:0001:2345`. Tanto `AWS_INSTANCE_IPv4` como `AWS_INSTANCE_IPv6` se agregan para los servicios de doble pila de Amazon ECS. Solo `AWS_INSTANCE_IPv6` se agrega para los servicios de solo IPv6 de Amazon ECS.
    + **`AWS_INSTANCE_PORT`** – el valor del puerto asociado al servicio de detección de servicios.
    + **`AVAILABILITY_ZONE`** – la zona de disponibilidad en la que se lanzó la tarea. En el caso de las tareas que usan EC2, esta es la zona de disponibilidad en la que existe la instancia de contenedor. En el caso de las tareas que utilizan Fargate, esta es la zona de disponibilidad en la que existe la interfaz de red elástica.
    + **`REGION`** – la región en la que existe la tarea.
    + **`ECS_SERVICE_NAME`** – el nombre del servicio de Amazon ECS al que pertenece la tarea.
    + **`ECS_CLUSTER_NAME`** – el nombre del clúster de Amazon ECS al que pertenece la tarea.
    + **`EC2_INSTANCE_ID`** – el ID de la instancia de contenedor en el que se colocó la tarea. Este atributo personalizado no se agrega si la tarea utiliza Fargate.
    + **`ECS_TASK_DEFINITION_FAMILY`** – la familia de definición de tareas que utiliza la tarea.
    + **`ECS_TASK_SET_EXTERNAL_ID`**: si se crea un conjunto de tareas para una implementación externa y se asocia a un registro de detección de servicios, el atributo `ECS_TASK_SET_EXTERNAL_ID` contendrá el ID externo del conjunto de tareas.
+ **Amazon ECS health checks** (Comprobaciones de estado de Amazon ECS): Amazon ECS realiza comprobaciones de estado periódicas en el nivel de contenedor. Si un punto de enlace no supera la comprobación de estado, se elimina del direccionamiento de DNS y se marca como en mal estado.

## Consideraciones sobre la detección de servicios
<a name="service-discovery-considerations"></a>

Al utilizar la detección de servicios, se debe tener en cuenta lo siguiente:
+ La detección de servicios es compatible con tareas alojadas en Fargate que utilizan la versión 1.1.0 de la plataforma o una posterior. Para obtener más información, consulte [Versiones de la plataforma Fargate para Amazon ECS](platform-fargate.md).
+ Los servicios configurados para utilizar la detección de servicios tienen un límite de 1000 tareas por servicio. Esto se debe a una cuota de servicio de Route 53.
+ El flujo de trabajo de creación de servicio en la consola de Amazon ECS solo es admite el registro de servicios en espacios de nombres de DNS privado. Cuando se crea un espacio de nombres de DNS privado de AWS Cloud Map, se creará automáticamente una zona alojada privada de Route 53.
+ Los atributos de DNS de la VPC deben estar configurados para una resolución de DNS correcta. Para obtener información acerca de cómo configurar los atributos, consulte [Compatibilidad de la VPC con DNS](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) en la *Guía del usuario de Amazon VPC*.
+ Amazon ECS no admite el registro de servicios en espacios de nombres de AWS Cloud Map compartidos.
+ Los registros de DNS creados para un servicio de detección de servicios se registran siempre con la dirección IP privada de la tarea, en lugar de la dirección IP pública, incluso cuando se utilizan espacios de nombres públicos.
+ La detección de servicios requiere que las tareas especifiquen el modo de red `awsvpc`, `bridge` o `host` (`none` no se admite).
+ Si la definición de tarea de servicio usa el modo de red `awsvpc`, puede crear cualquier combinación de registros `A` o `SRV` para cada tarea de servicio. Si utiliza los registros `SRV`, se necesita un puerto. También puede crear registros `AAAA` si el servicio utiliza subredes de doble pila. Si el servicio utiliza subredes de solo IPv6, no puede crear registros `A`.
+ Si la definición de tarea de servicio usa el modo de red `bridge` o `host`, el único tipo de registro de DNS admitido es un registro SRV. Cree un registro SRV para cada tarea de servicio. El registro SRV debe especificar una combinación de nombre y puerto de contenedor en la definición de tarea.
+ Los registros de DNS de un servicio de detección de servicios se pueden consultar dentro de la VPC. Utilizan el siguiente formato .: `<service-discovery-service-name>.<service-discovery-namespace>`.
+ Al realizar una consulta de DNS en el nombre del servicio, los registros `A` y `AAAA` devuelven un conjunto de direcciones IP que corresponden a las tareas. Los registros `SRV` devuelven un conjunto de direcciones IP y puertos para cada tarea.
+ Si tiene ocho registros o menos en buen estado, Route 53 responde a todas las consultas de DNS con todos los registros en buen estado.
+ Cuando todos los registros están en mal estado, Route 53 responde a las consultas de DNS con hasta ocho registros en mal estado.
+ Puede configurar la detección de servicios para un servicio que se encuentre detrás de un equilibrador de carga, pero el tráfico de la detección de servicios siempre se dirige a la tarea, no al equilibrador de carga.
+ La detección de servicios no admite el uso del equilibrador de carga clásico.
+ Se recomienda utilizar las comprobaciones de estado de nivel de contenedor administradas por Amazon ECS para el servicio de detección de servicios.
  + **HealthCheckCustomConfig**: Amazon ECS administra las comprobaciones de estado en su nombre. Amazon ECS utiliza información del contenedor y de las comprobaciones de estado, además del estado de la tarea, para actualizar el estado mediante AWS Cloud Map. Esto se especifica a través del parámetro `--health-check-custom-config` cuando se crea el servicio de detección de servicios. Para obtener más información, consulte [HealthCheckCustomConfig](https://docs.aws.amazon.com/cloud-map/latest/api/API_HealthCheckCustomConfig.html) en la *Referencia de la API de AWS Cloud Map*.
+ Los recursos de AWS Cloud Map que se crean cuando se utiliza la detección de servicios se deben limpiar manualmente.
+ Las tareas y las instancias se registran como `UNHEALTHY` hasta que las comprobaciones de estado del contenedor devuelvan un valor. Si se pasan las comprobaciones de estado, el estado se actualiza a `HEALTHY`. Si las comprobaciones de estado del contenedor fallan, se anula el registro de la instancia de detección de servicios.

## Precios de la detección de servicios
<a name="service-discovery-pricing"></a>

Los clientes que utilizan la detección de servicios de Amazon ECS deben pagar cargos por los recursos de Route 53 y las operaciones de la API de detección de AWS Cloud Map. Se cobran costos por crear zonas alojadas en Route 53 y por las consultas al registro de servicios. Para obtener más información, consulte [Precios de AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/latest/dg/cloud-map-pricing.html) en la *Guía para desarrolladores de AWS Cloud Map*.

Amazon ECS realiza comprobaciones de estado en el nivel de contenedor y las expone a operaciones de la API de comprobación de estado personalizada de AWS Cloud Map. Actualmente, esto está a disposición de los clientes sin ningún costo adicional. Si configura las comprobaciones de estado de red adicionales para tareas expuestas de forma pública, se le cobrará por dichas comprobaciones de estado.

# Creación de un servicio de Amazon ECS que utilice la detección de servicios
<a name="create-service-discovery"></a>

Obtenga información sobre cómo crear un servicio que contenga una tarea de Fargate que utilice la detección de servicios a través de la AWS CLI.

Para obtener una lista de Regiones de AWS que admiten la detección de servicios, consulte [Uso de la detección de servicios para conectar los servicios de Amazon ECS con nombres de DNS](service-discovery.md).

Para obtener información acerca de las regiones que admiten Fargate, consulte [Regiones compatibles con Amazon ECS en AWS Fargate](AWS_Fargate-Regions.md).

**nota**  
Puede utilizar puntos de conexión de servicio de doble pila para interactuar con Amazon ECS desde la AWS CLI, los SDK y la API de Amazon ECS a través de IPv4 e IPv6. Para obtener más información, consulte [Uso de puntos de conexión de doble pila en Amazon ECS](dual-stack-endpoint.md).

## Requisitos previos
<a name="create-service-discovery-prereqs"></a>

Antes de empezar este tutorial, asegúrese de que se cumplen los siguientes requisitos previos:
+ La última versión de la AWS CLI está instalada y configurada. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Los pasos descritos en [Configuración para utilizar Amazon ECS](get-set-up-for-amazon-ecs.md) están completos.
+ Su usuario de IAM dispone de los permisos requeridos que se especifican en la política de IAM [AmazonECS\$1FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess) de ejemplo.
+ Ha creado al menos una VPC y un grupo de seguridad. Para obtener más información, consulte [Creación de una nube virtual privada](get-set-up-for-amazon-ecs.md#create-a-vpc).

## Paso 1: crear los recursos para la detección de servicios en AWS Cloud Map
<a name="create-service-discovery-namespace"></a>

Siga estos pasos para crear el espacio de nombres para la detección de servicios y el servicio de detección de servicios:

1. Cree un espacio de nombres de detección de servicios de Cloud Map privado. Este ejemplo crea un espacio de nombres denominado `tutorial`. Reemplace *vpc-abcd1234* con el ID de una de las VPC existentes. 

   ```
   aws servicediscovery create-private-dns-namespace \
         --name tutorial \
         --vpc vpc-abcd1234
   ```

   A continuación se muestra la salida de este comando.

   ```
   {
       "OperationId": "h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e"
   }
   ```

1. Mediante el `OperationId` de la salida del paso anterior, compruebe que el espacio de nombres privado se haya creado correctamente. Anote el ID del espacio de nombres porque lo utilizará en los comandos posteriores.

   ```
   aws servicediscovery get-operation \
         --operation-id h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e
   ```

   El resultado es el siguiente.

   ```
   {
       "Operation": {
           "Id": "h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e",
           "Type": "CREATE_NAMESPACE",
           "Status": "SUCCESS",
           "CreateDate": 1519777852.502,
           "UpdateDate": 1519777856.086,
           "Targets": {
              "NAMESPACE": "ns-uejictsjen2i4eeg"
           }
       }
   }
   ```

1. Mediante el ID de `NAMESPACE` de la salida del paso anterior, cree un servicio de detección de servicios. En este ejemplo, se crea un servicio denominado `myapplication`. Anote el ID de servicio y el ARN porque los utilizará en comandos posteriores.

   ```
   aws servicediscovery create-service \
         --name myapplication \
         --dns-config "NamespaceId="ns-uejictsjen2i4eeg",DnsRecords=[{Type="A",TTL="300"}]" \
         --health-check-custom-config FailureThreshold=1
   ```

   El resultado es el siguiente.

   ```
   {
       "Service": {
          "Id": "srv-utcrh6wavdkggqtk",
           "Arn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk",
           "Name": "myapplication",
           "DnsConfig": {
               "NamespaceId": "ns-uejictsjen2i4eeg",
               "DnsRecords": [
                   {
                       "Type": "A",
                       "TTL": 300
                   }
               ]
           },
           "HealthCheckCustomConfig": {
               "FailureThreshold": 1
           },
           "CreatorRequestId": "e49a8797-b735-481b-a657-b74d1d6734eb"
       }
   }
   ```

## Paso 2: Crear los recursos de Amazon ECS
<a name="create-service-discovery-cluster"></a>

Siga estos pasos para crear el clúster, la definición de tareas y el servicio de Amazon ECS:

1. Cree un clúster de Amazon ECS. Este ejemplo crea un clúster denominado `tutorial`. 

   ```
   aws ecs create-cluster \
         --cluster-name tutorial
   ```

1. Registre una definición de tarea que sea compatible con Fargate y utilice el `awsvpc` en modo de red. Siga estos pasos:

   1. Cree un archivo denominado `fargate-task.json` con los contenidos de la siguiente definición de tareas.

      ```
      {
          "family": "tutorial-task-def",
              "networkMode": "awsvpc",
              "containerDefinitions": [
                  {
                      "name": "sample-app",
                      "image": "public.ecr.aws/docker/library/httpd:2.4",
                      "portMappings": [
                          {
                              "containerPort": 80,
                              "hostPort": 80,
                              "protocol": "tcp"
                          }
                      ],
                      "essential": true,
                      "entryPoint": [
                          "sh",
                          "-c"
                      ],
                      "command": [
                          "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
                      ]
                  }
              ],
              "requiresCompatibilities": [
                  "FARGATE"
              ],
              "cpu": "256",
              "memory": "512"
      }
      ```

   1. Registre la definición de tareas mediante `fargate-task.json`.

      ```
      aws ecs register-task-definition \
            --cli-input-json file://fargate-task.json
      ```

1. Cree un servicio de ECS siguiendo estos pasos:

   1. Cree un archivo llamado `ecs-service-discovery.json` con el contenido del servicio de ECS que va a crear. En este ejemplo se utiliza la definición de tareas creada en el paso anterior. Es necesario un `awsvpcConfiguration` porque el ejemplo de definición de tareas utiliza el modo de red `awsvpc`. 

      Cuando cree el servicio de ECS, especifique Fargate y la versión `LATEST` de la plataforma que admite la detección de servicios. Cuando se crea el servicio de detección de servicios en AWS Cloud Map, `registryArn` es el ARN devuelto. Los `securityGroups` y las `subnets` deben pertenecer a la VPC que se usa para crear el espacio de nombres de Cloud Map. Puede obtener los ID de subred y grupos de seguridad en la consola de Amazon VPC.

      ```
      {
          "cluster": "tutorial",
          "serviceName": "ecs-service-discovery",
          "taskDefinition": "tutorial-task-def",
          "serviceRegistries": [
             {
                "registryArn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk"
             }
          ],
          "launchType": "FARGATE",
          "platformVersion": "LATEST",
          "networkConfiguration": {
             "awsvpcConfiguration": {
                "assignPublicIp": "ENABLED",
                "securityGroups": [ "sg-abcd1234" ],
                "subnets": [ "subnet-abcd1234" ]
             }
          },
          "desiredCount": 1
      }
      ```

   1. Cree el servicio de ECS mediante `ecs-service-discovery.json`.

      ```
      aws ecs create-service \
            --cli-input-json file://ecs-service-discovery.json
      ```

## Paso 3: verificar la detección de servicios en AWS Cloud Map
<a name="create-service-discovery-verify"></a>

Puede comprobar que todo se haya creado de forma correcta al consultar la información de detección de servicios. Una vez configurada la detección de servicios, puede usar las operaciones de la API de AWS Cloud Map o llamar a `dig` desde una instancia de la VPC. Siga estos pasos:

1. Mediante el ID del servicio de detección de servicios, enumere las instancias de detección de servicios. Anote el ID de la instancia (marcado en negrita) para la limpieza de recursos. 

   ```
    aws servicediscovery list-instances \
          --service-id srv-utcrh6wavdkggqtk
   ```

   El resultado es el siguiente.

   ```
   {
       "Instances": [
           {
               "Id": "16becc26-8558-4af1-9fbd-f81be062a266",
               "Attributes": {
                   "AWS_INSTANCE_IPV4": "172.31.87.2"
                   "AWS_INSTANCE_PORT": "80", 
                   "AVAILABILITY_ZONE": "us-east-1a", 
                   "REGION": "us-east-1", 
                   "ECS_SERVICE_NAME": "ecs-service-discovery", 
                   "ECS_CLUSTER_NAME": "tutorial", 
                   "ECS_TASK_DEFINITION_FAMILY": "tutorial-task-def"
               }
           }
       ]
   }
   ```

1. Utilice el espacio de nombres de detección de servicios, el servicio y los parámetros adicionales, como el nombre del clúster ECS, para consultar los detalles de las instancias de detección de servicios.

   ```
   aws servicediscovery discover-instances \
         --namespace-name tutorial \
         --service-name myapplication \
         --query-parameters ECS_CLUSTER_NAME=tutorial
   ```

1. Los registros de DNS que se crearon en la zona alojada de Route 53 para el servicio de detección de servicios se pueden consultar mediante los siguientes comandos de la AWS CLI:

   1. Mediante el ID de espacio de nombres, obtenga información acerca del espacio de nombres, lo que incluye el ID de la zona alojada de Route 53.

      ```
      aws servicediscovery \
            get-namespace --id ns-uejictsjen2i4eeg
      ```

      El resultado es el siguiente.

      ```
      {
          "Namespace": {
              "Id": "ns-uejictsjen2i4eeg",
              "Arn": "arn:aws:servicediscovery:region:aws_account_id:namespace/ns-uejictsjen2i4eeg",
              "Name": "tutorial",
              "Type": "DNS_PRIVATE",
              "Properties": {
                   "DnsProperties": {
                      "HostedZoneId": "Z35JQ4ZFDRYPLV"
                  }
              },
              "CreateDate": 1519777852.502,
              "CreatorRequestId": "9049a1d5-25e4-4115-8625-96dbda9a6093"
          }
      }
      ```

   1. Mediante el ID de la zona alojada de Route 53 del paso anterior, obtenga el conjunto de registros de recursos de la zona alojada. 

      ```
      aws route53 list-resource-record-sets \
            --hosted-zone-id Z35JQ4ZFDRYPLV
      ```

1. También puede consultar el DNS desde una instancia de la VPC con `dig`.

   ```
   dig +short myapplication.tutorial
   ```

## Paso 4: Limpiar
<a name="create-service-discovery-cleanup"></a>

Cuando termine este tutorial, debe limpiar los recursos asociados para evitar incurrir en cargos generados por recursos sin utilizar. Siga estos pasos:

1. Anule el registro de las instancias del servicio de descubrimiento de servicios con el ID de servicio y el ID de instancia que anotó con anterioridad.

   ```
   aws servicediscovery deregister-instance \
         --service-id srv-utcrh6wavdkggqtk \
         --instance-id 16becc26-8558-4af1-9fbd-f81be062a266
   ```

   El resultado es el siguiente.

   ```
   {
       "OperationId": "xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv"
   }
   ```

1. Con el `OperationId` del resultado del paso anterior, verifique que las instancias de servicio de detección de servicios fueron dadas de baja con éxito.

   ```
   aws servicediscovery get-operation \ 
         --operation-id xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv
   ```

   ```
   {
     "Operation": {
           "Id": "xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv",
           "Type": "DEREGISTER_INSTANCE",
           "Status": "SUCCESS",
           "CreateDate": 1525984073.707,
           "UpdateDate": 1525984076.426,
           "Targets": {
               "INSTANCE": "16becc26-8558-4af1-9fbd-f81be062a266",
               "ROUTE_53_CHANGE_ID": "C5NSRG1J4I1FH",
               "SERVICE": "srv-utcrh6wavdkggqtk"
           }
       }
   }
   ```

1. Elimine el servicio de detección de servicios mediante el ID de servicio.

   ```
   aws servicediscovery delete-service \ 
         --id srv-utcrh6wavdkggqtk
   ```

1. Elimine el espacio de nombres de detección de servicios mediante el ID del espacio de nombres.

   ```
   aws servicediscovery delete-namespace \ 
         --id ns-uejictsjen2i4eeg
   ```

   El resultado es el siguiente.

   ```
   {
       "OperationId": "c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj"
   }
   ```

1. Con el `OperationId` del resultado del paso anterior, compruebe que el espacio de nombres de la detección de servicios se haya eliminado correctamente.

   ```
   aws servicediscovery get-operation \ 
         --operation-id c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj
   ```

   El resultado es el siguiente.

   ```
   {
       "Operation": {
           "Id": "c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj",
           "Type": "DELETE_NAMESPACE",
           "Status": "SUCCESS",
           "CreateDate": 1525984602.211,
           "UpdateDate": 1525984602.558,
           "Targets": {
               "NAMESPACE": "ns-rymlehshst7hhukh",
               "ROUTE_53_CHANGE_ID": "CJP2A2M86XW3O"
           }
       }
   }
   ```

1. Actualice el recuento deseado para el servicio Amazon ECS para`0`. Debe hacerlo para eliminar el servicio en el siguiente paso.

   ```
   aws ecs update-service \
         --cluster tutorial \
         --service ecs-service-discovery \
         --desired-count 0
   ```

1. Elimine el servicio Amazon ECS.

   ```
   aws ecs delete-service \
         --cluster tutorial \
         --service ecs-service-discovery
   ```

1. Elimine el clúster de Amazon ECS.

   ```
   aws ecs delete-cluster \
         --cluster tutorial
   ```

# Uso de Amazon VPC Lattice para conectar, observar y proteger los servicios de Amazon ECS
<a name="ecs-vpc-lattice"></a>

Amazon VPC Lattice es un servicio de redes de aplicaciones completamente administrado que utilizan los clientes de Amazon ECS para observar, proteger y monitorear las aplicaciones creadas en servicios de computación, VPC y cuentas de AWS sin tener que modificar su código.

VPC Lattice usa grupos de destino, que son un conjunto de recursos de computación. Estos destinos ejecutan la aplicación o servicio y pueden ser instancias de Amazon EC2, direcciones IP, funciones de Lambda y equilibradores de carga de aplicación. Al asociar sus servicios de Amazon ECS a un grupo de destino de VPC Lattice, los clientes ahora pueden habilitar las tareas de Amazon ECS como destinos de IP en VPC Lattice. Amazon ECS registra automáticamente las tareas en el grupo de destino de VPC Lattice cuando se lanzan las tareas del servicio registrado.

**nota**  
Cuando se utilizan cinco configuraciones de VPC Lattice, el tiempo de implementación puede ser un poco más que cuando se utilizan menos configuraciones.

Se utiliza una regla de oyente para reenviar el tráfico a un grupo de destino específico cuando se cumplen las condiciones. Un oyente comprueba las solicitudes de conexión mediante el protocolo en el puerto que haya configurado. Un servicio dirige las solicitudes a sus destinos registrados en función de las reglas que haya definido al configurar el oyente.

Amazon ECS también reemplaza automáticamente una tarea si no funciona correctamente según las comprobaciones de estado de VPC Lattice. Una vez asociados a VPC Lattice, los clientes de Amazon ECS también pueden aprovechar muchas otras características de conectividad, seguridad y observabilidad entre cómputos de VPC Lattice, como la conexión a servicios entre clústeres, VPC y cuentas con AWS Resource Access Manager, integración de IAM para autorización y autenticación y características avanzadas de administración del tráfico.

Los clientes de Amazon ECS pueden beneficiarse de VPC Lattice de las siguientes formas.
+ Aumento de la productividad de los desarrolladores: VPC Lattice aumenta la productividad de los desarrolladores al permitir centrarse en la creación de características, mientras que VPC Lattice gestiona los desafíos de redes, seguridad y observabilidad de manera uniforme en todas las plataformas de computación.
+ Mejor postura de seguridad: VPC Lattice permite a los desarrolladores autenticar y proteger fácilmente la comunicación entre aplicaciones y plataformas de computación, aplicar el cifrado en tránsito y aplicar controles de acceso detallados con políticas de autenticación de VPC Lattice. Esto le permite adoptar una postura de seguridad más sólida que cumpla con los requisitos normativos y de cumplimiento líderes del sector.
+ Mejora de la escalabilidad y resiliencia de las aplicaciones: VPC Lattice le permite crear una red de aplicaciones implementadas con característica como enrutamiento, autenticación, autorización y monitoreo basados en rutas, encabezados y métodos. Estas ventajas se proporcionan sin sobrecargar los recursos de las cargas de trabajo y permiten hacer implementaciones de varios clústeres que generan millones de solicitudes por segundo sin agregar una latencia significativa.
+ Flexibilidad de implementación con una infraestructura heterogénea: VPC Lattice proporciona características uniformes en todos los servicios de computación, como Amazon ECS, Fargate, Amazon EC2, Amazon EKS y Lambda, y le da a su organización la flexibilidad de elegir la infraestructura adecuada para cada aplicación.

## Funcionamiento de VPC Lattice con otros servicios de Amazon ECS
<a name="ecs-lattice-compatibility"></a>

El uso de VPC Lattice con Amazon ECS puede cambiar la forma en que utiliza otros servicios de Amazon ECS, mientras que otros seguirán siendo los mismos.

**Equilibradores de carga de aplicación**  
Ya no es necesario crear un equilibrador de carga de aplicación específico para usarlo con el tipo de grupo de destino del equilibrador de carga de aplicación en VPC Lattice, que luego se vincula al servicio de Amazon ECS. En su lugar, solo tiene que configurar el servicio de Amazon ECS con un grupo de destino de VPC Lattice. También puede optar por utilizar el equilibrador de carga de aplicación con Amazon ECS al mismo tiempo.

**Implementaciones continuas de Amazon ECS**  
Solo las implementaciones continuas de Amazon ECS funcionan con VPC Lattice, y Amazon ECS incorpora las tareas a los servicios y las elimina de forma segura durante la implementación. No se admiten la implementación de código ni las implementaciones azul/verde.

Para obtener más información sobre VPC Lattice, consulte la [Guía del usuario de Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html).

# Creación de un servicio que utilice VPC Lattice
<a name="ecs-vpc-lattice-create-service"></a>

Puede usar la Consola de administración de AWS o la AWS CLI para crear un servicio con VPC Lattice.

## Requisitos previos
<a name="create-ecs-vpc-lattice-prereqs"></a>

Antes de empezar este tutorial, asegúrese de que se cumplen los siguientes requisitos previos:
+ La última versión de la AWS CLI está instalada y configurada. Para obtener más información, consulte [Instalación de la AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
**nota**  
Puede utilizar puntos de conexión de servicio de doble pila para interactuar con Amazon ECS desde la AWS CLI, los SDK y la API de Amazon ECS a través de IPv4 e IPv6. Para obtener más información, consulte [Uso de puntos de conexión de doble pila en Amazon ECS](dual-stack-endpoint.md).
+ Los pasos descritos en [Configuración para utilizar Amazon ECS](get-set-up-for-amazon-ecs.md) están completos.
+ Su usuario de IAM dispone de los permisos requeridos que se especifican en la política de IAM [AmazonECS\$1FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess) de ejemplo.

## Creación de un servicio que utiliza VPC Lattice con la Consola de administración de AWS
<a name="ecs-lattice-create-console"></a>

Siga estos pasos para crear un servicio con VPC Lattice mediante la Consola de administración de AWS.

1. Abra la consola en [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. En el panel de navegación, elija **Clústeres**.

1. En la página **Clústeres**, seleccione el clúster en el que va a crear el servicio.

1. En la pestaña **Services** (Servicios), elija **Create** (Crear).

   Si nunca antes ha creado un servicio, siga los pasos que se indican en [Creación de un servicio de Amazon ECS mediante la consola](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.html) y, a continuación, continúe con estos pasos cuando llegue a la sección de VPC Lattice.

1. Marque el botón para elegir **Activar VPC Lattice**.

1. A fin de utilizar un rol existente para el **rol de infraestructura de ECS para Amazon ECS**, elija uno que ya haya creado para usarlo al crear el grupo de destino de VPC Lattice. Para crear un nuevo rol, **cree un rol de infraestructura de ECS**.

1. Elija la **VPC**.

   La **VPC** depende del modo de red que haya seleccionado al registrar la definición de la tarea. Si utiliza el modo `host` o `network` con EC2, elija su VPC. 

   Si utiliza el modo `awsvpc`, la VPC se selecciona automáticamente en función de la VPC que haya elegido en **Redes** y no se podrá cambiar.

1. En **Grupos de destino**, elija el grupo o grupos de destino. Debe elegir un mínimo de un grupo de destino y un máximo de cinco. Elija **Agregar grupo de destino** para agregar grupos de destino adicionales. Elija el **nombre del puerto**, el **protocolo** y el **puerto** para cada grupo de destino que elija. Para eliminar un grupo de destino, elija **Eliminar**.
**nota**  
Si quiere agregar grupos de destino existentes, debe utilizar la AWS CLI. Para obtener instrucciones sobre cómo agregar grupos de destino mediante la AWS CLI, consulte [register-targets](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/register-targets.html) en la *Referencia de AWS Command Line Interface*.
Si bien un servicio de VPC Lattice puede tener varios grupos de destino, cada grupo de destino solo se puede agregar a un servicio.
Para crear un servicio en una configuración de solo IPv6, elija grupos de destino con un tipo de dirección IP de `IPv6`.

1. En este punto, vaya a la consola de VPC Lattice para continuar con la configuración. Aquí es donde se incluyen los nuevos grupos de destino en la acción predeterminada del oyente o en las reglas de un servicio de VPC Lattice existente. 

   Para obtener más información, consulte [Reglas de oyente para el servicio de VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/listener-rules.html).

**importante**  
Debe permitir el prefijo `vpc-lattice` de la regla entrante en su grupo de seguridad o tareas y se puede producir un error en las comprobaciones de estado. 

## Creación de un servicio que utiliza VPC Lattice con la AWS CLI
<a name="ecs-lattice-create-cli"></a>

Utilice la AWS CLI para crear un servicio con VPC Lattice. Reemplace cada *marcador de posición de entrada del usuario* con información propia.

1. Cree un archivo de configuración de grupo de destino. El siguiente ejemplo se denomina `tg-config.json`

   ```
   {
       "ipAddressType": "IPV4",
       "port": 443,
       "protocol": "HTTPS",
       "protocolVersion": "HTTP1",
       "vpcIdentifier": "vpc-f1663d9868EXAMPLE"
   }
   ```

1. Utilice el siguiente comando para crear un grupo de destino de VPC Lattice.

   ```
   aws vpc-lattice create-target-group \
       --name my-lattice-target-group-ip \
       --type IP \
       --config file://tg-config.json
   ```
**nota**  
Para crear un servicio en una configuración de solo IPv6, cree grupos de destino con un tipo de dirección IP de `IPv6`. Para obtener más información, consulte [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-target-group.html) en la *Referencia de comandos de la AWS CLI*.

   Ejemplo de código de salida:

   ```
   {
       "arn": "arn:aws:vpc-lattice:us-east-2:123456789012:targetgroup/tg-0eaa4b9ab4EXAMPLE",
       "config": {
           "healthCheck": {
               "enabled": true,
               "healthCheckIntervalSeconds": 30,
               "healthCheckTimeoutSeconds": 5,
               "healthyThresholdCount": 5,
               "matcher": {
                   "httpCode": "200"
               },
               "path": "/",
               "protocol": "HTTPS",
               "protocolVersion": "HTTP1",
               "unhealthyThresholdCount": 2
           },
           "ipAddressType": "IPV4",
           "port": 443,
           "protocol": "HTTPS",
           "protocolVersion": "HTTP1",
           "vpcIdentifier": "vpc-f1663d9868EXAMPLE"
       },
       "id": "tg-0eaa4b9ab4EXAMPLE",
       "name": "my-lattice-target-group-ip",
       "status": "CREATE_IN_PROGRESS",
       "type": "IP"
   }
   ```

1. El siguiente archivo JSON denominado *ecs-service-vpc-lattice.json* es un ejemplo que se utiliza para adjuntar un servicio de Amazon ECS a un grupo de destino de VPC Lattice. El `portName` en el ejemplo que aparece a continuación es el mismo que definió en el campo `name` de la propiedad `portMappings` de la definición de la tarea.

   ```
   {
       "serviceName": "ecs-service-vpc-lattice",
       "taskDefinition": "ecs-task-def",
           "vpcLatticeConfigurations": [
           {
               "targetGroupArn": "arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-0eaa4b9ab4EXAMPLE",
               "portName": "testvpclattice",
               "roleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleVpcLattice"
           }
       ],
       "desiredCount": 5,
       "role": "ecsServiceRole"
   }
   ```

   Utilice el siguiente comando para crear un servicio de Amazon ECS y adjuntarlo al grupo de destino de VPC Lattice mediante el ejemplo de json anterior.

   ```
   aws ecs create-service \
       --cluster clusterName \
       --serviceName ecs-service-vpc-lattice \
       --cli-input-json file://ecs-service-vpc-lattice.json
   ```

**nota**  
VPC Lattice no es compatible con Amazon ECS Anywhere.