Usar o comando register-on-premises-instance (ARN de usuário do IAM) para registrar uma instância on-premises - AWS CodeDeploy

Usar o comando register-on-premises-instance (ARN de usuário do IAM) para registrar uma instância on-premises

Importante

O registro de uma instância usando um usuário do IAM não é recomendado porque usa credenciais estáticas (permanentes) para autenticação. Para melhorar a segurança, recomendamos registrar uma instância usando credenciais temporárias para autenticação. Para obter mais informações, consulte Usar o comando register-on-premises-instance (ARN de sessão do IAM) para registrar uma instância on-premises.

Importante

Certifique-se de ter um plano para alternar as chaves de acesso do usuário do IAM (credenciais permanentes). Para obter mais informações, consulte Alternando as chaves de acesso.

Siga essas instruções para configurar uma instância on-premises e registrá-la e marcá-la no CodeDeploy, principalmente por conta própria, usando credenciais estáticas de usuário do IAM para autenticação.

Etapa 1: criar um usuário do IAM para a instância on-premises

Crie um usuário do IAM que será usado pela instância on-premises para autenticar e interagir com o CodeDeploy.

Importante

Você deve criar um usuário do IAM separado para cada instância on-premises participante. Se você tentar reutilizar um usuário do IAM individual para várias instâncias on-premises, talvez não seja possível registrar ou marcar essas instâncias on-premises com êxito no CodeDeploy. As implementações nessas instâncias locais podem estar presas em um estado pendente perpétuo ou podem falhar completamente.

Recomendamos atribuir um nome ao usuário do IAM que identifique sua finalidade, como CodeDeployUser-OnPrem.

Use a AWS CLI ou o console do IAM para criar um usuário do IAM. Para obter informações, consulte Criação de um usuário do IAM na sua conta da AWS.

Importante

Se você usar a AWS CLI ou o console do IAM para criar um novo usuário do IAM, anote o ARN de usuário fornecido para o usuário. Você precisará dessas informações mais tarde em Etapa 4: adicionar um arquivo de configuração à instância on-premises e Etapa 8: registrar a instância on-premises no CodeDeploy.

Etapa 2: atribuir permissões ao usuário do IAM

Se a instância on-premises for implantar revisões de aplicativos de buckets do Amazon S3, será necessário atribuir ao usuário do IAM as permissões para interagir com esses buckets. Você pode usar a AWS CLI ou o console do IAM para atribuir permissões.

nota

Se estiver implantando revisões de aplicativos apenas de repositórios GitHub, ignore essa etapa e vá diretamente para Etapa 3: obter as credenciais do usuário do IAM. (Você ainda precisará das informações sobre o usuário do IAM criado em Etapa 1: criar um usuário do IAM para a instância on-premises. Elas serão usadas em etapas posteriores.)

Para atribuir permissões (CLI)
  1. Crie um arquivo com o seguinte conteúdo de política na instância do Amazon EC2 ou no dispositivo que você está usando para chamar a AWS CLI. Nomeie o arquivo de algo como CodeDeploy-OnPrem-Permissions.json e, em seguida, salve-o.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
    nota

    Recomendamos que você restrinja essa política somente para os buckets do Amazon S3 que a sua instância on-premises precisa acessar. Se você restringir essa política, certifique-se também de dar acesso aos buckets do Amazon S3 que contêm o agente do AWS CodeDeploy. Caso contrário, um erro poderá ocorrer sempre que o agente do CodeDeploy for instalado ou atualizado na instância on-premises associada.

    Por exemplo:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
  2. Chame o comando put-user-policy, especificando o nome do usuário do IAM (com a opção --user-name), um nome para a política (com a opção --policy-name) e o caminho para o documento de política recém-criado (com a opção --policy-document). Por exemplo, supondo que o arquivo CodeDeploy-OnPrem-Permissions.json esteja no mesmo diretório (pasta) a partir do qual você está chamando esse comando:

    Importante

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

    aws iam put-user-policy --user-name CodeDeployUser-OnPrem --policy-name CodeDeploy-OnPrem-Permissions --policy-document file://CodeDeploy-OnPrem-Permissions.json
Para atribuir permissões (console)
  1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, escolha Policies e, em seguida, Create Policy. (Se aparecer um botão Get Started, selecione-o e, em seguida, Create Policy.)

  3. Próximo a Create Your Own Policy, escolha Select.

  4. Na caixa Policy Name (Nome da política), digite um nome para essa política (por exemplo, CodeDeploy-OnPrem-Permissions).

  5. Na caixa Documento da política, digite ou cole a seguinte expressão de permissões, que possibilita ao AWS CodeDeploy implantar revisões de aplicativos de qualquer bucket do Amazon S3 especificado na política na instância on-premises em nome do usuário do IAM:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
  6. Escolha Create Policy.

  7. No painel de navegação, escolha Users.

  8. Na lista de usuários, vá até o nome do usuário do IAM que você criou em Etapa 1: criar um usuário do IAM para a instância on-premises e escolha-o em seguida.

  9. Na guia Permissões, em Políticas gerenciadas, escolha Anexar política.

  10. Selecione a política chamada CodeDeploy-OnPrem-Permissions e, em seguida, escolha Attach Policy (Anexar política).

Etapa 3: obter as credenciais do usuário do IAM

Obtenha o ID de chave secreta e a chave de acesso secreta para o usuário do IAM. Você precisará deles para Etapa 4: adicionar um arquivo de configuração à instância on-premises. Você pode usar a AWS CLI ou o console do IAM para obter o ID de chave secreta e a chave de acesso secreta.

nota

Se você já tem o ID de chave secreta e a chave de acesso secreta, pula etapa e vá diretamente para Etapa 4: adicionar um arquivo de configuração à instância on-premises.

Os usuários precisam de acesso programático se quiserem interagir com a AWS de fora do Console de gerenciamento da AWS. A forma de conceder acesso programático depende do tipo de usuário que está acessando a AWS.

Para conceder acesso programático aos usuários, selecione uma das seguintes opções:

Qual usuário precisa de acesso programático? Para Por

Identidade da força de trabalho

(Usuários gerenciados no Centro de Identidade do IAM)

Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS.

Siga as instruções da interface que deseja utilizar.

IAM Use credenciais temporárias para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS. Siga as instruções em Usar credenciais temporárias com recursos da AWS no Guia do usuário do IAM.
IAM

(Não recomendado)

Use credenciais de longo prazo para assinar solicitações programáticas para a AWS CLI, os SDKs da AWS ou as APIs da AWS.

Siga as instruções da interface que deseja utilizar.

Para obter as credenciais (CLI)
  1. Chame o comando list-access-keys, especificando o nome do usuário do IAM (com a opção --user-name) e consultando apenas os IDs de chave de acesso (com as opções --query e --output). Por exemplo:

    aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text
  2. Se nenhuma chave aparecer na saída ou se informações sobre apenas uma chave aparecerem na saída, chame o comando create-access-key, especificando o nome do usuário do IAM (com a opção --user-name):

    aws iam create-access-key --user-name CodeDeployUser-OnPrem

    Na saída da chamada para o comando create-access-key, anote os valores dos campos AccessKeyId e SecretAccessKey. Você precisará dessas informações em Etapa 4: adicionar um arquivo de configuração à instância on-premises.

    Importante

    Esta será a única vez que você terá acesso a essa chave de acesso secreta. Se você esquecer ou perder o acesso a essa chave de acesso secreta, precisará gerar uma nova, seguindo as etapas em Etapa 3: obter as credenciais do usuário do IAM.

  3. Se duas chaves de acesso já estiverem listadas, você deverá excluir uma delas, chamando o comando delete-access-key, especificando o nome do usuário do IAM (com a opção --user-name) e a ID da chave de acesso a ser excluída (com a opção --access-key-id). Em seguida, chame o comando create-access-key, conforme descrito anteriormente nessa etapa. Aqui está um exemplo de como chamar o comando delete-access-key:

    aws iam delete-access-key --user-name CodeDeployUser-OnPrem --access-key-id access-key-ID
    Importante

    Se você chamar o comando delete-access-key para excluir uma dessas chaves de acesso, e uma instância on-premises já estiver usando essa chave de acesso conforme descrito em Etapa 4: adicionar um arquivo de configuração à instância on-premises, será necessário seguir novamente as instruções em Etapa 4: adicionar um arquivo de configuração à instância on-premises para especificar um ID de chave de acesso diferente e a chave de acesso secreta associada a esse usuário do IAM. Caso contrário, quaisquer implementações nessa instância local poderão ficar presas em um estado pendente perpétuo ou falhar completamente.

Para obter as credenciais (console)
    1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

    2. Se a lista de usuários não for exibida, no painel de navegação, escolha Usuários.

    3. Na lista de usuários, vá até o nome do usuário do IAM que você criou em Etapa 1: criar um usuário do IAM para a instância on-premises e escolha-o em seguida.

  1. Na guia Credenciais de segurança, se nenhuma chave ou apenas uma chave for listada, escolha Criar chave de acesso.

    Se duas chaves de acesso estiverem listadas, você deverá excluir uma delas. Escolha Excluir ao lado de uma das chaves de acesso e, em seguida, escolha Criar chave de acesso.

    Importante

    Se você escolher Excluir ao lado de uma dessas chaves de acesso, e uma instância on-premises já estiver usando essa chave de acesso conforme descrito em Etapa 4: adicionar um arquivo de configuração à instância on-premises, você precisará seguir novamente as instruções em Etapa 4: adicionar um arquivo de configuração à instância on-premises para especificar um ID de chave de acesso diferente e a chave de acesso secreta associada a esse usuário do IAM. Caso contrário, as implementações nessa instância local poderão ficar presas em um estado pendente perpétuo ou falhar completamente.

  2. Escolha Mostrar e anote o ID de chave de acesso e a chave de acesso secreta. Você precisará dessas informações para a próxima etapa. Como alternativa, você pode escolher Fazer download do arquivo .csv para salvar uma cópia do ID de chave de acesso e da chave de acesso secreta.

    Importante

    A menos que você anote ou baixe as credenciais, este será seu único acesso a essa chave de acesso secreta. Se você esquecer ou perder o acesso a essa chave de acesso secreta, precisará gerar uma nova, seguindo as etapas em Etapa 3: obter as credenciais do usuário do IAM.

  3. Escolha Fechar para retornar à página Usuários > Nome de usuário do IAM.

Etapa 4: adicionar um arquivo de configuração à instância on-premises

Adicione um arquivo de configuração à instância on-premises usando permissões raiz ou de administrador. Esse arquivo de configuração será usado para declarar as credenciais do usuário do IAM e a região da AWS de destino a ser usada para o CodeDeploy. O arquivo deve ser adicionado a um local específico na instância on-premises. O arquivo deve incluir o ARN do usuário do IAM, o ID de chave secreta, a chave de acesso secreta e a região da AWS de destino. O arquivo deve seguir um formato específico.

  1. Crie um arquivo chamado codedeploy.onpremises.yml (para uma instância on-premises do Ubuntu Server ou do RHEL) ou conf.onpremises.yml (para uma instância on-premises do Windows Server) na seguinte localização da instância on-premises:

    • Para Ubuntu Server: /etc/codedeploy-agent/conf

    • Para Windows Server: C:\ProgramData\Amazon\CodeDeploy

  2. Use um editor de texto para adicionar as seguintes informações ao arquivo codedeploy.onpremises.yml ou conf.onpremises.yml recém-criado:

    --- aws_access_key_id: secret-key-id aws_secret_access_key: secret-access-key iam_user_arn: iam-user-arn region: supported-region

    Em que:

    Importante

    Se você escolheu Excluir ao lado de uma das chaves de acesso em Etapa 3: obter as credenciais do usuário do IAM e sua instância on-premises já estiver usando o ID da chave de acesso e a chave de acesso secreta associados, será necessário seguir as instruções em Etapa 4: adicionar um arquivo de configuração à instância on-premises para especificar um ID de chave de acesso e uma chave de acesso secreta diferentes associados a esse usuário do IAM. Caso contrário, quaisquer implementações na sua instância local poderão ficar presas em um estado pendente perpétuo ou falhar completamente.

Etapa 5: instalar e configurar a AWS CLI

Instale e configure a AWS CLI na instância on-premises. (A AWS CLI será usada em Etapa 7: instalar o agente do CodeDeploy para fazer download e instalar o agente do CodeDeploy na instância on-premises.)

  1. Para instalar a AWS CLI na instância on-premises, siga as instruções em Configuração com a AWS CLI no Guia do usuário do AWS Command Line Interface.

    nota

    Os comandos do CodeDeploy para trabalhar com instâncias on-premises tornaram-se disponíveis na versão 1.7.19 da AWS CLI. Se tiver uma versão da AWS CLI já instalada, verifique a versão chamando aws --version.

  2. Para configurar a AWS CLI na instância on-premises, siga as instruções em Configurando o AWS CLI no Guia do usuário do AWS Command Line Interface.

    Importante

    À medida que você configurar a AWS CLI (por exemplo, chamando o comando aws configure), certifique-se de especificar o ID de chave secreta e a chave de acesso secreta de um usuário do IAM que tenha pelo menos as seguintes permissões de acesso da AWS, além das permissões de acesso especificadas em Pré-requisitos para configurar uma instância on-premises. Isso permite baixar e instalar o agente do CodeDeploy na instância on-premises.

    JSON
    { "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }
    JSON
    { "Version":"2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "codedeploy:*" ], "Resource" : "*" }, { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : [ "*" ] } ] }

    Essas permissões de acesso podem ser atribuídas ao usuário do IAM que você criou em Etapa 1: criar um usuário do IAM para a instância on-premises ou a um usuário do IAM diferente. Para atribuir essas permissões a um usuário do IAM, siga as instruções em Etapa 1: criar um usuário do IAM para a instância on-premises usando essas permissões de acesso em vez das especificadas nesta etapa.

Etapa 6: definir a variável de ambiente AWS_REGION (somente para o Ubuntu Server e o RHEL)

Se não estiver executando o Ubuntu Server ou o RHEL na sua instância on-premises, ignore esta etapa e vá diretamente para Etapa 7: instalar o agente do CodeDeploy .

Instale o agente do CodeDeploy em uma instância on-premises do Ubuntu Server ou RHEL e permita que a instância atualize o agente do CodeDeploy sempre que uma nova versão estiver disponível. Isso é feito configurando a variável de ambiente AWS_REGION na instância como o identificador de uma das regiões com suporte pelo CodeDeploy. Recomendamos definir o valor como a região na qual seus aplicativos, grupos de implantação e revisões de aplicativo do CodeDeploy estão localizados (por exemplo, us-west-2). Para obter uma lista de regiões, consulte Região e endpoints, na Referência geral da AWS.

Para definir a variável de ambiente, chame o seguinte usando o terminal:

export AWS_REGION=supported-region

Em que supported-region é o identificador da região (por exemplo, us-west-2).

Etapa 7: instalar o agente do CodeDeploy

Instale o agente do CodeDeploy na instância on-premises:

Etapa 8: registrar a instância on-premises no CodeDeploy

As instruções nesta etapa supõem que você esteja registrando a instância on-premises a partir dela mesma. Você pode registrar uma instância local a partir de um dispositivo ou instância à parte que tenha a AWS CLI instalada e configurada, conforme descrito em Etapa 5: instalar e configurar a AWS CLI.

Use a AWS CLI para registrar a instância on-premises no CodeDeploy, para que ela possa ser usada nas implantações.

  1. Antes de poder usar a AWS CLI, será necessário o ARN do usuário do IAM criado em Etapa 1: criar um usuário do IAM para a instância on-premises. Se você ainda não possui o ARN do usuário, chame o comando get-user, especificando o nome do usuário do IAM (com a opção --user-name) e consultando o ARN do usuário (com as opções --query e --output):

    aws iam get-user --user-name CodeDeployUser-OnPrem --query "User.Arn" --output text
  2. Chame o comando register-on-premises-instance, especificando o seguinte:

    • Um nome que identifique de forma exclusiva a instância on premises (com a opção --instance-name).

      Importante

      Para ajudar a identificar a instância local, especialmente para fins de depuração, recomendamos que você especifique um nome que seja mapeado para alguma característica exclusiva da instância local (por exemplo, o número de série ou um identificador interno de ativo, se aplicável). Se você especificar um endereço MAC como um nome, lembre-se de que endereços MAC contêm caracteres não permitidos pelo CodeDeploy, como o caractere de dois pontos (:). Para obter uma lista de caracteres permitidos, consulte Cotas do CodeDeploy.

    • O ARN do usuário do IAM que você criou em Etapa 1: criar um usuário do IAM para a instância on-premises (com a opção --iam-user-arn).

      Por exemplo:

      aws deploy register-on-premises-instance --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem

Etapa 9: marcar a instância on-premises

Você pode usar a AWS CLI ou o console do CodeDeploy para marcar a instância on-premises. (O CodeDeploy usa tags de instância on-premises para identificar os destinos de implantação durante uma implantação.)

Para marcar a instância on-premises (CLI)
  • Chame o comando add-tags-to-on-premises-instances, especificando o seguinte:

    • O nome que identifica de forma exclusiva a instância on-premises (com a opção --instance-names).

    • O nome da chave da tag de instância on-premises e o valor da tag que você deseja usar (com a opção --tags). Você deve especificar um nome e um valor. O CodeDeploy não permite tags de instâncias on-premises que possuam apenas valores.

      Por exemplo:

      aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
Para marcar a instância on-premises (console)
  1. Faça login no Console de gerenciamento da AWS e abra o console do CodeDeploy em https://console.aws.amazon.com/codedeploy.

    nota

    Faça login com o mesmo usuário que você configurou em Conceitos básicos do CodeDeploy.

  2. No menu do CodeDeploy, selecione Instâncias on-premises.

  3. Na lista de instâncias locais, escolha a seta ao lado da instância local que você deseja marcar.

  4. Na lista de tags, selecione ou insira a chave e o valor da tag desejados. Após inserir a chave e o valor da tag, outra linha será exibida. Isso pode ser repetido para até 10 tags. Para remover uma tag, selecione o ícone de exclusão ( The delete icon. ).

  5. Depois de adicionar as tags, escolha Atualizar tags.

Etapa 10: implantar revisões de aplicações na instância on-premises

Agora, você está pronto para implantar revisões de aplicativo na instância on-premises registrada e marcada.

Você implementa revisões de aplicativos em instâncias on-premises de uma maneira semelhante à implantação de revisões de aplicativos em instâncias do Amazon EC2. Para instruções, consulte Crie uma implantação com o CodeDeploy. Essas instruções incluem um link para pré-requisitos, que incluem: criar um aplicativo, criar um grupo de implantação e preparar uma revisão de aplicativo. Se você precisa de uma simples revisão de aplicativo de amostra para implantar, poderá criar aquela descrito em Etapa 2: criar uma revisão de aplicativo de amostra, no Tutorial: implantar um aplicativo em uma instância on-premises com o CodeDeploy (Windows Server, Ubuntu Server ou Red Hat Enterprise Linux).

Importante

Se você reutilizar um perfil de serviço do CodeDeploy como parte da criação de um grupo de implantação direcionado a instâncias on-premises, deverá incluir Tag:get* na parte Action da declaração de política do perfil de serviço. Para obter mais informações, consulte Etapa 2: Criar um perfil de serviço para CodeDeploy.

Etapa 11: acompanhar implantações na instância on-premises

Depois de implantar uma revisão de aplicativo em instâncias on-premises registradas e marcadas, você poderá controlar o progresso da implantação.

Você controla as implantações em instâncias on-premises de uma maneira semelhante ao controle de implantações em instâncias do Amazon EC2. Para instruções, consulte Veja os detalhes da implantação do CodeDeploy .