Depuração de código em um cluster do Amazon Elastic Container Service usando o AWS Toolkit for JetBrains - AWS Toolkit for JetBrains

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Depuração de código em um cluster do Amazon Elastic Container Service usando o AWS Toolkit for JetBrains

Você pode usar o AWS Toolkit for JetBrains para depurar código em um cluster do Amazon Elastic Container Service (Amazon ECS) em uma conta da AWS.

nota

O código de depuração em clusters do Amazon ECS está atualmente disponível em beta.

Este recurso destina-se ao uso em um ambiente de desenvolvimento. Não deve ser usado em um ambiente de produção. O código de depuração em um cluster do Amazon ECS altera o estado dos recursos da sua conta da AWS, incluindo, entre outros, a interrupção dos serviços do Amazon ECS associados e a alteração das suas configurações. Além disso, alterar manualmente o estado dos recursos enquanto a depuração de código está ativada pode levar a resultados imprevisíveis.

Prerequisites

Antes de começar a depurar seu código, você deve ter o seguinte:

  1. A imagem do Docker que você deseja usar para depurar seu código. Essa imagem pode ser hospedada em qualquer uma das seguintes opções:

    nota

    Se ainda não tiver uma imagem disponível, recomendamos uma das seguintes opções:

  2. Em sua conta da AWS, uma função do AWS Identity and Access Management (IAM) com permissões da AWS que são necessárias para o código que você deseja depurar. Essa função será usada como função de tarefa pelo Amazon Elastic Container Service (Amazon ECS). Essa função de tarefa do também deve ter uma relação de confiança com oecs-tasks.amazonaws.comprincipal de serviço e deve conter uma referência aoAmazonSSMManagedInstanceCorePolítica gerenciada da AWS. Para obter mais informações, consulte comoconfigurar a função de tarefa do Amazon ECS.

  3. Em sua conta da AWS, um cluster do Amazon ECS que contenha o serviço que você deseja depurar. Para obter mais informações, consulte comoConfigurar o cluster do Amazon ECS.

  4. Em sua conta da AWS, uma política gerenciada pelo cliente do IAM específica que você adiciona à entidade do IAM apropriada do IAM (como um usuário, grupo ou função do IAM) associada a credenciais da AWS especificadas quando você conecta ao AWS Toolkit for JetBrains. Para obter mais informações, consulte comoAdicione a política gerenciada pelo cliente do IAM à entidade do IAM.

  5. Em sua máquina de desenvolvimento local, uma cópia do código que você deseja depurar.

Código de depuração

Depois de completar os pré-requisitosanteriores, você pode depurar seu código da seguinte forma:

  1. Abrir o AWS Explorer, se ainda não estiver aberto. Se oCluster do Amazon ECSO está em uma Região da AWS que seja diferente da atual,Alternar para uma região da AWS diferenteque o contém.

  2. Expanda ECS, e, em seguida, expanda Clusters.

  3. Expanda o cluster do Amazon ECS, clique com o botão direito do mouse no serviço e escolhaHabilitar depuração na nuvem. Por exemplo, na captura de tela a seguir, o cluster é denominado java e o serviço java-service.

    
        Habilitar depuração na nuvem no AWS Explorer
  4. Quando solicitado, selecione oFunção da tarefa do Amazon ECSe, depois, escolhaOK.

    A barra de status exibe a mensagem Configuring Cloud Debugging resource (Configuração do recurso de depuração na nuvem). Aguarde até que a guia Build Output (Saída da compilação) da janela de ferramentas Build (Compilar) exiba uma mensagem de configuração bem-sucedida. (Um pop-up relacionado também é exibido no canto inferior direito.) Isso levará vários minutos.

    nota

    À medida que você ativa a depuração de código em sua conta da AWS pela primeira vez, o AWS Toolkit for JetBrains cria um bucket do Amazon S3 em sua conta da AWS. O nome do bucket segue o formato de do-not-delete-cloud-debug-Region-ID-account-ID. O JetBrains Toolkit armazena informações nesse bucket para ativar a depuração de código. Não exclua esse bucket nem modifique seu conteúdo. Se fizer isso, a depuração de código pode parar de funcionar ou produzir resultados inesperados. Se esse bucket for excluído ou modificado acidentalmente, o JetBrains Toolkit do tentará recriar o bucket. Você também pode forçar o JetBrains Toolkit a recriar o bucket escolhendoHabilitar depuração na nuvemnovamente conforme descrito anteriormente, ou escolhendoDesativar depuração na nuvemComo descrito posteriormente neste procedimento.

  5. Exibindo o código que você deseja depurar, naAWS Explorer, expandaECS, expandaClusterse, em seguida, expanda seu cluster. Um serviço é exibido com um ícone de depuração ao lado dele. Isso indica que agora o serviço está ativado para depuração na nuvem. Clique com o botão direito do mouse no serviço com o ícone de depuração e escolha Debug (Depurar).

    
        Depuração de um serviço do Amazon ECS no AWS Explorer
  6. Preencha a caixa de diálogo Edit configuration (Editar configuração) e escolha Debug (Depurar).

    nota

    Para fazer alterações nessa configuração posteriormente, na barra de menus, escolha Run (Executar), Edit Configurations (Editar configurações). Depois expandaDepuração na nuvem do Amazon ECSe escolha o nome do serviço.

  7. Use as ferramentas de depuração integradas do IDE para depurar seu código como de costume.

  8. Se fizer alterações no código do, você pode começar a depurar novamente. NoAWS Explorer, expandaECS, expandaClusterse, em seguida, expanda seu cluster. Clique com o botão direito do mouse no serviço que tem o ícone de depuração ao lado e escolha Debug (Depurar).

  9. Se fizer alterações no Dockerfile associado, você deverá recompilar e publicar a imagem do Docker e, em seguida, repetir esse procedimento desde o início.

  10. Para desativar a depuração, noAWS Explorer, expandaECS, expandaClusterse, em seguida, expanda seu cluster. Clique com o botão direito do mouse no serviço que tem o ícone de depuração ao lado e escolha Disable Cloud Debugging (Desativar depuração na nuvem). Um pop-up é exibido, confirmando que a depuração está desativada.

Configurando a função de tarefa do Amazon ECS

Observe que as informações a seguir se aplicam a permissões que o Amazon ECS precisa, o que é diferente doPermissões de que o AWS Toolkit for JetBrains precisa.

Para depurar código em clusters do Amazon Elastic Container Service (Amazon ECS), primeiro é necessário ter em sua conta da AWS uma função do AWS Identity and Access Management (IAM) com permissões da AWS que sejam necessárias para o código que você deseja depurar. Essa função será usada como função de tarefa pelo Amazon Elastic Container Service (Amazon ECS). Essa função de tarefa do também deve ter uma relação de confiança com oecs-tasks.amazonaws.comprincipal de serviço e deve conter uma referência aoAmazonSSMManagedInstanceCorePolítica gerenciada da AWS.

Para criar uma função que atendam a esses requisitos, consulte.Criar uma função para um serviço da AWS (console)No Guia do usuário do IAM, especificando as configurações a seguir:

  1. Em Choose the service that will use this role (Escolher o serviço que usará esta função), escolha Elastic Container Service.

  2. Em Select your use case (Selecionar seu caso de uso), escolha Elastic Container Service Task (Tarefa de serviço do contêiner elástico).

  3. Em Attach permissions policies (Anexar políticas de permissões), escolha AmazonSSMManagedInstanceCore.

Para adicionar permissões adicionais da AWS a uma função de tarefa do Amazon ECS existente, consulte “Para alterar as permissões permitidas por uma função do (console)” emModificação de uma função (console)no Guia do usuário do IAM.

Configuração do cluster do Amazon ECS

Para depurar código em clusters do Amazon Elastic Container Service (Amazon ECS), primeiro é necessário ter em sua conta da AWS um cluster do Amazon ECS que contenha o serviço que você deseja depurar.

Configuração de um Cluster do Fargate

Para criar rapidamente um cluster do Fargate, serviço e definição de tarefa que atendam aos requisitos mínimos, consulte.Introdução ao Amazon ECS usando o Fargateno Guia do usuário do Amazon Elastic Container Service for AWS Fargate. As únicas configurações necessárias estão noEtapa 1: Contêiner e tarefa. Especificamente, depois de especificar um nome para o contêiner, para Container definition (Definição de contêiner), escolha Configure (Configurar). Em seguida, especifique uma Image (Imagem) que seja compatível com o código que você deseja depurar.

Configuração de um cluster do Amazon EC2

Para obter informações sobre como criar um cluster gerenciado pelo Amazon EC2, consulte.Introdução ao Amazon ECS Usando o Amazon EC2 SnoGuia do Amazon Elastic Container Service

nota

Se ainda não tiver uma imagem disponível, recomendamos uma das seguintes opções:

Para cenários avançados, você pode criar um cluster, definição de tarefa e serviço de forma independente. Para fazer isso, consulte o seguinte no Guia do desenvolvedor do Amazon Elastic Container Service:

  • Criar um cluster— ParaSelecionar modelo de cluster, é possível escolherSomente rede (para Fargate)ouLinux no EC2 + Redes (para EC2).

  • Como criar uma definição de tarefa— ParaSelecionar compatibilidade do tipo de lançamento, escolha o tipo de lançamento correspondente.

  • Criar um serviço— ParaConfigurar o serviço, escolha a opção correspondenteTipo de inicialização.

Adicionar a política gerenciada pelo cliente do IAM

Observe que as informações a seguir se aplicam a permissões de que o AWS Toolkit for JetBrains precisa, o que é diferente dopermissões que o Amazon ECS precisa.

Ao configurar o código de depuração em clusters do Amazon ECS, recomendamos enfaticamente seguir a prática recomendada de segurança da AWS doConceder privilégio mínimo. Conceder mínimo privilégio significa proporcionar apenas as permissões necessárias para executar uma tarefa. Para conceder privilégio mínimo para depuração de código em clusters do Amazon ECS, você deve anexar uma política gerenciada pelo cliente do IAM do específica a uma entidade do IAM (como um usuário, grupo ou função do IAM), como descrito a seguir. Essa entidade do IAM deve estar associada às credenciais especificadas quandoConecte-se ao AWS Toolkit for JetBrains.

Na declaração de política a seguir, a permissão é concedida a dois serviços do Amazon ECS chamadosMyServiceeMyOtherServicebem como para duas funções de tarefa do Amazon ECS chamadasMyTaskRoleeMyOtherTaskRolee duas funções de tarefa de execução do Amazon ECS denominadasMyExecutionTaskRoleeMyOtherExecutionTaskRole. Altere os nomes desses serviços de exemplo e funções de tarefa para corresponder ao seu próprio e, em seguida, anexe essa política à entidade do IAM apropriada.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowedECSServices", "Effect": "Allow", "Action": [ "ecs:UpdateService" ], "Resource": [ "arn:aws:ecs:*:*:service/*/cloud-debug-*", "arn:aws:ecs:*:*:service/*/MyService", "arn:aws:ecs:*:*:service/*/MyOtherService" ] }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:ListRoles", "iam:SimulatePrincipalPolicy" ], "Resource": "*" }, { "Sid": "AllowedIAMRoles", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/MyTaskExecutionRole", "arn:aws:iam::*:role/MyOtherTaskExecutionRole", "arn:aws:iam::*:role/MyTaskRole", "arn:aws:iam::*:role/MyOtherRole" ], "Condition": { "StringEquals": { "iam:PassedToService": "ecs-tasks.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::do-not-delete-cloud-debug-*" }, { "Effect": "Allow", "Action": [ "ecs:ListClusters", "ecs:ListServices", "ecs:DescribeServices", "ecs:ListTasks", "ecs:DescribeTasks", "ecs:DescribeTaskDefinition", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeTargetGroups", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": [ "arn:aws:logs:*:*:cloud-debug*" ] }, { "Effect": "Allow", "Action": [ "ecs:CreateService", "ecs:DeleteService" ], "Resource": "arn:aws:ecs:*:*:service/*/cloud-debug*" }, { "Effect": "Allow", "Action": [ "ecs:RegisterTaskDefinition" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:ModifyListener", "elasticloadbalancing:ModifyRule", "elasticloadbalancing:ModifyTargetGroupAttributes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteTargetGroup" ], "Resource": "arn:aws:elasticloadbalancing:*:*:targetgroup/cloud-debug*" }, { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "application-autoscaling:RegisterScalableTarget", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets" ], "Resource": "*" } ] }

Você pode usar ferramentas como o console do IAM no Console de Gerenciamento da AWS paraCriar uma política gerenciada pelo cliente do IAMe entãoadicionar a política à entidade apropriada do IAM(como um usuário, grupo ou função do IAM).