

# Uso do Service Connect para conectar serviços do Amazon ECS com nomes abreviados
<a name="service-connect"></a>

O Amazon ECS Service Connect fornece gerenciamento da comunicação entre serviços conforme a configuração do Amazon ECS. Ele cria uma descoberta de serviços e uma malha de serviços no Amazon ECS. Isso fornece a configuração completa dentro de cada serviço que você gerencia por implantações de serviço, uma maneira unificada de consultar os serviços nos namespaces que não dependem da configuração de DNS da VPC, além de métricas e dos logs padronizados para monitorar todas as aplicações. O Service Connect apenas realiza a interconexão de serviços.

O diagrama a seguir mostra um exemplo de rede do Service Connect com duas sub-redes na VPC e dois serviços. Um serviço do cliente que executa o WordPress com uma tarefa em cada sub-rede. Um serviço de servidor que executa o MySQL com uma tarefa em cada sub-rede. Ambos os serviços são altamente disponíveis e resilientes a problemas de tarefas e zonas de disponibilidade, pois cada serviço executa várias tarefas espalhadas por duas sub-redes. As setas sólidas mostram uma conexão do WordPress com o MySQL. Por exemplo, um comando da CLI `mysql --host=mysql` executado de dentro do contêiner do WordPress na tarefa com o endereço IP `172.31.16.1`. O comando usa o nome curto `mysql` na porta padrão do MySQL. O nome e a porta se conectam ao proxy do Service Connect na mesma tarefa. O proxy na tarefa do WordPress usa balanceamento de carga round-robin e qualquer informação de falha anterior na detecção de valores discrepantes para escolher a qual tarefa do MySQL se conectar. Conforme mostrado pelas setas sólidas no diagrama, o proxy se conecta ao segundo proxy na tarefa do MySQL com o endereço IP `172.31.16.2`. O segundo proxy se conecta ao servidor MySQL local na mesma tarefa. Ambos os proxies relatam o desempenho da conexão que é visível em gráficos nos consoles Amazon ECS e Amazon CloudWatch para que você possa obter métricas de performance de todos os tipos de aplicações da mesma forma.

![\[Exemplo de rede do Service Connect mostrando serviços mínimos de HA\]](http://docs.aws.amazon.com/pt_br/AmazonECS/latest/developerguide/images/serviceconnect.png)


Os termos a seguir são usados com o Service Connect.

**nome da porta**  
A configuração de definição de tarefa do Amazon ECS que atribui um nome a um mapeamento de porta específico. Essa configuração só é usada pelo Amazon ECS Service Connect.

**alias do cliente**  
A configuração do serviço do Amazon ECS que atribui o número da porta usada no endpoint. Além disso, o alias do cliente pode atribuir o nome DNS do endpoint, substituindo o nome da descoberta. Se um nome de descoberta não for fornecido no serviço do Amazon ECS, o nome do alias do cliente substituirá o nome da porta como o nome do endpoint. Para ver exemplos de endpoints, consulte a definição de *endpoint*. Vários aliases de cliente podem ser atribuídos a um serviço do Amazon ECS. Essa configuração só é usada pelo Amazon ECS Service Connect.

**nome da descoberta**  
O nome intermediário opcional que você pode criar para uma porta especificada na definição da tarefa. Esse nome é usado para criar um serviço do AWS Cloud Map. Se esse nome não for fornecido, será usado o nome da porta da definição da tarefa. Vários nomes de descoberta podem ser atribuídos a uma porta específica de um serviço do Amazon ECS. Essa configuração só é usada pelo Amazon ECS Service Connect.  
Os nomes dos serviços do AWS Cloud Map devem ser exclusivos dentro de um namespace. Devido a essa limitação, você só pode ter uma configuração do Service Connect sem um nome de descoberta para uma definição de tarefa específica em cada namespace.

**endpoint**  
O URL para se conectar a uma API ou site. O URL contém o protocolo, um nome DNS e a porta. Para obter mais informações sobre endpoints em geral, consulte [endpoint](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#endpoint) no *Glossário da AWS* na Referência geral da Amazon Web Services.  
O Service Connect cria endpoints que se conectam aos serviços do Amazon ECS e configura as tarefas nos serviços do Amazon ECS para se conectarem aos endpoints. O URL contém o protocolo, um nome DNS e a porta. Você seleciona o protocolo e o nome da porta na definição da tarefa, pois a porta deve corresponder à aplicação que está dentro da imagem do contêiner. No serviço, você seleciona cada porta pelo nome e pode atribuir o nome DNS. Se você não especificar um nome DNS na configuração do serviço do Amazon ECS, será usado por padrão o nome da porta da definição da tarefa. Por exemplo, um endpoint do Service Connect pode ser `http://blog:80`, `grpc://checkout:8080` ou `http://_db.production.internal:99`.

**Serviço do Service Connect**  
A configuração de um único endpoint em um serviço do Amazon ECS. Isso faz parte da configuração do Service Connect, que consiste em uma única linha na **Service Connect and discovery name configuration** (Configuração do Service Connect e do nome da descoberta) no console ou em um objeto da lista `services` da configuração JSON de um serviço do Amazon ECS. Essa configuração só é usada pelo Amazon ECS Service Connect.  
Para obter mais informações, consulte [ServiceConnectService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html) na Referência de API do Amazon Elastic Container Service.

**namespace**  
O nome do recurso da Amazon (ARN) abreviado ou completo do namespace AWS Cloud Map para uso com o Service Connect. O namespace deve estar na mesma Região da AWS que o serviço e o cluster do Amazon ECS. O tipo de namespace no AWS Cloud Map não afeta o Service Connect. O namespace pode ser aquele que é compartilhado com sua Conta da AWS usando o AWS Resource Access Manager (AWS RAM) nas Regiões da AWS em que AWS RAM está disponível. Para obter mais informações sobre namespaces compartilhados, consulte [Compartilhamento de namespaces do AWS Cloud Map entre contas](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) no *Guia do desenvolvedor do AWS Cloud Map*.  
O Service Connect usa o namespace AWS Cloud Map como um agrupamento lógico de tarefas do Amazon ECS que se comunicam entre si. Cada serviço do Amazon ECS pode pertencer a apenas um namespace. Os serviços em um namespace podem ser distribuídos entre diferentes clusters do Amazon ECS dentro da mesma Região da AWS. Se o namespace for compartilhado, os serviços poderão ser distribuídos entre as Contas da AWS de proprietário e consumidor do namespace. É possível organizar serviços de forma flexível, seguindo qualquer critério desejado.

**serviço de cliente**  
Um serviço que executa uma aplicação cliente de rede. Esse serviço deve ter um namespace configurado. Cada tarefa do serviço pode descobrir e se conectar a todos os endpoints do namespace por meio de um contêiner do proxy do Service Connect.  
Se algum dos seus contêineres na tarefa precisar se conectar a um endpoint em um serviço em um namespace, escolha um serviço de cliente. Se uma aplicação de frontend, de proxy reverso ou de balanceador de carga receber tráfego externo por meio de outros métodos, como o Elastic Load Balancing, ela poderá usar esse tipo de configuração do Service Connect.

**serviço cliente-servidor**  
Um serviço do Amazon ECS que executa uma aplicação de rede ou de serviço Web. Esse serviço deve ter um namespace e pelo menos um endpoint configurados. Cada tarefa do serviço pode ser acessada por meio dos endpoints. O contêiner do proxy do Service Connect recebe o nome e a porta do endpoint para direcionar o tráfego para os contêineres da aplicação na tarefa.  
Se algum dos contêineres expuser e receber tráfego de rede em uma porta, escolha um serviço cliente-servidor. Essas aplicações não precisam se conectar a outros serviços cliente-servidor no mesmo namespace, mas a configuração do cliente é necessária. Esse tipo de configuração do Service Connect pode ser utilizado por backend, middleware, camada de negócios ou pela maioria dos microsserviços. Se você quiser que uma aplicação de frontend, de proxy reverso ou de balanceador de carga receba tráfego de outros serviços configurados com o Service Connect no mesmo namespace, esses serviços deverão usar esse tipo de configuração do Service Connect.

O recurso Service Connect cria uma rede virtual de serviços relacionados. A mesma configuração de serviços pode ser usada em vários namespaces diferentes para executar conjuntos de aplicações independentes, mas idênticas. O Service Connect define o contêiner do proxy no serviço do Amazon ECS. Dessa forma, a mesma definição de tarefa pode ser usada para executar aplicações idênticas em namespaces diferentes com diferentes configurações do Service Connect. Cada tarefa realizada pelo serviço executa um contêiner proxy na tarefa.

O Service Connect é adequado para conexões entre serviços do Amazon ECS dentro do mesmo namespace. Para as seguintes aplicações, você precisa usar um método de interconexão adicional para se conectar a um serviço do Amazon ECS que esteja configurado com o Service Connect:
+ Tarefas que estão configuradas em outros namespaces
+ Tarefas que não estão configuradas para o Service Connect
+ Outras aplicações fora do Amazon ECS

Essas aplicações podem se conectar por meio do proxy do Service Connect, mas não conseguem resolver os nomes dos endpoints do Service Connect.

Para que essas aplicações resolvam os endereços IP das tarefas do Amazon ECS, é necessário usar outro método de interconexão. 

**Topics**
+ [Preços](#service-connect-pricing)
+ [Componentes do Amazon ECS Service Connect](service-connect-concepts-deploy.md)
+ [Visão geral da configuração do Amazon ECS Service Connect](service-connect-concepts.md)
+ [Amazon ECS Service Connect com Namespaces compartilhados do AWS Cloud Map](service-connect-shared-namespaces.md)
+ [Logs de acesso do Amazon ECS Service Connect](service-connect-envoy-access-logs.md)
+ [Criptografia do tráfego do Amazon ECS Service Connect](service-connect-tls.md)
+ [Configuração do Amazon ECS Service Connect com a AWS CLI](create-service-connect.md)

## Preços
<a name="service-connect-pricing"></a>
+ O preços do Amazon ECS Service Connect depende de você usar ou não a infraestrutura do AWS Fargate ou do Amazon EC2 para hospedar workloads em contêiner. Ao usar o Amazon ECS no AWS Outposts, os preços seguem o mesmo modelo de quando você está usando o Amazon EC2 diretamente. Para obter mais informações, consulte [Preços do Amazon ECS](https://aws.amazon.com/ecs/pricing).
+ O uso do Amazon ECS Service Connect não gera custos adicionais.
+ Não há cobrança adicional para o uso do AWS Cloud Map quando utilizado pelo Service Connect.
+ Os clientes pagam pelos recursos computacionais usados pelo Amazon ECS Service Connect, incluindo vCPU e memória. Como o agente do Amazon ECS Service Connect é executado dentro de uma tarefa do cliente, sua execução não gera custos adicionais. Os recursos de tarefa são compartilhados entre a workload do cliente e o agente do Amazon ECS Service Connect.
+ Quando os clientes usam a funcionalidade de criptografia de tráfego do Amazon ECS Service Connect com CA Privada da AWS, eles pagam pela autoridade de certificação privada criada e por cada certificado do TLS emitido. Para obter mais detalhes, consulte [Preço do Autoridade de Certificação Privada da AWS](https://aws.amazon.com/private-ca/pricing/). Para estimar o custo mensal dos certificados do TLS, os clientes precisam saber o número dos serviços do Amazon ECS que têm o TLS habilitado, multiplicar esse número pelo custo do certificado e depois multiplicar por seis. Como o Amazon ECS Service Connect faz automaticamente o rodízio de certificados do TLS a cada cinco dias, em média, seis certificados são emitidos por serviço do Amazon ECS, por mês.

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

Ao usar o Amazon ECS Service Connect, você configura cada serviço do Amazon ECS para executar uma aplicação de servidor que recebe solicitações de rede (serviço cliente-servidor) ou para executar uma aplicação cliente que faz as solicitações (serviço cliente).

Quando você se preparar para começar a usar o Service Connect, comece com um serviço de cliente-servidor. É possível adicionar uma configuração do Service Connect a um novo serviço ou a um serviço existente. O Amazon ECS cria um endpoint do Service Connect no namespace. Além disso, o Amazon ECS cria uma nova implantação no serviço para substituir as tarefas que estão em execução no momento.

As tarefas existentes e outras aplicações podem continuar a se conectar aos endpoints existentes e a aplicações externas. Se um serviço cliente-servidor adicionar tarefas por meio da ação de aumentar a escala horizontalmente, novas conexões de clientes serão balanceadas entre todas as tarefas. Se um serviço cliente-servidor for atualizado, as novas conexões de clientes serão balanceadas entre as tarefas da nova versão.

As tarefas existentes não podem ser resolvidas e conectadas ao novo endpoint. Somente novas tarefas com uma configuração do Service Connect no mesmo namespace e que começam a ser executadas após essa implantação podem ser resolvidas e fazer conexão com esse endpoint. 

Isso significa que o operador da aplicação cliente determina quando a configuração da aplicação muda, mesmo que o operador da aplicação do servidor possa alterar sua configuração a qualquer momento. A lista de endpoints no namespace poderá sofrer alterações sempre que qualquer serviço no namespace for implantado. As tarefas existentes e as tarefas de substituição mantêm o mesmo comportamento após a implantação mais recente.

Considere os seguintes exemplos:

Primeiro, suponha que você esteja criando uma aplicação que esteja disponível para a Internet pública em um único modelo do AWS CloudFormation e em uma única pilha do CloudFormation. A descoberta e a acessibilidade públicas devem ser criadas por último pelo CloudFormation, incluindo o serviço de cliente de frontend. Os serviços precisam ser criados nessa ordem para evitar um período em que o serviço do cliente de frontend esteja em execução e disponível ao público, mas um backend não. Isso evita que mensagens de erro sejam enviadas ao público durante esse período. No AWS CloudFormation, você deve usar `dependsOn` para indicar ao CloudFormation que vários serviços do Amazon ECS não podem ser executados em paralelo ou simultaneamente. Você deve adicionar `dependsOn` ao serviço de cliente de frontend para cada serviço cliente-servidor de backend ao qual as tarefas do cliente se conectam.

Em segundo lugar, suponha que exista um serviço de frontend sem a configuração do Service Connect. As tarefas estão se conectando a um serviço de backend existente. Adicione primeiro uma configuração do Service Connect de cliente-servidor ao serviço de backend, usando o mesmo nome no **DNS** ou o `clientAlias` que o frontend usa. Isso cria uma nova implantação para que toda a detecção de reversão da implantação ou o Console de gerenciamento da AWS, a AWS CLI, AWS SDKs e outros métodos revertam o serviço de backend para a implantação e a configuração anteriores. Se você estiver satisfeito com a performance e o comportamento do serviço de backend, adicione uma configuração do Service Connect de cliente ou cliente-servidor ao serviço de frontend. Somente as tarefas da nova implantação usam o proxy do Service Connect que é adicionado a essas novas tarefas. Se você tiver problemas com essa configuração, poderá reverter para sua configuração anterior usando a detecção de reversão de implantação ou o Console de gerenciamento da AWS, a AWS CLI, AWS SDKs e outros métodos para reverter o serviço de backend para a implantação e a configuração anteriores. Se você usar outro sistema de descoberta de serviços baseado no DNS em vez de no Service Connect, qualquer aplicação de frontend ou cliente começará a usar novos endpoints e uma configuração alterada do endpoint após a expiração do cache de DNS local, que normalmente leva várias horas.

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

Por padrão, o proxy do Service Connect atua como receptor na `containerPort` usando o mapeamento da porta de definição de tarefa. As regras do seu grupo de segurança devem permitir o tráfego de entrada (ingresso) para esta porta proveniente das sub-redes em que os clientes serão executados.

Mesmo se você definir um número de porta na configuração do serviço do Service Connect, isso não alterará a porta do serviço cliente-servidor que o proxy do Service Connect recebe. Quando você define esse número de porta, o Amazon ECS altera a porta do endpoint ao qual os serviços do cliente se conectam no proxy do Service Connect dentro dessas tarefas. O proxy no serviço cliente se conecta ao proxy no serviço cliente-servidor usando a `containerPort`.

Se você quiser alterar a porta na qual o proxy do Service Connect recebe, altere a `ingressPortOverride` na configuração do Service Connect do serviço cliente-servidor. Se você alterar esse número de porta, deverá permitir o tráfego de entrada na porta que está sendo usada pelo tráfego para esse serviço.

O tráfego que suas aplicações enviam para os serviços do Amazon ECS configurados para o Service Connect exige que a Amazon VPC e as sub-redes tenham regras de tabela de rotas e regras de ACL de rede que permitam os números de porta `containerPort` e `ingressPortOverride` que você está usando.

 É possível usar o Service Connect para enviar tráfego entre VPCs. Os mesmos requisitos para as regras da tabela de rotas, para as ACLs da rede e para os grupos de segurança se aplicam a ambas as VPCs.

Por exemplo, dois clusters criam tarefas em VPCs diferentes. Um serviço em cada cluster é configurado para usar o mesmo namespace. As aplicações nesses dois serviços podem resolver todos os endpoints no namespace sem qualquer configuração DNS da VPC. No entanto, os proxies não podem se conectar, a menos que o emparelhamento de VPC, as tabelas de rotas de VPC ou de sub-rede e as ACLs da rede da VPC permitam o tráfego nos números de porta `containerPort` e `ingressPortOverride`.

Para tarefas que usam o modo de rede `bridge`, você deve criar um grupo de segurança com uma regra de entrada que permita tráfego no intervalo dinâmico superior de portas. Em seguida, atribua o grupo de segurança a todas as instâncias do EC2 no cluster do Service Connect.

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

Se você criar ou atualizar um serviço com a configuração do Service Connect, o Amazon ECS adicionará um novo contêiner a cada nova tarefa à medida que elas forem iniciadas. Esse padrão de uso de um contêiner separado é chamado de um `sidecar`. Esse contêiner não está presente na definição da tarefa e você não pode configurá-lo. O Amazon ECS gerencia a configuração do Contêiner no serviço. Isso permite reutilizar as mesmas definições de tarefa entre diversos serviços, namespaces e tarefas sem a necessidade de usar o Service Connect.

**Recursos de proxy**
+ Para definições de tarefas, é necessário configurar os parâmetros de CPU e de memória. 

  Recomendamos a adição de 256 unidades de CPU extras e pelo menos 64 MiB de memória à CPU e à memória da tarefa para o contêiner do proxy do Service Connect. No AWS Fargate, a menor quantidade de memória que você pode definir é 512 MiB. No Amazon EC2, a memória de definição de tarefa é obrigatória.
+ Para o serviço, você define a configuração do log na configuração do Service Connect.
+ Se você espera que as tarefas desse serviço recebam mais de 500 solicitações por segundo em sua carga máxima, recomendamos a adição de 512 unidades de CPU à sua CPU de tarefas nessa definição de tarefa para o contêiner do proxy do Service Connect.
+ Se você espera criar mais de 100 serviços do Service Connect no namespace ou 2.000 tarefas no total em todos os serviços do Amazon ECS dentro do namespace, recomendamos a adição de 128 MiB de memória à sua memória de tarefas para o contêiner do proxy do Service Connect. Você deve fazer isso em todas as definições de tarefa usadas por todos os serviços do Amazon ECS no namespace.

**Configuração do proxy**  
Suas aplicações se conectam ao proxy no contêiner de arquivo associado na mesma tarefa em que a aplicação está. O Amazon ECS configura a tarefa e os contêineres para que as aplicações se conectem ao proxy somente quando a aplicação estiver conectada aos nomes de endpoint no mesmo namespace. Todos os outros tráfegos não usam o proxy. O outro tráfego inclui endereços IP na mesma VPC, endpoints de serviço da AWS e tráfego externo.

**Balanceamento de carga**  
O Service Connect configura o proxy para usar a estratégia round-robin para balancear a carga entre as tarefas em um endpoint do Service Connect. O proxy local que está na tarefa de onde vem a conexão escolhe uma das tarefas no serviço cliente-servidor que fornece o endpoint.  
Por exemplo, considere uma tarefa que executa o WordPress em um serviço que está configurado como um *serviço cliente* em um namespace chamado *local*. Há outro serviço com duas tarefas que executam o banco de dados MySQL. Esse serviço é configurado para fornecer um endpoint chamado `mysql` por meio do Service Connect no mesmo namespace. Na tarefa do WordPress, a aplicação do WordPress se conecta ao banco de dados usando o nome do endpoint. As conexões para esse nome serão encaminhadas ao proxy que está em execução em um contêiner de arquivo associado na mesma tarefa. Em seguida, o proxy pode se conectar a qualquer uma das tarefas do MySQL usando a estratégia round-robin.  
Estratégias de balanceamento de carga: round-robin

**Detecção de discrepâncias**  
Esse recurso usa dados que o proxy tem sobre conexões falhadas anteriores para evitar o envio de novas conexões aos hosts que tiveram as conexões com falha. O Service Connect configura o recurso de detecção de valores discrepantes do proxy para fornecer verificações de integridade passivas.  
usando o exemplo anterior, o proxy pode se conectar a qualquer uma das tarefas do MySQL. Se o proxy fez várias conexões com uma tarefa específica do MySQL e 5 ou mais conexões falharam nos últimos 30 segundos, o proxy evitará essa tarefa do MySQL por 30 a 300 segundos.

**Novas tentativas**  
O Service Connect configura o proxy para tentar novamente a conexão que passa pelo proxy e falha, e a segunda tentativa evita o uso do host da conexão anterior. Isso garante que cada conexão por meio do Service Connect não falhe por motivos pontuais.  
Número de novas tentativas: 2

**Tempo limite**  
O Service Connect configura o proxy para aguardar o máximo de tempo até que suas aplicações cliente-servidor respondam. O valor de tempo limite padrão é 15 segundos, mas pode ser atualizado.  
Parâmetros opcionais:  
**idleTimeout**: o tempo, em segundos, durante o qual uma conexão permanece ativa, embora ociosa. Um valor de `0` desabilita `idleTimeout`.  
O padrão de `idleTimeout` para `HTTP`/`HTTP2`/`GRPC` é 5 minutos.  
O `idleTimeout` padrão para `TCP` é 1 hora.  
**perRequestTimeout**: a quantidade de tempo de espera para que o upstream responda com uma resposta completa por solicitação. Um valor `0` desativa o parâmetro `perRequestTimeout`. Isso poderá ser definido somente quando o `appProtocol` para o contêiner da aplicação for `HTTP`/`HTTP2`/`GRPC`. O padrão é 15 segundos.  
Se `idleTimeout` estiver definido para um tempo menor que `perRequestTimeout`, a conexão será fechada quando `idleTimeout` for atingido e não o `perRequestTimeout`.

## Considerações
<a name="service-connect-considerations"></a>

Considere o seguinte ao usar o Service Connect:
+ As tarefas que são executadas no Fargate devem usar a versão da plataforma `1.4.0` ou versões posteriores do Linux para Fargate a fim de usar o Service Connect.
+ A versão do agente do Amazon ECS na instância de contêiner deve ser `1.67.2` ou versões posteriores.
+ As instâncias de contêiner devem executar a versão `20230428` ou posterior da AMI do Amazon Linux 2023 otimizada para o Amazon ECS, ou a versão `2.0.20221115` da AMI do Amazon Linux 2 otimizada para o Amazon ECS para usar o Service Connect. Essas versões têm o agente do Service Connect, além do agente de contêiner do Amazon ECS. Para obter mais informações sobre o agente do Service Connect, consulte [Agente do Service Connect do Amazon ECS](https://github.com/aws/amazon-ecs-service-connect-agent) no GitHub.
+ As instâncias de contêiner devem ter a permissão `ecs:Poll` para o recurso `arn:aws:ecs:region:0123456789012:task-set/cluster/*`. Se você estiver usando `ecsInstanceRole`, não precisará adicionar outras permissões. A política gerenciada `AmazonEC2ContainerServiceforEC2Role` tem as permissões necessárias. Para obter mais informações, consulte [Função do IAM de instância de contêiner do Amazon ECS](instance_IAM_role.md).
+ As tarefas que usam o modo de rede `bridge` e o Service Connect não são compatíveis com parâmetro de definição de contêiner `hostname`.
+ As definições de tarefa devem definir o limite de memória da tarefa para usar o Service Connect. Para obter mais informações, consulte [Proxy do Service Connect](#service-connect-concepts-proxy).
+ Não há suporte para as definições de tarefas que estabelecem limites de memória do contêiner.

  É possível definir limites de memória nos seus contêineres, mas deve definir o limite de memória da tarefa como um número maior que a soma dos limites de memória dos contêineres. A CPU e a memória adicionais nos limites de tarefas que não são alocadas nos limites de contêineres são usadas pelo contêiner do proxy do Service Connect e por outros contêineres que não definem limites de contêineres. Para obter mais informações, consulte [Proxy do Service Connect](#service-connect-concepts-proxy).
+ É possível configurar o Service Connect para usar qualquer namespace do AWS Cloud Map na mesma região da mesma Conta da AWS ou compartilhado com sua Conta da AWS usando o AWS Resource Access Manager. Para obter mais informações sobre o uso de namespaces compartilhados, consulte [Amazon ECS Service Connect com Namespaces compartilhados do AWS Cloud Map](service-connect-shared-namespaces.md).
+ Cada serviço pode pertencer a somente um namespace.
+ Há suporte somente para as tarefas criadas pelos serviços. 
+ Todos os endpoints devem ser exclusivos dentro de um namespace.
+ Todos os nomes de descoberta devem ser exclusivos dentro de um namespace.
+ Você deve reimplantar os serviços existentes para que as aplicações possam resolver novos endpoints. Novos endpoints adicionados ao namespace após a implantacão mais recente não serão adicionados à configuração da tarefa. Para obter mais informações, consulte [Componentes do Amazon ECS Service Connect](#service-connect-concepts-deploy).
+ O Service Connect não exclui namespaces quando os clusters são excluídos. Você deve excluir os namespaces no AWS Cloud Map.
+ O tráfego do Application Load Balancer usa como padrão o roteamento por meio do agente do Service Connect no modo de rede `awsvpc`. Se quiser que o tráfego que não seja de serviço ignore o agente do Service Connect, use o parâmetro `[ingressPortOverride](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html)` na configuração de serviço do Service Connect.
+ O Service Connect com TLS não é compatível com o modo de rede `bridge`. Só há compatibilidade com o modo de rede `awsvpc`.
+ No modo `awsvpc`, o proxy do Service Connect encaminha o tráfego para o host local IPv4 `127.0.0.1` para serviços em configurações somente IPv4 e de pilha dupla. Para serviços na configuração somente IPv6, o proxy encaminha o tráfego para o host local IPv6 `::1`. Recomendamos configurar suas aplicações para receber os dois hosts locais para uma experiência perfeita quando um serviço é atualizado da configuração somente IPv4 ou de pilha dupla para somente IPv6. Para obter mais informações, consulte [Opções da rede de tarefas do Amazon ECS para o EC2](task-networking.md) e [Opções de redes de tarefas do Amazon ECS para o Fargate](fargate-task-networking.md).

**O Service Connect não é compatível com:**
+ Contêineres do Windows
+ HTTP 1.0
+ Tarefas autônomas
+ Serviços que usam os tipos de implantação azul/verde baseada no CodeDeploy e externa
+ Instâncias de contêiner `External` para Amazon ECS Anywhere não são compatíveis com o Service Connect.
+ PPv2
+ Modo do FIPS

# Visão geral da configuração do Amazon ECS Service Connect
<a name="service-connect-concepts"></a>

Ao usar o Service Connect, existem parâmetros que você precisa configurar em seus recursos. 

A tabela a seguir descreve os parâmetros de configuração dos recursos do Amazon ECS.


| Local dos parâmetros | Tipo de aplicação | Descrição | Obrigatório | 
| --- | --- | --- | --- | 
| definição da tarefa | Cliente | Não há alterações disponíveis para o Service Connect nas definições de tarefa do cliente. | N/D | 
| definição da tarefa | Cliente-servidor | Os servidores devem adicionar campos name às portas nos portMappings de contêineres. Para obter mais informações, consulte . [portMappings](task_definition_parameters.md#ContainerDefinition-portMappings) | Sim | 
| definição da tarefa | Cliente-servidor | Opcionalmente, os servidores podem fornecer um protocolo de aplicação (por exemplo, HTTP) para receber métricas específicas do protocolo para suas aplicações de servidor (por exemplo, HTTP 5xx). | Não | 
| Definição de serviço | Cliente | Os serviços do cliente devem adicionar uma serviceConnectConfiguration para configurar o namespace a ser associado. Esse namespace deve conter todos os serviços de servidor que esse serviço precisa descobrir. Para obter mais informações, consulte [serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration). | Sim | 
| Definição de serviço | Cliente-servidor | Os serviços do servidor devem adicionar uma serviceConnectConfiguration para configurar os nomes de DNS, números de portas e namespace nos quais o serviço está disponível. Para obter mais informações, consulte [serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration). | Sim | 
| Cluster | Cliente | Os clusters podem adicionar um namespace padrão do Service Connect. Novos serviços no cluster herdam o namespace quando o Service Connect é configurado em um serviço.  | Não | 
| Cluster | Cliente-servidor | Não há alterações disponíveis para o Service Connect em clusters que se aplicam aos serviços de servidor. As definições de tarefa e os serviços do servidor devem definir a respectiva configuração. | N/D | 

**Visão geral das etapas para configurar o Service Connect**  
As etapas apresentadas a seguir fornecem uma visão geral de como configurar o Service Connect.

**Importante**  
 O Service Connect cria serviços do AWS Cloud Map em sua conta. Modificar esses recursos AWS Cloud Map registrando/cancelando manualmente o registro de instâncias, alterando os atributos da instância ou excluindo um serviço, pode causar um comportamento inesperado no tráfego da sua aplicação ou em implantações subsequentes.
 O Service Connect não oferece suporte a links na definição de tarefa.

1. Adicione os nomes das portas aos mapeamentos das portas nas definições das suas tarefas. Além disso, você pode identificar o protocolo de camada 7 da aplicação para obter métricas adicionais.

1. Crie um cluster com um namespace do AWS Cloud Map, use um namespace compartilhado ou crie o namespace separadamente. Para uma organização simples, crie um cluster com o nome desejado para o namespace e especifique o nome idêntico para o namespace. Nesse caso, o Amazon ECS cria um novo namespace HTTP com a configuração necessária. O Service Connect não usa nem cria zonas hospedadas por DNS no Amazon Route 53.

1. Configure serviços para criar endpoints do Service Connect dentro do namespace.

1. Implemente serviços para criar os endpoints. O Amazon ECS adiciona um contêiner do proxy do Service Connect a cada tarefa e cria os endpoints do Service Connect no AWS Cloud Map. Esse contêiner não é configurado na definição da tarefa e a definição da tarefa pode ser reutilizada sem modificação para criar vários serviços no mesmo namespace ou em vários namespaces.

1. Implemente aplicações clientes como serviços para conexão aos endpoints. O Amazon ECS as conecta a endpoints do Service Connect por meio do proxy do Service Connect de cada tarefa.

   As aplicações só usam o proxy para se conectar aos endpoints do Service Connect. Não há configuração adicional para usar o proxy. O proxy executa balanceamento de carga round-robin, detecção de valores discrepantes e novas tentativas. Para obter mais informações sobre o proxy, consulte [Proxy do Service Connect](service-connect-concepts-deploy.md#service-connect-concepts-proxy).

1. Monitore o tráfego por meio do proxy Service Connect no Amazon CloudWatch.

## Configuração do cluster
<a name="service-connect-concepts-cluster-defaults"></a>

É possível configurar um namespace padrão para o Service Connect ao criar ou ao atualizar o cluster. O nome do namespace que você especifica como padrão pode estar na mesma Região da AWS e conta ou na mesma Região da AWS e ser compartilhado por outra Conta da AWS usando o AWS Resource Access Manager.

Se você criar um cluster e especificar um namespace padrão do Service Connect, o cluster aguardará no status `PROVISIONING` enquanto o Amazon ECS cria o namespace. É possível ver um `attachment` no status do cluster que mostra o status do namespace. Os anexos não são exibidos por padrão na AWS CLI. Você deve adicionar `--include ATTACHMENTS` para vê-los.

Se você quiser usar um namespace compartilhado com sua Conta da AWS usando o AWS RAM, especifique o nome do recurso da Amazon (ARN) do namespace na configuração do cluster. Para obter mais informações sobre o uso de namespaces compartilhados do AWS Cloud Map, consulte [Amazon ECS Service Connect com Namespaces compartilhados do AWS Cloud Map](service-connect-shared-namespaces.md).

## Configuração de serviço
<a name="service-connect-concepts-config"></a>

O Service Connect foi projetado para exigir a configuração mínima. Você precisa definir um nome para cada mapeamento de porta que você gostaria de usar com o Service Connect na definição da tarefa. No serviço, você precisa ativar o Service Connect e selecionar um namespace em sua Conta da AWS ou um namespace compartilhado para criar um serviço de cliente. Para criar um serviço de cliente-servidor, você precisa adicionar uma única configuração do serviço do Service Connect que corresponda ao nome de um dos mapeamentos de porta. O Amazon ECS reutiliza o número da porta e o nome da porta da definição da tarefa para definir o serviço e o endpoint do Service Connect. Para substituir esses valores, você pode usar os outros parâmetros **Descoberta**, **DNS** e **Porta** no console ou `discoveryName` e `clientAliases`, respectivamente, na API do Amazon ECS.

## Configuração da verificação de integridade inicial
<a name="service-connect-concepts-health-check"></a>

O Service Connect garante que as tarefas estejam íntegras antes de rotear o tráfego para elas. Quando uma tarefa é iniciada (durante implantações, escala ou substituições), o Service Connect monitora a integridade da tarefa para garantir que ela esteja pronta para aceitar tráfego. Você deve definir verificações de integridade para o contêiner essencial em sua definição de tarefa para permitir esse comportamento.

O comportamento da verificação de integridade inicial explica possíveis atrasos na obtenção do estado em que uma tarefa está pronta para aceitar tráfego:
+ Se uma tarefa for `HEALTHY`, ela estará imediatamente disponível para o tráfego.
+ Se a integridade de uma tarefa for `UNKNOWN`, o Service Connect seguirá a configuração de verificação de integridade (consulte [Verificação de integridade](task_definition_parameters.md#container_definition_healthcheck)) dos contêineres essenciais da tarefa para calcular um tempo limite, de até `8 minutes`, antes de disponibilizá-la para o tráfego, mesmo que ela permaneça `UNKNOWN`.
+ Se uma tarefa for `UNHEALTHY`, o Amazon ECS poderá iniciar tarefas de substituição. Se nenhuma tarefa íntegra estiver disponível, sua implantação poderá ser revertida com base na configuração do serviço.

Para todo o tráfego contínuo, o Service Connect usa verificações de integridade passivas com base na detecção de valores discrepantes para rotear o tráfego com eficiência.

# Amazon ECS Service Connect com Namespaces compartilhados do AWS Cloud Map
<a name="service-connect-shared-namespaces"></a>

O Amazon ECS Service Connect oferece suporte ao uso de namespaces compartilhados do AWS Cloud Map entre várias Contas da AWS dentro da mesma Região da AWS. Esse recurso permite criar aplicações distribuídas nas quais serviços executados em diferentes Contas da AWS podem descobrir e se comunicar uns com os outros por meio do Service Connect. Os namespaces compartilhados são gerenciados usando o AWS Resource Access Manager (AWS RAM), que permite o compartilhamento seguro de recursos entre contas. Para obter mais informações sobre namespaces compartilhados, consulte [Compartilhamento de namespaces do AWS Cloud Map entre contas](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) no *Guia do desenvolvedor do AWS Cloud Map*.

**Importante**  
Você deve usar a permissão gerenciada `AWSRAMPermissionCloudMapECSFullPermission` para compartilhar o namespace para que o Service Connect funcione corretamente com ele.

Quando você usa namespaces compartilhados do AWS Cloud Map com o Service Connect, serviços de várias Contas da AWS podem participar do mesmo namespace de serviço. Isso é útil especialmente para organizações com várias Contas da AWS que precisam manter a comunicação entre serviços além dos limites da conta, preservando a segurança e o isolamento.

**nota**  
Para se comunicar com serviços que estão em VPCs diferentes, você precisará configurar a conectividade entre VPCs. Isso pode ser feito usando uma conexão de emparelhamento da VPC. Para obter mais informações, consulte [Criar ou excluir uma conexão de emparelhamento da VPC](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) no *Guia de emparelhamento da Amazon Virtual Private Cloud (VPC)*.

# Usar namespaces compartilhados do AWS Cloud Map com o Amazon ECS Service Connect
<a name="service-connect-shared-namespaces-setup"></a>

A configuração de namespaces compartilhados do AWS Cloud Map para o Service Connect envolve as seguintes etapas: proprietário do namespace criando-o, proprietário compartilhando-o por meio do AWS Resource Access Manager (AWS RAM), consumidor aceitando o compartilhamento de recursos e consumidor configurando o Service Connect para usar o namespace compartilhado.

## Etapa 1: criar o namespace do AWS Cloud Map
<a name="service-connect-shared-namespaces-create"></a>

O proprietário do namespace cria um namespace do AWS Cloud Map que será compartilhado com outras contas.

**Para criar um namespace para compartilhamento usando o Console de gerenciamento da AWS**

1. Abra o console AWS Cloud Map do em [https://console.aws.amazon.com/cloudmap/](https://console.aws.amazon.com/cloudmap/).

1. Escolha **Create namespace (Criar namespace)**.

1. Insira um **nome de namespace**. Esse nome será usado pelos serviços em todas as contas participantes.

1. Para **Tipo de namespace**, escolha o tipo apropriado para o seu caso de uso:
   + **Chamadas de API**: namespaces HTTP para descoberta de serviços sem a funcionalidade de DNS.
   + **Chamadas de API e consultas ao DNS em VPCs**: namespaces de DNS privados para descoberta de serviços com consultas ao DNS privadas em uma VPC.
   + **Chamadas de API e consultas ao DNS públicas**: namespaces de DNS públicos para descoberta de serviços com consultas ao DNS públicas.

1.  Escolha **Create namespace (Criar namespace)**.

## Etapa 2: compartilhar o namespace usando o AWS RAM
<a name="service-connect-shared-namespaces-share"></a>

O proprietário do namespace usa o AWS RAM para compartilhar o namespace com outras Contas da AWS.

**Para compartilhar um namespace usando o console do AWS RAM**

1. Abra o console do AWS RAM em [https://console.aws.amazon.com/ram/](https://console.aws.amazon.com/ram/).

1. Escolha **Criar compartilhamento de recursos**.

1. Em **Nome**, insira um nome descritivo para o compartilhamento de recursos.

1. Na seção **Recursos**:

   1. Em **Tipo de recurso**, escolha **Namespaces do Cloud Map**.

   1. Selecione o namespace criado na etapa anterior.

1. Na seção **Permissões gerenciadas**, especifique **AWSRamPermissionCloudMapECSFullPermission**.
**Importante**  
Você deve usar a permissão gerenciada `AWSRAMPermissionCloudMapECSFullPermission` para compartilhar o namespace para que o Service Connect funcione corretamente com ele.

1. Na seção **Entidades principais**, especifique as Contas da AWS com as quais você deseja compartilhar o namespace. Você pode inserir IDs de conta ou IDs de unidades organizacionais.

1. Escolha **Criar compartilhamento de recursos**.

## Etapa 3: aceitar o compartilhamento de recursos
<a name="service-connect-shared-namespaces-accept"></a>

As contas de consumidores de namespace devem aceitar o convite de compartilhamento de recursos para usar o namespace compartilhado.

**Para aceitar um convite de compartilhamento de recursos usando o console do AWS RAM**

1. Na conta de consumidor, abra o console do AWS RAM em [https://console.aws.amazon.com/ram/](https://console.aws.amazon.com/ram/).

1. No painel de navegação, selecione **Compartilhado comigo**; em seguida, escolha **Compartilhamentos de recursos**.

1. Selecione o convite de compartilhamento de recursos e escolha **Aceitar compartilhamento de recursos**.

1. Depois de aceitar, anote o ARN do namespace compartilhado nos detalhes do recurso. Você usará esse ARN ao configurar os serviços do Service Connect.

## Etapa 4: configurar um serviço do Amazon ECS com o namespace compartilhado
<a name="service-connect-shared-namespaces-configure"></a>

Depois de aceitar o namespace compartilhado, o consumidor do namespace pode configurar os serviços do Amazon ECS para usar o namespace compartilhado. A configuração é semelhante ao uso de um namespace normal, mas você deve especificar o ARN do namespace em vez do nome. Para obter um procedimento detalhado de criação de serviço, consulte [Criação de uma implantação de atualização contínua do Amazon ECS](create-service-console-v2.md).

**Para criar um serviço com um namespace compartilhado usando o Console de gerenciamento da AWS**

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Na página **Clusters**, selecione o cluster no qual deseja criar o serviço.

1. Em **Serviços**, escolha **Criar**.

1. Depois de preencher outros detalhes, dependendo da sua workload, na seção **Service Connect**, escolha **Usar Service Connect**.

1. Em **Namespace**, insira o ARN completo do namespace compartilhado.

   O formato do ARN é: `arn:aws:servicediscovery:region:account-id:namespace/namespace-id`

1. Defina as configurações restantes do Service Connect conforme necessário para seu tipo de serviço (cliente ou cliente-servidor).

1. Conclua o processo de criação de serviço.

Você também pode configurar serviços usando a AWS CLI ou os SDKs da AWS especificando o ARN do namespace compartilhado no parâmetro `namespace` do `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"
            }]
        }]
    }'
```

## Considerações
<a name="service-connect-shared-namespaces-considerations"></a>

Considere o seguinte ao usar namespaces compartilhados do AWS Cloud Map com o Service Connect:
+ O AWS RAM deve estar disponível na Região da AWS em que você deseja usar o namespace compartilhado.
+ O namespace compartilhado deve estar na mesma Região da AWS que os serviços e clusters do Amazon ECS.
+ Você deve usar o ARN do namespace, não o ID, ao configurar o Service Connect com um namespace compartilhado.
+ Todos os tipos de namespace são aceitos: HTTP, DNS privado e DNS público.
+ Se o acesso a um namespace compartilhado for revogado, as operações do Amazon ECS que exigirem interação com o namespace (como`CreateService`, `UpdateService` ECS `ListServicesByNamespace`) falharão. Para obter mais informações sobre como solucionar problemas de permissões com namespaces compartilhados, consulte [Solução de problemas do Amazon ECS Service Connect com namespaces compartilhados do AWS Cloud Map](service-connect-shared-namespaces-troubleshooting.md).
+ Para descoberta de serviços usando consultas ao DNS em um namespace de DNS privado compartilhado:
  + O proprietário do namespace precisará chamar `create-vpc-association-authorization` com o ID da zona hospedada privada associada ao namespace e a VPC do consumidor.

    ```
    aws route53 create-vpc-association-authorization --hosted-zone-id Z1234567890ABC --vpc VPCRegion=us-east-1,VPCId=vpc-12345678
    ```
  + O consumidor do namespace precisará chamar `associate-vpc-with-hosted-zone` com o ID da zona hospedada privada.

    ```
    aws route53 associate-vpc-with-hosted-zone --hosted-zone-id Z1234567890ABC --vpc VPCRegion=us-east-1,VPCId=vpc-12345678
    ```
+ Somente o proprietário do namespace pode gerenciar o compartilhamento de recursos.
+ Os consumidores de namespace podem criar e gerenciar serviços dentro do namespace compartilhado, mas não podem modificar o namespace em si.
+ Os nomes de descoberta devem ser exclusivos no namespace compartilhado, independentemente da conta que cria o serviço.
+ Os serviços no namespace compartilhado podem descobrir e se conectar a serviços de outras contas da AWS que tenham acesso ao namespace.
+ Ao habilitar o TLS para o Service Connect e usar um namespace compartilhado, a autoridade de certificação (CA) CA Privada da AWS tem como escopo o namespace. Quando o acesso ao namespace compartilhado é revogado, o acesso à CA é interrompido.
+ Ao trabalhar com um namespace compartilhado, proprietários e consumidores de namespace não têm acesso às métricas do Amazon CloudWatch entre contas, por padrão. As métricas de destino são publicadas somente em contas que possuem serviços de cliente. Uma conta que possui serviços de cliente não tem acesso às métricas recebidas por uma conta que possui serviços de cliente/servidor e vice-versa. Para permitir o acesso entre contas às métricas, configure a observabilidade entre contas do CloudWatch. Para obter mais informações sobre a configuração da observabilidade entre contas, consulte [Observabilidade entre contas do CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) no *Guia do usuário do Amazon CloudWatch*. Para obter mais informações sobre as métricas do CloudWatch para o Service Connect, consulte [Métricas do CloudWatch do Amazon ECS](available-metrics.md).

# Solução de problemas do Amazon ECS Service Connect com namespaces compartilhados do AWS Cloud Map
<a name="service-connect-shared-namespaces-troubleshooting"></a>

Use as informações a seguir para solucionar problemas com namespaces compartilhados do AWS Cloud Map e com o Service Connect. Para obter mais informações sobre a localização de mensagens de erro, consulte [Solução de problemas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html).

As mensagens de erro relacionadas a problemas de permissões aparecem por causa da falta de permissões ou se o acesso ao namespace for revogado. 

**Importante**  
Você deve usar a permissão gerenciada `AWSRAMPermissionCloudMapECSFullPermission` para compartilhar o namespace para que o Service Connect funcione corretamente com ele.

A mensagem de erro aparece em um dos seguintes formatos:

Ocorreu um erro (ClientException) ao chamar a operação <OperationName>: o usuário: arn:aws:iam::<account-id>:user/<user-name> não está autorizado a executar: <ActionName> no recurso: <ResourceArn> porque nenhuma política baseada em recurso permite a ação <ActionName>

Os cenários a seguir podem resultar em uma mensagem de erro neste formato:

**Falha na criação ou atualização do cluster**  
Esses problemas ocorrem quando as operações do Amazon ECS, como `CreateCluster` ou `UpdateCluster` falham por causa da falta de permissões do AWS Cloud Map. As operações exigem permissões para as seguintes ações do AWS Cloud Map:  
+ `servicediscovery:GetNamespace`
Verifique se o convite de compartilhamento de recursos foi aceito na conta do consumidor e se o ARN do namespace correto está sendo usado na configuração do Service Connect.

**Falha na criação ou atualização do serviço**  
Esses problemas ocorrem quando as operações do Amazon ECS, como `CreateService` ou `UpdateService` falham por causa da falta de permissões do AWS Cloud Map. As operações exigem permissões para as seguintes ações do AWS Cloud Map:  
+ `servicediscovery:CreateService`
+ `servicediscovery:GetNamespace`
+ `servicediscovery:GetOperation` (para criar um novo serviço do AWS Cloud Map)
+ `servicediscovery:GetService` (para quando um serviço do AWS Cloud Map já existir)
Verifique se o convite de compartilhamento de recursos foi aceito na conta do consumidor e se o ARN do namespace correto está sendo usado na configuração do Service Connect.

**`ListServicesByNamespace` Falha na operação**  
Esse problema ocorre quando a operação `ListServicesByNamespace` do Amazon ECS falha. A operação exige permissões para as seguintes ações do AWS Cloud Map:  
+ `servicediscovery:GetNamespace`
Para resolver esse problema:  
+ Verifique se a conta do consumidor tem a permissão `servicediscovery:GetNamespace`.
+ Use o ARN do namespace ao chamar a API, não o nome.
+ Verifique se o compartilhamento de recursos está ativo e se o convite foi aceito.

O usuário: <iam-user> não está autorizado a executar: <ActionName> no recurso: <ResourceArn> com uma negação explicita em uma política baseada em identidade.

Os cenários a seguir podem resultar em uma mensagem de erro neste formato:

**A exclusão do serviço falha e fica presa no estado `DRAINING`**  
Esse problema ocorre quando as operações `DeleteService` do Amazon ECS falham em decorrência da falta de permissão `servicediscovery:DeleteService` quando o acesso ao namespace é revogado. O serviço pode parecer ter sido excluído com êxito inicialmente, mas ficará preso no estado `DRAINING`. A mensagem de erro aparece como evento de serviço do Amazon ECS.  
Para resolver esse problema, o proprietário do namespace deve compartilhar o namespace com a conta do consumidor para permitir que a exclusão do serviço seja concluída.

**Falha na execução das tarefas do serviço**  
Esse problema ocorre quando as tarefas não são iniciadas por causa da falta de permissões. A mensagem de erro aparece como erro de tarefa interrompida. Para obter mais informações, consulte [Resolver erros de tarefa interrompida do Amazon ECS](resolve-stopped-errors.md).  
As ações do AWS Cloud Map a seguir são necessárias para executar uma tarefa:  
+ `servicediscovery:GetOperation`
+ `servicediscovery:RegisterInstance`
Certifique-se de que a conta do consumidor tenha as permissões necessárias e de que o namespace compartilhado esteja acessível.

**As tarefas não param de forma limpa ou ficam presas no estado `DEACTIVATING` ou `DEPROVISIONING`**  
Esse problema ocorre quando as tarefas não conseguem cancelar o registro do serviço do AWS Cloud Map durante o encerramento por causa da falta de permissões. O erro aparece como `statusReason` no anexo da tarefa que pode ser recuperado usando a API `DescribeTasks`. Para obter mais informações, consulte [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) na *Referência de APIs do Amazon Elastic Container Service*.  
As seguintes ações do AWS Cloud Map são necessárias para interromper uma tarefa:  
+ `servicediscovery:DeregisterInstance`
+ `servicediscovery:GetOperation`
Se o acesso ao namespace compartilhado for revogado, as tarefas poderão permanecer em um estado `DEACTIVATING` ou `DEPROVISIONING` até que o acesso ao namespace seja restaurado. Solicite que o proprietário do namespace restaure o acesso a ele.

# Logs de acesso do Amazon ECS Service Connect
<a name="service-connect-envoy-access-logs"></a>

O Amazon ECS Service Connect oferece suporte a logs de acesso para fornecer telemetria detalhada sobre solicitações individuais processadas pelo proxy do Service Connect. Os logs de acesso complementam os logs existentes da aplicação, capturando metadados de tráfego por solicitação, como métodos HTTP, caminhos, códigos de resposta, flags e informações de tempo. Isso permite a observabilidade mais profunda dos padrões de tráfego da solicitação e das interações de serviço para solução de problemas e monitoramento eficazes.

Para habilitar os logs de acesso, especifique os objetos `logConfiguration` e `accessLogConfiguration` no objeto `serviceConnectConfiguration`. Você pode configurar o formato dos logs e se eles devem incluir parâmetros de consulta no `accessLogConfiguration`. Os logs são entregues ao grupo de logs de destino pelo driver de log especificado no `logConfiguration`.

```
{
    "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" 
        }
    }
}
```

## Considerações
<a name="service-connect-envoy-access-logs-considerations"></a>

Considere o seguinte ao habilitar o acesso aos logs de acesso:
+ Os logs de acesso e da aplicação são gravados em `/dev/stdout`. Para separar os logs de acesso dos logs da aplicação, recomendamos usar o driver de log `awsfirelens` com uma configuração Fluent Bit ou Fluentd personalizada.
+  Recomendamos usar o driver de log `awslogs` para enviar logs da aplicação e de acesso para o mesmo destino do CloudWatch.
+ os logs de acesso são aceitos nos serviços do Fargate que usam a versão da plataforma `1.4.0` e superior.
+ Os parâmetros de consulta, como ids e tokens de solicitação, são excluídos dos logs de acesso por padrão. Para incluir parâmetros de consulta nos logs de acesso, defina `includeQueryParameters` como `"ENABLED"`.

## Formatos de log de acesso
<a name="service-connect-envoy-access-logs-formats"></a>

os logs de acesso podem ser formatados em dicionários no formato JSON ou em cadeias de caracteres no formato de texto, com diferenças nos operadores de comando compatíveis para diferentes tipos de logs de acesso.

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

Os seguintes operadores de comando são incluídos por padrão para logs 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%"
}
```

------

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

Além dos operadores de comando incluídos para logs HTTP, os logs HTTP2 incluem o operador `%STREAM_ID%` por padrão.

------
#### [ 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%"
}
```

------

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

Além dos operadores de comando incluídos para logs HTTP, os logs de acesso gRPC incluem os operadores `%STREAM_ID%` e `%GRPC_STATUS()%` por padrão.

------
#### [ 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%"
}
```

------

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

Os seguintes operadores de comando são incluídos por padrão nos logs de acesso 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 obter mais informações sobre esses operadores de comando, consulte [Operadores de comando](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators) na documentação do Envoy.

# Habilitar logs de acesso para o Amazon ECS Service Connect
<a name="service-connect-access-logs-configuration"></a>

Os logs de acesso não são habilitados por padrão para os serviços do Amazon ECS que usam o Service Connect. Você pode habilitar os logs de acesso das seguintes maneiras:

## Habilitar os logs de acesso usando a AWS CLI
<a name="service-connect-access-logs-configure-cli"></a>

O comando a seguir mostra como você pode habilitar os logs de acesso para um serviço do Amazon ECS usando a AWS CLI especificando um `accessLogConfiguration` ao criar o serviço:

```
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" 
        }
    }'
```

## Habilitar os logs de acesso usando o console
<a name="service-connect-access-logs-configure-console"></a>

Para obter um procedimento detalhado de criação de serviço, consulte [Criação de uma implantação de atualização contínua do Amazon ECS](create-service-console-v2.md).

**Para criar um serviço com um namespace compartilhado usando o Console de gerenciamento da AWS**

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Na página **Clusters**, selecione o cluster no qual deseja criar o serviço.

1. Em **Serviços**, escolha **Criar**.

1. Depois de preencher outros detalhes, dependendo da sua workload, na seção **Service Connect**, escolha **Usar Service Connect**.

1. Defina as configurações do Service Connect conforme necessário para seu tipo de serviço (cliente ou cliente/servidor).

1. Expanda **Configuração do log de acesso**. Em **Formato**, escolha **JSON** ou `TEXT`.

1. Para incluir parâmetros de consulta nos logs de acesso, selecione **Incluir parâmetros de consulta**.

1. Conclua o processo de criação de serviço.

# Criptografia do tráfego do Amazon ECS Service Connect
<a name="service-connect-tls"></a>

O Service Connect do Amazon ECS oferece suporte à criptografia automática de tráfego com certificados Transport Layer Security (TLS) para serviços do Amazon ECS. Ao direcionar os serviços do Amazon ECS para uma [Autoridade de Certificação Privada da AWS (CA Privada da AWS)](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html), o Amazon ECS provisiona automaticamente certificados TLS para criptografar o tráfego entre os serviços do Service Connect para Amazon ECS. O Amazon ECS gera, alterna e distribui certificados TLS usados na criptografia de tráfego.

A criptografia automática de tráfego com o Service Connect usa funcionalidades de criptografia líderes do setor para proteger a comunicação entre os serviços, ajudando você a cumprir os requisitos de segurança. Ela oferece suporte a certificados TLS da Autoridade de Certificação Privada da AWS com criptografia `256-bit ECDSA` e `2048-bit RSA`. Você também tem controle total sobre certificados privados e chaves de assinatura para ajudar a atender aos requisitos de conformidade. Por padrão, o TLS 1.3 é compatível, mas o TLS 1.0 a 1.2 não é. O Service Connect oferece suporte ao TLS 1.3 com as seguintes cifras:
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

**nota**  
Para usar o protocolo TLS 1.3, é necessário habilitá-lo no receptor do destino.  
Somente o tráfego de entrada e de saída que é transferido pelo agente do Amazon ECS é criptografado.

## Service Connect e verificações de integridade do Application Load Balancer
<a name="service-connect-tls-alb-healthchecks"></a>

Você pode usar o Service Connect com as verificações de integridade do Application Load Balancer e criptografia TLS 1.3. 

### Configuração do Application Load Balancer
<a name="service-connect-tls-alb-config"></a>

Defina o Application Load Balancer com as seguintes configurações:
+ Configure um receptor TLS com uma política de segurança TLS 1.3 (como “ELBSecurityPolicy-TLS13-1-2-2021-06”). Para obter mais informações, consulte [Políticas de segurança para seu Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/describe-ssl-policies.html). 
+ Crie um grupo de destino com as seguintes configurações:
  + Definir o protocolo como HTTPS
  + Anexar o grupo de destino ao receptor TLS
  + Configurar a porta de verificação de integridade para corresponder à porta de contêiner do serviço do Service Connect

### Configuração do Service Connect
<a name="service-connect-tls-sc-config"></a>

Defina um serviço com as seguintes configurações:
+ Configure o serviço para usar o modo de rede `awsvpc`, pois o modo de rede `bridge` não é compatível.
+ Habilite o Service Connect para o serviço.
+ Defina o balanceador de carga com as seguintes configurações:
  + Especificar o grupo de destino que você configurou para o Application Load Balancer
  + Definir a porta do contêiner para corresponder à porta do contêiner do serviço TLS do Service Connect
+ Evite configurar `ingressPortOverride` para o serviço. Para obter mais informações, consulte [ServiceConnectService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html) na *Referência de API do Amazon Elastic Container Service*.

### Considerações
<a name="service-connect-tls-alb-considerations"></a>

Considere o seguinte ao usar o Application Load Balancer, o TLS e o Service Connect:
+ Use o modo de rede `awsvpc` em vez do modo de rede `bridge` para verificações de integridade de HTTPS ao usar o Service Connect com criptografia TLS. As verificações de integridade HTTP continuarão funcionando com o modo `bridge`.
+ Configure a porta de verificação de integridade do grupo de destino para corresponder à porta do contêiner do serviço Service Connect, não à porta HTTPS padrão (443).

## Certificados da Autoridade de Certificação Privada da AWS e Service Connect
<a name="service-connect-tls-certificates"></a>

É necessário ter o perfil do IAM de infraestrutura. Para obter mais informações sobre esse perfil, consulte [Perfil do IAM de infraestrutura do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html                     ).

**Modos da Autoridade de Certificação Privada da AWS para Service Connect**

A Autoridade de Certificação Privada da AWS pode ser executada em dois modos: de uso geral e de curta duração.
+ Uso geral: certificados que podem ser configurados com qualquer data de expiração.
+ De curta duração: certificados com validade máxima de sete dias.

Embora o Amazon ECS ofereça suporte aos dois modos, recomendamos usar certificados de curta duração. Por padrão, os certificados são alternados a cada cinco dias, e a execução em modo de curta duração oferece economias de custo significativas em relação ao de uso geral.

O Service Connect não oferece suporte à revogação de certificados. Em vez disso, utiliza certificados de curta duração com alternância frequente de certificados. Você tem autoridade para modificar a frequência de alternância, desabilitar ou excluir os segredos usando a [rotação gerenciada](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_managed.html) no [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), mas isso pode acarretar as possíveis consequências a seguir.
+ Frequência de alternância mais curta: uma frequência de alternância mais curta incorre em custos mais altos porque CA Privada da AWS, AWS KMS, Secrets Manager e Auto Scaling enfrentam uma maior workload de alternância.
+ Frequência de alternância mais longa: as comunicações das aplicações falham se a frequência de alternância exceder **sete** dias.
+ Exclusão do segredo: excluir o segredo resulta em falha na alternância e afeta as comunicações da aplicação com o cliente.

Caso ocorra falha na alternância do segredo, um evento `RotationFailed` é publicado no [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). Você também pode configurar um alarme do [CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) para `RotationFailed`.

**Importante**  
Não adicione regiões de réplica aos segredos. Isso evita que o Amazon ECS exclua o segredo, pois o Amazon ECS não tem permissão para remover regiões da replicação. Se você já adicionou a replicação, execute o comando a seguir.  

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

**Autoridades de certificação subordinadas**  
Você pode trazer qualquer CA Privada da AWS, raiz ou subordinado, ao protocolo TLS do Service Connect a fim de emitir certificados de entidades finais para os serviços. O emissor fornecido é tratado como signatário e raiz da confiança em todos os lugares. Você pode emitir certificados de entidade final para diferentes partes da aplicação em diferentes CAs subordinadas. Ao usar a AWS CLI, forneça o nome do recurso da Amazon (ARN) da CA para estabelecer a cadeia de confiança.

**Autoridades de certificação on-premises**  
Para usar a CA on-premises, você cria e configura uma CA subordinada na Autoridade de Certificação Privada da AWS. Isso garante que todos os certificados TLS emitidos para as workloads do Amazon ECS compartilhem a cadeia de confiança com as workloads que você executa on-premises e possam se conectar com segurança.

**Importante**  
Adicione a etiqueta **obrigatória** `AmazonECSManaged : true` em seu CA Privada da AWS. 

**Infraestrutura como código**  
Ao usar o TLS no Service Connect com as ferramentas de infraestrutura como código (IaC), é importante configurar as dependências corretamente para evitar problemas, como serviços presos no esgotamento. A chave AWS KMS, se fornecida, o perfil do IAM e as dependências de CA Privada da AWS devem ser excluídas após o serviço Amazon ECS.

Se o namespace usado para o Service Connect for compartilhado, você terá a opção de usar um recurso compartilhado do CA Privada da AWS. Para obter mais informações, consulte [Anexar uma política para acesso entre contas](https://docs.aws.amazon.com/privateca/latest/userguide/pca-ram.html) no *Guia do usuário do Autoridade de Certificação Privada da AWS*.

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

**Quando o Amazon ECS Service Connect com criptografia TLS é usado, o serviço interage com o Secrets Manager das seguintes formas:**  
O Service Connect utiliza o perfil de infraestrutura fornecido para criar segredos no Secrets Manager. Esses segredos são usados para armazenar as chaves privadas associadas aos seus certificados TLS para criptografar o tráfego entre os serviços do Service Connect.

**Atenção**  
A criação e o gerenciamento automáticos desses segredos pelo Service Connect simplificam o processo de implementação da criptografia TLS para seus serviços. No entanto, é importante estar ciente das possíveis implicações de segurança. Outros perfis do IAM que têm acesso de leitura ao Secrets Manager podem acessar esses segredos criados automaticamente. Isso poderá expor material criptográfico confidencial a partes não autorizadas se os controles de acesso não estiverem configurados adequadamente.  
Para minimizar esse risco, siga estas práticas recomendadas:  
Gerencie e restrinja cuidadosamente o acesso ao Secrets Manager, especialmente para segredos criados pelo Service Connect.
Audite regularmente os perfis do IAM e suas permissões para garantir que o princípio do privilégio mínimo seja mantido.

Ao conceder acesso de leitura ao Secrets Manager, considere excluir as chaves privadas TLS criadas pelo Service Connect. É possível fazer isso usando uma condição em suas políticas do IAM para excluir segredos com ARNs que correspondem ao padrão:

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

Um exemplo de política do IAM que nega a ação `GetSecretValue` a todos os segredos com o prefixo `ecs-sc!`:

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

****  

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

------

**nota**  
Esse é um exemplo geral e pode precisar ser ajustado com base no seu caso de uso específico e na configuração da conta da AWS. Sempre teste suas políticas do IAM minuciosamente para garantir que elas forneçam o acesso pretendido e, ao mesmo tempo, mantenham a segurança.

Ao entender como o Service Connect interage com o Secrets Manager, você pode gerenciar melhor a segurança dos seus serviços do Amazon ECS enquanto aproveita os benefícios da criptografia TLS automática.

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

Você pode usar o [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) para criptografar e descriptografar os recursos do Service Connect. O AWS KMS é um serviço gerenciado pela AWS no qual você pode criar e gerenciar chaves criptográficas que protegem seus dados.

Ao usar o AWS KMS com o Service Connect, você pode optar por usar uma chave de propriedade da AWS que a AWS gerencia para você ou escolher uma chave do AWS KMS existente. Você também pode [criar uma chave do AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) para usar.

**Como fornecer sua própria chave de criptografia**  
Você pode fornecer seus próprios materiais de chave ou usar um repositório de chaves externo por meio do AWS Key Management Service Import your own key into AWS KMS e especificar o nome do recurso da Amazon (ARN) dessa chave no Service Connect do Amazon ECS.

Veja abaixo um exemplo de política AWS KMS. Substitua os valores das *entradas do usuário* pelos seus.

------
#### [ 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 obter mais informações sobre políticas de chave, consulte [Creating a key policy](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html) no *Guia do desenvolvedor do AWS Key Management Service*.

**nota**  
O Service Connect só oferece suporte a chaves de criptografia simétricas do AWS KMS. Você não pode usar nenhum outro tipo de chave do AWS KMS para criptografar os recursos do Service Connect. Para obter ajuda para determinar se uma chave do AWS KMS é simétrica, consulte [Identificar chaves do KMS assimétricas](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html#identify-asymm-keys).

Para obter mais informações sobre chaves de criptografia simétricas do AWS Key Management Service, consulte [Symmetric encryption AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) no *Guia do desenvolvedor do AWS Key Management Service*.

# Habilitação do protocolo TLS para o Amazon ECS Service Connect
<a name="enable-service-connect-tls"></a>

Você habilita a criptografia de tráfego ao criar ou atualizar um serviço do Service Connect.

**Para habilitar a criptografia de tráfego de um serviço em um namespace existente usando o Console de gerenciamento da AWS**

1. É necessário ter o perfil do IAM de infraestrutura. Para obter mais informações sobre esse perfil, consulte [Perfil do IAM de infraestrutura do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html                     ).

1. Abra o console em [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. No painel de navegação, escolha **Namespaces**.

1. Escolha o **Namespace** com o **Serviço** para o qual gostaria de habilitar a criptografia de tráfego.

1. Escolha o **Serviço** para o qual gostaria de habilitar a criptografia de tráfego.

1. Escolha **Atualizar serviço** no canto superior direito e role para baixo até a seção Service Connect.

1. Escolha **Ativar criptografia de tráfego** nas informações do serviço para habilitar o TLS.

1. Em **Perfil do TLS do Service Connect**, escolha um perfil do IAM de infraestrutura existente ou crie um novo.

1. Em **Autoridade de certificação de signatário**, escolha uma autoridade de certificação existente ou crie uma nova.

   Para obter mais informações, consulte [Certificados da Autoridade de Certificação Privada da AWS e Service Connect](service-connect-tls.md#service-connect-tls-certificates).

1. Em **Escolher uma AWS KMS key**, escolha uma chave gerenciada e de propriedade da AWS ou selecione uma chave diferente. Você também pode criar uma nova.

Para obter um exemplo de uso da AWS CLI para configurar o protocolo TLS para seu serviço, consulte [Configuração do Amazon ECS Service Connect com a AWS CLI](create-service-connect.md).

# Verificação da habilitação do protocolo TLS para o Amazon ECS Service Connect
<a name="verify-tls-enabled"></a>

O Service Connect inicia o TLS no agente do Service Connect e o encerra no agente de destino. Como resultado, o código da aplicação nunca vê interações TLS. Use as etapas apresentadas a seguir para verificar se o protocolo TLS está habilitado.

1. Inclua a CLI do `openssl` na imagem da sua aplicação.

1. Habilite o [ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) nos serviços para se conectar às tarefas via SSM. Como alternativa, é possível iniciar uma instância do Amazon EC2 na mesma Amazon VPC do serviço.

1. Recupere o IP e a porta de uma tarefa de um serviço que deseja verificar. O endereço IP da tarefa pode ser recuperado no console do AWS Cloud Map. As informações estão na página de detalhes do serviço do namespace. 

1. Faça login em qualquer uma de suas tarefas usando `execute-command` como no exemplo apresentado a seguir. Como alternativa, faça login na instância do Amazon EC2 criada na **Etapa 2**.

   ```
   $ aws ecs execute-command --cluster cluster-name \
       --task task-id  \
       --container container-name \
       --interactive \
       --command "/bin/sh"
   ```
**nota**  
Chamar o nome do DNS diretamente não revela o certificado.

1. No shell conectado, use a CLI `openssl` para verificar e visualizar o certificado anexado à tarefa.

   Exemplo:

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

   Exemplo de resposta:

   ```
   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>
   ```

# Configuração do Amazon ECS Service Connect com a AWS CLI
<a name="create-service-connect"></a>

É possível criar um serviço do Amazon ECS para uma tarefa do Fargate que usa o Service Connect com a AWS CLI.

**nota**  
É possível usar endpoints de serviço de pilha dupla para interagir com o Amazon ECS via AWS CLI, SDKs e API do Amazon ECS sobre IPv4 e IPv6. Para obter mais informações, consulte [Usar endpoints de pilha dupla do Amazon ECS](dual-stack-endpoint.md).

## Pré-requisitos
<a name="create-service-connect-prereqs"></a>

Confira a seguir os pré-requisitos do Service Connect:
+ Verifique se a versão mais recente da AWS CLI está instalada e configurada. Para saber mais, consulte [Instalar ou atualizar para a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ O usuário do IAM tem as permissões necessárias especificadas no exemplo de política do IAM de [AmazonECS\$1FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess).
+ Você tem uma VPC, uma sub-rede, uma tabela de rotas e um grupo de segurança criados para serem usados. Para obter mais informações, consulte [Criar uma nuvem privada virtual](get-set-up-for-amazon-ecs.md#create-a-vpc).
+ Você tem um perfil de execução de tarefa com o nome `ecsTaskExecutionRole` e a política gerenciada `AmazonECSTaskExecutionRolePolicy` está anexada ao perfil. Esse perfil permite que o Fargate grave os logs da aplicação NGINX e os logs do proxy do Service Connect no Amazon CloudWatch Logs. Para obter mais informações, consulte [Criar a função de execução de tarefa do](task_execution_IAM_role.md#create-task-execution-role).

## Etapa 1: criar um cluster
<a name="create-service-connect-cluster"></a>

Use as etapas a seguir para criar um cluster e um namespace do Amazon ECS.

**Para criar o cluster e o namespace AWS Cloud Map do Amazon ECS**

1. Crie um cluster do Amazon ECS denominado `tutorial` a ser usado. O parâmetro `--service-connect-defaults` define o namespace padrão do cluster. Na saída do exemplo, um namespace do AWS Cloud Map com o nome `service-connect` não existe nessa conta nem na Região da AWS. Portanto, o namespace é criado pelo Amazon ECS. O namespace é criado no AWS Cloud Map na conta e é visível com todos os outros namespaces. Portanto, use um nome que indique a finalidade.

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

   Resultado:

   ```
   {
       "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. Verifique se o cluster foi criado:

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

   Resultado:

   ```
   {
       "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) verifique se o namespace foi criado no AWS Cloud Map. É possível usar o Console de gerenciamento da AWS ou a configuração normal da AWS CLI, pois ela é criada no AWS Cloud Map.

   Por exemplo, use a AWS CLI:

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

   Resultado:

   ```
   {
       "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"
       }
   }
   ```

## Etapa 2: criar o serviço para o servidor
<a name="create-service-connect-nginx-server"></a>

O recurso Service Connect é destinado à interconexão de várias aplicações no Amazon ECS. Pelo menos uma dessas aplicações precisa fornecer um serviço Web ao qual se conectar. Nessa etapa, você criará:
+ A definição de tarefa que usa a imagem oficial do contêiner NGINX não modificada e inclui a configuração do Service Connect.
+ A definição de serviço do Amazon ECS que configura o Service Connect para fornecer a descoberta de serviços e o proxy de malha de serviços para o tráfego desse serviço. A configuração reutiliza o namespace padrão da configuração do cluster para reduzir a quantidade de configuração de serviço feita para cada serviço.
+ O serviço do Amazon ECS. Ele executa uma tarefa usando a definição de tarefa e insere um contêiner adicional para o proxy do Service Connect. O proxy recebe a porta proveniente do mapeamento da porta do contêiner na definição de tarefa. Em uma aplicação cliente executada no Amazon ECS, o proxy na tarefa do cliente recebe as conexões de saída para o nome da porta de definição de tarefa, o nome da descoberta de serviços ou o nome do alias do cliente de serviço e o número da porta do alias do cliente.

**Como criar o serviço Web com o Service Connect**

1. Registre uma definição de tarefa compatível com o Fargate e use o modo de rede `awsvpc`. Siga estas etapas:

   1. Crie um arquivo denominado `service-connect-nginx.json` com o conteúdo da seguinte definição de tarefa.

      Essa definição de tarefa configura o Service Connect adicionando os parâmetros `name` e `appProtocol` ao mapeamento de portas. O nome da porta torna essa porta mais identificável na configuração do serviço quando várias portas são usadas. O nome da porta também é usado por padrão como o nome detectável para uso por outras aplicações no namespace.

      A definição da tarefa contém o perfil do IAM da tarefa, pois o serviço tem o ECS Exec ativado.
**Importante**  
Essa definição de tarefa usa a `logConfiguration` para enviar a saída do nginx de `stdout` e `stderr` para o Amazon CloudWatch Logs. Esse perfil de execução de tarefas não tem as permissões extras necessárias para a criação do grupo de logs do CloudWatch Logs. Crie o grupo de logs no CloudWatch Logs usando o Console de gerenciamento da AWS ou a AWS CLI. Se você não quiser enviar os logs do nginx para o CloudWatch Logs, poderá remover a `logConfiguration`.  
Substitua o ID da Conta da AWS no perfil de execução de tarefas pelo ID da sua Conta da 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 a definição de tarefa usando o arquivo `service-connect-nginx.json`:

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

1. Crie um serviço:

   1. Crie um arquivo denominado `service-connect-nginx-service.json` com o conteúdo do serviço do Amazon ECS que você está criando. Este exemplo usa a definição de tarefa criada na etapa anterior. Uma `awsvpcConfiguration` é necessária, pois o exemplo de definição de tarefa usa o modo de rede `awsvpc`.

      Ao criar o serviço do ECS, especifique o Fargate e a versão da plataforma `LATEST` que oferece suporte ao Service Connect. Os `securityGroups` e as `subnets` devem pertencer a uma VPC que tenha os requisitos para usar o Amazon ECS. É possível obter os IDs de grupos de segurança e sub-redes no console da Amazon VPC. 

      Esse serviço configura o Service Connect adicionando o parâmetro `serviceConnectConfiguration`. O namespace não é necessário porque o cluster tem um namespace padrão configurado. As aplicações cliente em execução no ECS no namespace se conectam a esse serviço usando o `portName` e a porta no `clientAliases`. Por exemplo, esse serviço pode ser acessado usando `http://nginx:80/`, pois o nginx fornece uma página de boas-vindas no `/` do local raiz. Aplicações externas que não estão sendo executadas no Amazon ECS ou não estão no mesmo namespace podem acessar essa aplicação por meio do proxy do Service Connect usando o endereço IP da tarefa e o número da porta da definição de tarefa. Na configuração do `tls`, adicione o `arn` do certificado para `awsPcaAuthorityArn`, `kmsKey` e `roleArn` do perfil do IAM.

      Esse serviço usa uma `logConfiguration` para enviar a saída do proxy de conexão do serviço de `stdout` e `stderr` para o Amazon CloudWatch Logs. Esse perfil de execução de tarefas não tem as permissões extras necessárias para a criação do grupo de logs do CloudWatch Logs. Crie o grupo de logs no CloudWatch Logs usando o Console de gerenciamento da AWS ou a AWS CLI. Recomendamos que você crie esse grupo de logs e armazene os logs de proxy no CloudWatch Logs. Se você não quiser enviar os logs do proxy para o CloudWatch Logs, poderá remover a `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. Crie um serviço usando o arquivo `service-connect-nginx-service.json`:

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

      Resultado:

      ```
      {
          "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
          }
      }
      ```

      A `serviceConnectConfiguration` que você forneceu aparece na primeira *implantação* da saída. À medida que você faz alterações no serviço do ECS de maneiras que precisam fazer alterações nas tarefas, uma nova implantação é criada pelo Amazon ECS.

## Etapa 3: verificar se você pode se conectar
<a name="create-service-connect-verify"></a>

Para verificar se o Service Connect está configurado e funcionando, siga estas etapas para se conectar ao serviço Web em uma aplicação externa. Em seguida, consulte as métricas adicionais que o proxy do Service Connect cria no CloudWatch.

**Para se conectar ao serviço Web em uma aplicação externa**
+ Conecte-se ao endereço IP da tarefa e à porta do contêiner usando o endereço IP da tarefa

  Use a AWS CLI para obter o ID da tarefa, usando o `aws ecs list-tasks --cluster tutorial`.

  Se suas sub-redes e seu grupo de segurança permitirem tráfego da Internet pública na porta da definição da tarefa, será possível se conectar ao IP público no seu computador. No entanto, o IP público não está disponível em “describe-tasks”. Portanto, as etapas envolvem acessar o Console de gerenciamento da AWS ou a AWS CLI do Amazon EC2 para obter os detalhes da interface de rede elástica.

  Nesse exemplo, uma instância do Amazon EC2 na mesma VPC usa o IP privado da tarefa. A aplicação é nginx, mas o cabeçalho `server: envoy` mostra que o proxy do Service Connect é usado. O proxy do Service Connect recebe a porta do contêiner vindo da definição de tarefa.

  ```
  $ 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 visualizar as métricas do Service Connect**  
O proxy do Service Connect cria métricas de aplicações (conexão HTTP, HTTP2, gRPC ou TCP) nas métricas do CloudWatch. Ao usar o console do CloudWatch, consulte as dimensões de métricas adicionais de **DiscoveryName**, (**DiscoveryName, ServiceName, ClusterName**), **TargetDiscoveryName** e (**TargetDiscoveryName, ServiceName, ClusterName**) no namespace do Amazon ECS. Para obter mais informações sobre essas métricas e dimensões, consulte [Visualizar métricas disponíveis](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) no Guia do usuário do Amazon CloudWatch Logs.