

# Função vinculada ao serviço para solicitações de instâncias spot
<a name="service-linked-roles-spot-instance-requests"></a>

O Amazon EC2 usa funções vinculadas ao serviço para as permissões necessárias para chamar outros produtos da AWS em seu nome. O perfil vinculado ao serviço é um tipo exclusivo de perfil do IAM vinculado diretamente ao AWS service (Serviço da AWS). Os perfis vinculados a serviços oferecem uma maneira segura de delegar permissões a outros Serviços da AWS, pois somente o serviço vinculado pode assumir uma função vinculada ao serviço. Para obter mais informações, consulte [Perfis vinculados ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) no *Guia do usuário do IAM*.

O Amazon EC2 usa a função vinculada ao serviço denominada **AWSServiceRoleForEC2Spot** para executar e gerenciar Instâncias spot em seu nome.

## Permissões concedidas pelo AWSServiceRoleForEC2Spot
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2Spot"></a>

O Amazon EC2 usa **AWSServiceRoleForEC2Spot** para concluir as ações a seguir:
+ `ec2:DescribeInstances` – Descrever instâncias spot
+ `ec2:StopInstances` – Parar instâncias spot
+ `ec2:StartInstances` – Iniciar instâncias spot

## Criar a função vinculada ao serviço
<a name="service-linked-role-creating-for-spot"></a>

Na maioria das circunstâncias, você não precisa criar manualmente uma função vinculada ao serviço. O Amazon EC2 cria a função **AWSServiceRoleForEC2Spot** vinculada ao serviço na primeira vez que você solicita uma instância spot usando o console.

Se você tinha uma solicitação de instância spot ativa antes de outubro de 2017, quando o Amazon EC2 começou a oferecer suporte a essa função vinculada ao serviço, o Amazon EC2 criou a função **AWSServiceRoleForEC2Spot** em sua conta da AWS. Para obter mais informações, consulte [Uma nova função apareceu na minha conta](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared) no *Guia do usuário do IAM*.

Se você usar a AWS CLI ou uma API para solicitar uma instância spot, deverá assegurar que essa função existe.

**Para criar **AWSServiceRoleForEC2Spot** usando o console**

1. Abra o console do IAM em [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

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

1. Selecione **Create role**.

1. Na página **Select type of trusted entity (Selecionar tipo de entidade confiável)**, escolha **EC2**, **EC2 - Spot Instances (EC2 - instâncias spot)**, **Next: Permissions (Próximo: permissões)**.

1. Na próxima página, escolha **Next:Review (Próximo: revisar)**.

1. Na página **Review (Revisar)**, selecione **Create role (Criar função)**.

**Para criar **AWSServiceRoleForEC2Spot** usando a AWS CLI**  
Use o comando [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) da seguinte forma.

```
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
```

Se você não precisar mais usar Instâncias spot, é recomendável excluir a função **AWSServiceRoleForEC2Spot**. Depois que essa função for excluída da sua conta, o Amazon EC2 criará a função novamente se você solicitar Instâncias spot.

## Conceder acesso às chaves gerenciadas pelo cliente para uso com AMIs criptografadas e snapshots do EBS
<a name="spot-instance-service-linked-roles-access-to-cmks"></a>

Se você especificar uma [AMI criptografada](AMIEncryption.md) ou um snapshot do Amazon EBS criptografado para suas instâncias spot e usar uma chave gerenciada pelo cliente para criptografia, deverá conceder à função **AWSServiceRoleForEC2Spot** permissão para usar a chave gerenciada pelo cliente de forma que o Amazon EC2 consiga executar instâncias spot em seu nome. Para isso, adicione uma concessão à chave gerenciada pelo cliente, conforme exibido no procedimento a seguir.

Durante a definição de permissões, as concessões são uma alternativa às políticas de chave. Para obter mais informações, consulte [Uso de concessões](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) e [Uso de políticas de chave no AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), no *Guia do desenvolvedor do AWS Key Management Service*.

**Para conceder as permissões para a função **AWSServiceRoleForEC2Spot** para usar a chave gerenciada pelo cliente**
+ Use o comando [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) para adicionar uma concessão à chave gerenciada pelo cliente e especificar a entidade principal (a função vinculada ao serviço **AWSServiceRoleForEC2**) que recebe permissão para executar as operações permitidas pela concessão. A chave gerenciada pelo cliente é especificada pelo parâmetro `key-id` e o ARN da chave gerenciada pelo cliente. A entidade principal é especificada pelo parâmetro `grantee-principal` e pelo ARN da função vinculada ao serviço **AWSServiceRoleForEC2Spot**.

  ```
  aws kms create-grant \
      --region us-east-1 \
      --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \
      --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```