

# 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.