Função vinculada ao serviço para o Amazon ECS - Amazon Elastic Container Service

Função vinculada ao serviço para o Amazon ECS

O Amazon ECS usa funções vinculadas ao serviço para as permissões de que o serviço precisa para chamar outros serviços da AWS em seu nome. Para obter mais informações, consulte Usar funções vinculadas ao serviço no Guia do usuário do IAM.

Permissões concedidas pela função vinculada ao serviço

O Amazon ECS usa a função vinculada ao serviço denominada AWSServiceRoleForECS para habilitar o Amazon ECS para chamar APIs da AWS em seu nome.

A função vinculada a serviço AWSServiceRoleForECS confia na entidade principal do serviço ecs.amazonaws.com para assumir a função.

A política de permissões da função permite que o Amazon ECS execute as seguintes ações nos recursos.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECSTaskManagement", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:Describe*", "ec2:DetachNetworkInterface", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:Describe*", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterTargets", "route53:ChangeResourceRecordSets", "route53:CreateHealthCheck", "route53:DeleteHealthCheck", "route53:Get*", "route53:List*", "route53:UpdateHealthCheck", "servicediscovery:DeregisterInstance", "servicediscovery:Get*", "servicediscovery:List*", "servicediscovery:RegisterInstance", "servicediscovery:UpdateInstanceCustomHealthStatus" ], "Resource": "*" }, { "Sid": "AutoScaling", "Effect": "Allow", "Action": [ "autoscaling:Describe*" ], "Resource": "*" }, { "Sid": "AutoScalingManagement", "Effect": "Allow", "Action": [ "autoscaling:DeletePolicy", "autoscaling:PutScalingPolicy", "autoscaling:SetInstanceProtection", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:ResourceTag/AmazonECSManaged": "false" } } }, { "Sid": "AutoScalingPlanManagement", "Effect": "Allow", "Action": [ "autoscaling-plans:CreateScalingPlan", "autoscaling-plans:DeleteScalingPlan", "autoscaling-plans:DescribeScalingPlans" ], "Resource": "*" }, { "Sid": "CWAlarmManagement", "Effect": "Allow", "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm" ], "Resource": "arn:aws:cloudwatch:*:*:alarm:*" }, { "Sid": "ECSTagging", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*" }, { "Sid": "CWLogGroupManagement", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*" }, { "Sid": "CWLogStreamManagement", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*:log-stream:*" }, { "Sid": "ExecuteCommandSessionManagement", "Effect": "Allow", "Action": [ "ssm:DescribeSessions" ], "Resource": "*" }, { "Sid": "ExecuteCommand", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ecs:*:*:task/*", "arn:aws:ssm:*:*:document/AmazonECS-ExecuteInteractiveCommand" ] } ] }

Criar a função vinculada ao serviço

Na maioria das circunstâncias, não é necessário criar manualmente uma função vinculada ao serviço. Por exemplo, quando você cria um novo cluster (por exemplo, com a experiência de primeira execução do Amazon ECS, o assistente de criação de cluster ou a AWS CLI ou os SDKs) ou cria ou atualiza um serviço no AWS Management Console, o Amazon ECS cria a função vinculada ao serviço para você, caso ela ainda não exista.

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo ou função) crie, edite ou exclua uma função vinculada ao serviço.

Para permitir que uma entidade do IAM crie funções vinculados ao serviço AWSServiceRoleForECS

Adicione a seguinte declaração à política de permissões da entidade do IAM que precisa criar a função vinculada ao serviço:

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS*", "Condition": {"StringLike": {"iam:AWSServiceName": "ecs.amazonaws.com"}} }

Criar uma função vinculada ao serviço no IAM (AWS CLI)

Você pode usar comandos do IAM no AWS Command Line Interface para criar uma função vinculada ao serviço com a política de confiança e as políticas em linha de que o serviço precisa para assumir a função.

Para criar uma função vinculada ao serviço (CLI)

Use o seguinte comando:

$ aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

Editar a função vinculada ao serviço

Depois que criar uma função vinculada ao serviço, você não poderá alterar o nome da função, pois várias entidades podem fazer referência a ela. Não é possível editar a política do IAM de propriedade da AWS que a função vinculada ao serviço do Amazon ECS usa, pois ela contém todas as permissões necessárias de que o Amazon ECS precisa. No entanto, você poderá editar a descrição da função.

Para permitir que uma entidade do IAM edite a descrição da função vinculada ao serviço AWSServiceRoleForECS

Adicione a seguinte declaração à política de permissões da entidade do IAM que precisa editar a descrição de uma função vinculada ao serviço:

{ "Effect": "Allow", "Action": [ "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS*", "Condition": {"StringLike": {"iam:AWSServiceName": "ecs.amazonaws.com"}} }

Excluir a função vinculada ao serviço

Se você não usa mais o Amazon ECS, recomendamos que você exclua a função vinculada ao serviço. Dessa forma, você não tem uma entidade não utilizada que não seja monitorada ativamente ou mantida. Contudo, você deve excluir todos os clusters do Amazon ECS em todas as regiões antes de poder excluir a função vinculada ao serviço.

Para permitir que uma entidade do IAM exclua a função vinculados ao serviço AWSServiceRoleForECS

Adicione a seguinte declaração à política de permissões da entidade do IAM que precisa excluir uma função vinculada ao serviço:

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS*", "Condition": {"StringLike": {"iam:AWSServiceName": "ecs.amazonaws.com"}} }

Limpar uma função vinculada ao serviço

Antes de você poder usar o IAM para excluir uma função vinculada ao serviço, é preciso primeiro confirmar que a função não tem sessões ativas e excluir todos os clusters do Amazon ECS em todas as regiões da AWS.

Para verificar se a função vinculada ao serviço tem uma sessão ativa

  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Roles (Funções) e escolha o nome AWSServiceRoleForECS (e não a caixa de seleção).

  3. Na página Summary (Resumo), escolha Access Advisor (Consultor de acesso) e analise as atividades recentes para a função vinculada ao serviço.

    nota

    Se você não tiver certeza se o Amazon ECS está usando a função AWSServiceRoleForECS, poderá tentar excluir a função. Se o serviço está usando a função, a exclusão falha e você pode visualizar as regiões em que a função está sendo usada. Se a função está sendo usada, você deve aguardar a sessão final antes de excluir a função. Você não pode revogar a sessão para uma função vinculada a serviço.

Para remover os recursos do Amazon ECS usados pela função vinculada ao serviço AWSServiceRoleForECS

Você deve excluir todos os clusters do Amazon ECS em todas as regiões da AWS antes de poder excluir a função AWSServiceRoleForECS.

  1. Dimensione todos os serviços do Amazon ECS até a contagem desejada de 0 em todas as regiões e, em seguida, exclua os serviços. Para obter mais informações, consulte Atualizar um serviço e Excluir um serviço.

  2. Cancele à força o registro de todas as instâncias de contêiner de todos os clusters em todas as regiões. Para obter mais informações, consulte . Cancelar o registro de uma instância de contêiner baseada no Amazon EC2.

  3. Exclua todos os clusters do Amazon ECS em todas as regiões. Para obter mais informações, consulte . Excluir um cluster.

Excluir uma função vinculada ao serviço no IAM (Console)

É possível usar o console do IAM para excluir uma função vinculada ao serviço.

Para excluir uma função vinculada ao serviço (console)

  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação do console do IAM, selecione Roles (Funções). Marque a caixa de seleção ao lado de AWSServiceRoleForECS e não o nome ou a linha em si.

  3. Selecione Delete role (Excluir função).

  4. Na caixa de diálogo de confirmação, revise os dados do último acesso ao serviço, que mostram quando cada uma das funções selecionadas acessou pela última vez um serviço da AWS. Isso ajuda você a confirmar se a função está ativo no momento. Se você deseja continuar, escolha Sim, excluir para enviar a função vinculada ao serviço para exclusão.

  5. Observe as notificações do console do IAM para monitorar o progresso da exclusão da função vinculada ao serviço. Como a exclusão da função vinculada ao serviço do IAM é assíncrona, depois de enviar a função para exclusão, a tarefa de exclusão pode ou não ser bem-sucedida.

    • Se a tarefa for bem-sucedida, a função será removida da lista e uma notificação de sucesso será exibida na parte superior da página.

    • Se a tarefa falhar, você pode escolher Visualizar detalhes ou Exibir recursos a partir das notificações para saber por que a exclusão falhou. Se a exclusão falhar porque a função está usando os recursos do serviço, a notificação inclui uma lista de recursos, se o serviço retorna essas informações. Você pode então limpar os recursos e submeter novamente a exclusão.

      nota

      Você pode repetir esse processo várias vezes, de acordo com as informações que o serviço retorna. Por exemplo, a função vinculada ao serviço pode usar seis recursos e seu serviço pode retornar informações sobre cinco deles. Se você limpar cinco recursos e enviar a função para exclusão novamente, a deleção falha e o serviço reporta o recurso remanescente. Um serviço pode retornar todos os recursos, alguns deles, ou pode não reportar nenhum recurso.

    • Se a tarefa falhar e a notificação não inclui uma lista de recursos, o serviço pode não retornar essas informações. Para saber como limpar os recursos para esse serviço, consulte Serviços da AWS compatíveis com o IAM. Encontre o serviço na tabela e escolha o link Sim para visualizar a documentação da função vinculada desse serviço.

Excluir uma função vinculada ao serviço no IAM (AWS CLI)

Você pode usar comandos do IAM no AWS Command Line Interface para excluir uma função vinculada ao serviço.

Para excluir uma função vinculado ao serviço (CLI)

  1. Como uma função vinculada ao serviço não podem ser excluída se estiver sendo usada ou tem recursos associados, você deve enviar uma solicitação de exclusão. Essa solicitação pode ser negada se essas condições não forem atendidas. Você deve capturar o deletion-task-id da resposta para verificar o estado da tarefa de exclusão. Insira o seguinte comando para enviar uma solicitação de exclusão de função vinculada ao serviço:

    $ aws iam delete-service-linked-role --role-name AWSServiceRoleForECS+OPTIONAL-SUFFIX
  2. Use o seguinte comando para conferir o estado da tarefa de exclusão:

    $ aws iam get-service-linked-role-deletion-status --deletion-task-id deletion-task-id

    O status da tarefa de exclusão pode ser NOT_STARTED, IN_PROGRESS, SUCCEEDED, ou FAILED. Se a exclusão falhar, a chamada retorna o motivo de falha para que você possa solucionar problemas. Se a exclusão falhar porque a função está usando os recursos do serviço, a notificação inclui uma lista de recursos, se o serviço retorna essas informações. Você pode então limpar os recursos e submeter novamente a exclusão.

    nota

    Você pode repetir esse processo várias vezes, de acordo com as informações que o serviço retorna. Por exemplo, a função vinculada ao serviço pode usar seis recursos e seu serviço pode retornar informações sobre cinco deles. Se você limpar cinco recursos e enviar a função para exclusão novamente, a deleção falha e o serviço reporta o recurso remanescente. Um serviço pode retornar todos os recursos, alguns deles, ou pode não reportar nenhum recurso. Para saber como limpar os recursos de um serviço que não reporta qualquer recurso, consulte Serviços da AWS compatíveis com o IAM. Encontre o serviço na tabela e escolha o link Sim para visualizar a documentação da função vinculada desse serviço.

Excluir uma função vinculada ao serviço no IAM (API da AWS)

É possível usar a API do IAM para excluir uma função vinculada ao serviço.

Para excluir uma função vinculado ao serviço (API)

  1. Para enviar uma solicitação de exclusão de um roll vinculada ao serviço, chame DeleteServiceLinkedRole. Na solicitação, especifique o nome da função AWSServiceRoleForECS.

    Como uma função vinculada ao serviço não podem ser excluída se estiver sendo usada ou tem recursos associados, você deve enviar uma solicitação de exclusão. Essa solicitação pode ser negada se essas condições não forem atendidas. Você deve capturar o DeletionTaskId da resposta para verificar o estado da tarefa de exclusão.

  2. Para verificar o status da exclusão, chame GetServiceLinkedRoleDeletionStatus. Na solicitação, especifique o DeletionTaskId.

    O status da tarefa de exclusão pode ser NOT_STARTED, IN_PROGRESS, SUCCEEDED, ou FAILED. Se a exclusão falhar, a chamada retorna o motivo de falha para que você possa solucionar problemas. Se a exclusão falhar porque a função está usando os recursos do serviço, a notificação inclui uma lista de recursos, se o serviço retorna essas informações. Você pode então limpar os recursos e submeter novamente a exclusão.

    nota

    Você pode repetir esse processo várias vezes, de acordo com as informações que o serviço retorna. Por exemplo, a função vinculada ao serviço pode usar seis recursos e seu serviço pode retornar informações sobre cinco deles. Se você limpar cinco recursos e enviar a função para exclusão novamente, a deleção falha e o serviço reporta o recurso remanescente. Um serviço pode retornar todos os recursos, alguns deles, ou pode não reportar nenhum recurso. Para saber como limpar os recursos de um serviço que não reporta qualquer recurso, consulte Serviços da AWS compatíveis com o IAM. Encontre o serviço na tabela e escolha o link Sim para visualizar a documentação da função vinculada desse serviço.