Etapa 2: criar uma função de serviço para CodeDeploy - AWS CodeDeploy

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

Etapa 2: criar uma função de serviço para CodeDeploy

Na AWS, funções de serviço são usadas para conceder permissões a um serviço da AWS para que ele possa acessar recursos da AWS. As políticas que você anexa à função de serviço determinam quais recursos o serviço pode acessar e o que ele pode fazer com esses recursos.

A função de serviço para a qual você cria CodeDeploy deve receber as permissões necessárias para sua plataforma de computação. Se você implantar em mais de uma plataforma de computação, crie uma função de serviço para cada uma. Para adicionar permissões, anexe uma ou mais das seguintes políticas AWS fornecidas:

Para implantações EC2/locais, anexe a política. AWSCodeDeployRole Ela fornece as permissões à função de serviço para:

  • Leia as tags em suas instâncias ou identifique suas instâncias do Amazon EC2 pelos nomes de grupos do Amazon EC2 Auto Scaling.

  • Leia, crie, atualize e exclua grupos, ganchos de ciclo de vida e políticas de escalabilidade do Amazon EC2 Auto Scaling.

  • Publique informações nos tópicos do Amazon SNS.

  • Recupere informações sobre CloudWatch alarmes.

  • Leia e atualize o Elastic Load Balancing.

    nota

    Se você criar seu grupo de Auto Scaling com um modelo de lançamento, deverá adicionar as seguintes permissões:

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    Para obter mais informaçõesEtapa 2: criar uma função de serviço, consulte Criação de um modelo de lançamento para um grupo de Auto Scaling e Suporte ao modelo de lançamento no Guia do usuário do Amazon EC2 Auto Scaling.

Para implantações do Amazon ECS, se você quiser acesso total aos serviços de suporte, anexe a AWSCodeDeployRoleForECS política. Ela fornece as permissões à função de serviço para:

  • Leia, atualize e exclua conjuntos de tarefas do Amazon ECS.

  • Atualize grupos-alvo, ouvintes e regras do Elastic Load Balancing.

  • Invocar funções AWS Lambda.

  • Acesse arquivos de revisão nos buckets do Amazon S3.

  • Recupere informações sobre CloudWatch alarmes.

  • Publique informações nos tópicos do Amazon SNS.

Para implantações do Amazon ECS, se você quiser acesso limitado aos serviços de suporte, anexe a AWSCodeDeployRoleForECSLimited política. Ela fornece as permissões à função de serviço para:

  • Leia, atualize e exclua conjuntos de tarefas do Amazon ECS.

  • Recupere informações sobre CloudWatch alarmes.

  • Publique informações nos tópicos do Amazon SNS.

Para implantações do AWS Lambda, se você quiser permitir a publicação no Amazon SNS, anexe a política. AWSCodeDeployRoleForLambda Ela fornece as permissões à função de serviço para:

  • Ler, atualizar e invocar funções AWS Lambda e aliases.

  • Acesse arquivos de revisão nos buckets do Amazon S3.

  • Recupere informações sobre CloudWatch alarmes.

  • Publique informações nos tópicos do Amazon SNS.

Para implantações do AWS Lambda, se você quiser limitar o acesso ao Amazon SNS, anexe a política. AWSCodeDeployRoleForLambdaLimited Ela fornece as permissões à função de serviço para:

  • Ler, atualizar e invocar funções AWS Lambda e aliases.

  • Acesse arquivos de revisão nos buckets do Amazon S3.

  • Recupere informações sobre CloudWatch alarmes.

Como parte da configuração da função de serviço, você também atualiza seu relacionamento de confiança para especificar os endpoints aos quais deseja conceder acesso.

Você pode criar uma função de serviço com o console do IAMAWS CLI, o ou as APIs do IAM.

Criar uma função de 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, escolha Roles (Funções) e Create role (Criar função).

  3. Escolha AWSserviço e, em Caso de uso, na lista suspensa, escolha. CodeDeploy

  4. Escolha seu caso de uso:

    • Para implantações EC2/locais, escolha. CodeDeploy

    • Para implantações do AWS Lambda, escolha Lambda. CodeDeploy

    • Para implantações do Amazon ECS, escolha CodeDeploy - ECS.

  5. Escolha Avançar.

  6. Na página Adicionar permissões, a política de permissões correta para o caso de uso é exibida. Escolha Avançar.

  7. Na página Nome, revisão e criação, em Nome da função, insira um nome para a função de serviço (por exemplo,CodeDeployServiceRole) e escolha Criar função.

    Você também pode inserir uma descrição para essa função de serviço em Descrição da função.

  8. Se quiser que essa função de serviço tenha permissão para acessar todos os endpoints atualmente com suporte, você concluiu este procedimento.

    Para restringir o acesso dessa função de serviço a alguns endpoints, continue com as etapas restantes desse procedimento.

  9. Na lista de funções, pesquise e escolha a função que você acabou de criar (CodeDeployServiceRole).

  10. Selecione a guia Trust relationships (Relações de confiança).

  11. Escolha Edit trust policy (Editar política de confiança).

    Você verá a seguinte política, que fornece permissão à função de serviço para acessar todos os endpoints com suporte:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    Para conceder à função de serviço acesso somente a alguns endpoints compatíveis, substitua o conteúdo da caixa de texto da política de confiança pela política a seguir. Remova as linhas dos endpoints aos quais você deseja impedir o acesso e escolha Atualizar política.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Para obter mais informações sobre a criação de funções de serviço, consulte Como criar uma função para delegar permissões a um AWS serviço no Guia do usuário do IAM.

Criar uma função de serviço (CLI)

  1. Na sua máquina de desenvolvimento, crie um arquivo de texto denominado, por exemplo, CodeDeployDemo-Trust.json. Esse arquivo é usado para permitir que o CodeDeploy trabalhe em seu nome.

    Faça um dos seguintes procedimentos:

    • Para conceder acesso a todas as AWS regiões suportadas, salve o seguinte conteúdo no arquivo:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    • Para conceder acesso a apenas algumas regiões com suporte, digite o seguinte conteúdo no arquivo e remova as linhas para as regiões às quais você deseja excluir o acesso:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
      nota

      Não use uma vírgula após o último endpoint na lista.

  2. No mesmo diretório, chame o comando create-role para criar uma função de serviço denominada CodeDeployServiceRole, com base nas informações do arquivo de texto que você acabou de criar:

    aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
    Importante

    Não se esqueça de incluir file:// antes do nome de arquivo. Ele é obrigatório nesse comando.

    Na saída do comando, anote o valor da entrada Arn no objeto Role. Você precisará disso mais tarde ao criar grupos de implantação. Se você se esquecer do valor, siga as instruções em Obtenha o ARN (CLI) da função de serviço .

  3. A política gerenciada que você usa depende da plataforma de computação.

    • Se sua implantação for em uma plataforma de computação EC2/local:

      Chame o attach-role-policy comando para dar à função de serviço chamada CodeDeployServiceRole as permissões com base na política gerenciada do IAM nomeadaAWSCodeDeployRole. Por exemplo:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
    • Se sua implantação for em uma plataforma de computação AWS Lambda:

      Chame o attach-role-policy comando para dar à função de serviço chamada CodeDeployServiceRole as permissões com base na política gerenciada do IAM chamada AWSCodeDeployRoleForLambda ouAWSCodeDeployRoleForLambdaLimited. Por exemplo:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
    • Se sua implantação for em uma plataforma computacional Amazon ECS:

      Chame o attach-role-policy comando para dar à função de serviço chamada CodeDeployServiceRole as permissões com base na política gerenciada do IAM chamada AWSCodeDeployRoleForECS ouAWSCodeDeployRoleForECSLimited. Por exemplo:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS

Para obter mais informações sobre a criação de funções de serviço, consulte Como criar uma função para um AWS serviço no Guia do usuário do IAM.

Obtenha o ARN da função de serviço (console)

Para usar o console do IAM para obter o ARN da função de serviço:

  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, escolha Roles.

  3. Na caixa de texto Filter (Filtro), digite CodeDeployServiceRole e pressione Enter.

  4. Escolha CodeDeployServiceRole.

  5. Anote o valor do campo Role ARN (ARN da função).

Obtenha o ARN (CLI) da função de serviço

Para usar a AWS CLI para obter o ARN da função de serviço, chame o comando get-role para a função de serviço denominada CodeDeployServiceRole:

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

O valor retornado é o ARN da função de serviço.