Desidero utilizzare AWS CodeBuild per eseguire comandi dell'Interfaccia della linea di comando AWS (AWS CLI) in account AWS.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
La seguente risoluzione configura un progetto CodeBuild nell'account A per eseguire i comandi AWS CLI nell'account B.
Prerequisito: crea un progetto Build nell'account A.
Crea un ruolo IAM nell'account B per eseguire i comandi AWS CLI
Completa i seguenti passaggi:
- Apri la console AWS Identity and Access Management (AWS IAM) nell'account B.
- Nel pannello di navigazione, scegli Ruoli, quindi scegli Crea ruolo.
- Scegli il tipo di ruolo Account AWS.
- Nella sezione Un account AWS, scegli Un altro account AWS.
- In ID account, inserisci l'ID dell'account A.
- Scegli Avanti.
- Seleziona la policy con le autorizzazioni per eseguire i comandi AWS CLI nell'account B.
- Scegli Avanti.
- Nel campo Nome ruolo, inserisci un nome per il ruolo.
- Scegli Crea ruolo.
- Annota il nome della risorsa Amazon (ARN) del ruolo IAM.
Collega una policy IAM al ruolo di servizio CodeBuild per assumere il ruolo
Completa i seguenti passaggi:
- Nell'account A, apri la console CodeBuild.
- Nel pannello di navigazione, scegli Progetti di compilazione.
- Seleziona il progetto di compilazione che esegue le azioni multi-account.
- Nel progetto CodeBuild, scegli la scheda Dettagli progetto.
- Nella sezione Ambiente, seleziona l'ARN del Ruolo di servizio.
- Nella nuova finestra della console IAM, scegli Aggiungi autorizzazioni, quindi seleziona Aggiungi policy inline.
- Inserisci la seguente policy nella scheda JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCrossAccountAccess",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "ACCOUNT_B_ROLE_ARN"
}
]
}
Nota: sostituisci ACCOUNT_B_ROLE_ARN con l'ARN del ruolo IAM.
- Scegli Avanti.
- Nel campo Nome policy, inserisci un nome per la policy.
- Scegli Crea policy.
Modifica il buildspec del progetto CodeBuild
Se il file buildspec è nel progetto CodeBuild, completa i seguenti passaggi:
- Apri la console CodeBuild.
- Nel pannello di navigazione, scegli Progetti di compilazione.
- Seleziona il progetto di compilazione, quindi scegli Modifica.
- Nella sezione Buildspec, aggiungi il comando AWS CLI assume-role e i comandi multi-account nel seguente ordine:
- 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')
Nota: sostituisci ACCOUNT_B_ROLE_ARN con l'ARN del ruolo IAM. Se il file buildspec è nel codice sorgente, aggiungi il comando AWS CLI assume-role prima dei comandi multi-account nel file buildspec.
- Scegli Aggiorna progetto.
Per eseguire un comando AWS CLI nell'account B, esegui il comando CLI dopo i comandi assume-role e export.
Per ripristinare le autorizzazioni precedenti del ruolo di servizio CodeBuild, esegui questi comandi unset:
- unset AWS_ACCESS_KEY_ID
- unset AWS_SECRET_ACCESS_KEY
- unset AWS_SESSION_TOKEN