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:
- Na conta B, abra o console do AWS Identity and Access Management (AWS IAM).
- No painel de navegação, clique em Perfis e depois em Criar perfil.
- Selecione o tipo de perfil da conta da AWS.
- Na seção Uma conta da AWS, clique em Outra conta da AWS.
- Em ID da conta, insira o ID da conta A.
- Clique em Próximo.
- Selecione a política com permissões para executar comandos da AWS CLI na conta B.
- Clique em Próximo.
- No campo Nome do perfil, insira um nome para o perfil.
- Selecione Criar perfil.
- 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:
- Na conta A, abra o console do CodeBuild.
- No painel de navegação, clique em Projetos de compilação.
- Selecione o projeto de compilação que executa as ações entre contas.
- No projeto do CodeBuild, clique na guia Detalhes do projeto.
- Na seção Ambiente, selecione o Perfil de serviço do ARN.
- Na nova janela do console do IAM, selecione Adicionar permissões e, em seguida, selecione Adicionar política em linha.
- 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.
- Clique em Próximo.
- No campo Nome da política, insira um nome para a política.
- Selecione Criar política.
Modifique o buildspec do projeto do CodeBuild
Se o arquivo buildspec estiver no projeto do CodeBuild, conclua as seguintes etapas:
- Abra o console do CodeBuild.
- No painel de navegação, clique em Projetos de compilação.
- Selecione seu projeto de compilação e clique em Editar.
- 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.
- 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