Ir para o conteúdo

Como uso o CodeBuild para executar comandos da AWS CLI entre contas?

3 minuto de leitura
0

Quero usar o AWS CodeBuild para executar comandos da AWS Command Line Interface (AWS CLI) entre contas da AWS.

Resolução

Observação: se você receber mensagens de erro ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

A resolução a seguir configura um projeto do CodeBuild na conta A para executar comandos da AWS CLI na Conta B.

Pré-requisito: crie um projeto do Build na conta A.

Crie um perfil do IAM na conta B para executar os comandos da AWS CLI

Conclua as etapas a seguir:

  1. Na conta B, abra o console do AWS Identity and Access Management (AWS IAM).
  2. No painel de navegação, clique em Perfis e depois em Criar perfil.
  3. Selecione o tipo de perfil da conta da AWS.
  4. Na seção Uma conta da AWS, clique em Outra conta da AWS.
  5. Em ID da conta, insira o ID da conta A.
  6. Clique em Próximo.
  7. Selecione a política com permissões para executar comandos da AWS CLI na conta B.
  8. Clique em Próximo.
  9. No campo Nome do perfil, insira um nome para o perfil.
  10. Selecione Criar perfil.
  11. Anote o Amazon Resource Number (ARN) do perfil do IAM.

Anexe uma política do IAM ao perfil de serviço do CodeBuild para assumir o perfil

Conclua as etapas a seguir:

  1. Na conta A, abra o console do CodeBuild.
  2. No painel de navegação, clique em Projetos de compilação.
  3. Selecione o projeto de compilação que executa as ações entre contas.
  4. No projeto do CodeBuild, clique na guia Detalhes do projeto.
  5. Na seção Ambiente, selecione o Perfil de serviço do ARN.
  6. Na nova janela do console do IAM, selecione Adicionar permissões e, em seguida, selecione Adicionar política em linha.
  7. Insira a seguinte política na guia JSON:
    {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "AllowCrossAccountAccess",
                    "Effect": "Allow",
                    "Action": "sts:AssumeRole",
                    "Resource": "ACCOUNT_B_ROLE_ARN"
                }
            ]
        }
    Observação: substitua ACCOUNT_B_ROLE_ARN pelo ARN do perfil do IAM.
  8. Clique em Próximo.
  9. No campo Nome da política, insira um nome para a política.
  10. Selecione Criar política.

Modifique o buildspec do projeto do CodeBuild

Se o arquivo buildspec estiver no projeto do CodeBuild, conclua as seguintes etapas:

  1. Abra o console do CodeBuild.
  2. No painel de navegação, clique em Projetos de compilação.
  3. Selecione seu projeto de compilação e clique em Editar.
  4. Na seção Buildspec, adicione o comando assume-role da AWS CLI e os comandos entre contas na seguinte ordem:
    - CREDS=$(aws sts assume-role \
      --role-arn $ACCOUNT_B_ROLE_ARN \
      --role-session-name "session")
    - export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r '.Credentials.AccessKeyId')
    - export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r '.Credentials.SecretAccessKey')
    - export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r '.Credentials.SessionToken')
    Observação: substitua ACCOUNT_B_ROLE_ARN pelo ARN do perfil do IAM. Se o arquivo buildspec estiver em seu código-fonte, adicione o comando assume-role da AWS CLI antes dos comandos entre contas no arquivo buildspec.
  5. Clique em Atualizar projeto.

Para executar um comando da AWS CLI na conta B, execute o comando da CLI após os comandos assume-role e export.

Para reverter às suas permissões anteriores do perfil de serviço do CodeBuild, execute os seguintes comandos unset:

- unset AWS_ACCESS_KEY_ID
- unset AWS_SECRET_ACCESS_KEY
- unset AWS_SESSION_TOKEN
AWS OFICIALAtualizada há 5 meses