Saltar al contenido

¿Cómo uso CodeBuild para ejecutar los comandos de la AWS CLI en todas las cuentas?

4 minutos de lectura
0

Quiero usar AWS CodeBuild para ejecutar comandos de la interfaz de línea de comandos de AWS (AWS CLI) en todas las cuentas de AWS.

Solución

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

La siguiente resolución configura un proyecto de CodeBuild en la cuenta A para ejecutar los comandos de la AWS CLI en la cuenta B.

Requisito previo: Crea un proyecto de compilación en la cuenta A.

Creación de un rol de IAM en la cuenta B para ejecutar los comandos de la AWS CLI

Sigue estos pasos:

  1. En la cuenta B, abre la consola de AWS Identity and Access Management (IAM).
  2. En el panel de navegación, elige Roles y, a continuación, Crear rol.
  3. Elige el tipo de rol de la cuenta de AWS.
  4. En la sección Una cuenta de AWS, elige Otra cuenta de AWS.
  5. En ID de cuenta, introduce el ID de la cuenta A.
  6. Elige Siguiente.
  7. Selecciona la política con permisos para ejecutar los comandos de la AWS CLI en la cuenta B.
  8. Elige Siguiente.
  9. En el campo Nombre del rol, introduce un nombre para el rol.
  10. Selecciona Crear rol.
  11. Anota el número de recurso de Amazon (ARN) del rol de IAM.

Adjuntar una política de IAM al rol de servicio de CodeBuild para asumir el rol

Sigue estos pasos:

  1. En la cuenta A, abre la consola de CodeBuild.
  2. En el panel de navegación, elige Proyectos de compilación.
  3. Selecciona el proyecto de compilación que lleve a cabo las acciones entre cuentas.
  4. En el proyecto CodeBuild, elige la pestaña Detalles del proyecto.
  5. En la sección Entorno, selecciona el ARN del rol de servicio.
  6. En la nueva ventana de la consola de IAM, selecciona Agregar permisos y, a continuación, selecciona Agregar política insertada.
  7. A continuación, introduce la siguiente política en la pestaña JSON:
    {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "AllowCrossAccountAccess",
                    "Effect": "Allow",
                    "Action": "sts:AssumeRole",
                    "Resource": "ACCOUNT_B_ROLE_ARN"
                }
            ]
        }
    Nota: Sustituye ACCOUNT_B_ROLE_ARN por el ARN del rol de IAM.
  8. Elige Siguiente.
  9. En el campo Nombre de la política, introduce un nombre para la política.
  10. Selecciona Crear política.

Modificación de la especificación de compilación del proyecto de CodeBuild

Si el archivo de especificación de compilación está en el proyecto de CodeBuild, sigue estos pasos:

  1. Abre la consola de CodeBuild.
  2. En el panel de navegación, elige Proyectos de compilación.
  3. Selecciona tu proyecto de compilación y, a continuación, elige Editar.
  4. En la sección Especificación de compilación, agrega el comando assume-role de la AWS CLI y los comandos entre cuentas en el siguiente orden:
    - 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: Sustituye ACCOUNT_B_ROLE_ARN por el ARN del rol de IAM. Si el archivo de especificación de compilación está en tu código fuente, agrega el comando assume-role de la AWS CLI antes de los comandos entre cuentas del archivo de especificación de compilación. 
  5. Selecciona Actualizar proyecto.

Para ejecutar un comando de la AWS CLI en la cuenta B, ejecuta el comando de la CLI después de los comandos assume-role y export.

Para volver a tus permisos de rol de servicio de CodeBuild anteriores, ejecuta los siguientes comandos unset:

- unset AWS_ACCESS_KEY_ID
- unset AWS_SECRET_ACCESS_KEY
- unset AWS_SESSION_TOKEN
OFICIAL DE AWSActualizada hace 5 meses