Uso del comando “register-on-premises-instance” (ARN de sesión de IAM) para registrar una instancia en las instalaciones - AWS CodeDeploy

Uso del comando “register-on-premises-instance” (ARN de sesión de IAM) para registrar una instancia en las instalaciones

Para tener el máximo control sobre la autenticación y el registro de las instancias en las instalaciones, puede utilizar el comando register-on-premises-instance y actualizar periódicamente las credenciales temporales generadas con AWS Security Token Service (AWS STS). Un rol de IAM estático para la instancia asume el rol de estas credenciales de AWS STS actualizadas para realizar las operaciones de implementación de CodeDeploy.

Este método es muy útil cuando necesita registrar un gran número de instancias. Le permite automatizar el proceso de registro con CodeDeploy. Puede utilizar su propio sistema de identidad y autenticación para autenticar instancias en las instalaciones y distribuir credenciales de sesión de IAM desde el servicio a las instancias que se van a usar con CodeDeploy.

nota

También puede utilizar un usuario de IAM compartido distribuido a todas las instancias on-premises para llamar a la API AWS STSAssumeRole de con el fin de recuperar las credenciales de sesión de las instancias on-premises. Este método es menos seguro y no se recomienda para entornos de producción o críticos.

Utilice la información de los siguientes temas para configurar una instancia on-premises con credenciales de seguridad temporales generadas con AWS STS.

Requisitos previos del registro de ARN de sesión de IAM

Además de los requisitos previos indicados en Requisitos previos para configurar una instancia en las instalaciones, deben cumplirse los siguientes requisitos adicionales:

Permisos de IAM

La identidad de IAM que se utiliza para registrar una instancia en las instalaciones debe tener permisos para realizar operaciones de CodeDeploy. Asegúrese de que la política administradaAWSCodeDeployFullAccess está asociada a la identidad de IAM. Para obtener más información, consulte Políticas administradas de AWS en la Guía del usuario de IAM.

Sistema para actualizar las credenciales temporales

Si utiliza un ARN de sesión de IAM para registrar instancias on-premises, debe disponer de un sistema para actualizar periódicamente las credenciales temporales. Las credenciales temporales caducan después de una hora o antes si se especifica un periodo más corto cuando se generan las credenciales. Existen dos métodos para actualizar las credenciales:

  • Método 1: utilice el sistema de identidad y autenticación de su red corporativa con un script CRON que sondee periódicamente el sistema de identidad y autenticación y copie las credenciales de la última sesión en la instancia. De esta forma, podrá integrar su estructura de identidad y autenticación con AWS sin necesidad de realizar cambios en el agente o en el servicio de CodeDeploy para permitir los tipos de autenticación que utiliza en la organización.

  • Método 2: ejecute periódicamente una tarea CRON en la instancia para llamar a la acción de AWS STS AssumeRole y escribir las credenciales de la sesión en un archivo al que el agente de CodeDeploy tenga acceso. Este método requiere igualmente utilizar un usuario de IAM y copiar las credenciales en la instancia on-premises, pero puede volver a utilizar el mismo usuario de IAM y las mismas credenciales en toda la flota de instancias on-premises.

nota

Independientemente de si utiliza el método 1 o 2, debe configurar un proceso para reiniciar el agente de CodeDeploy después de actualizar las credenciales de sesión temporales para que las nuevas credenciales surtan efecto.

Para obtener información sobre cómo crear y trabajar con credenciales de AWS STS, consulte la Referencia de la API de AWS Security Token Service y Uso de credenciales de seguridad temporales para solicitar acceso a los recursos de AWS.

Paso 1: Crear el rol de IAM que asumirán las instancias en las instalaciones

Puede utilizar la AWS CLI de AWS o la consola de IAM para crear el rol de IAM que utilizarán sus instancias en las instalaciones para autenticar e interactuar con CodeDeploy.

Solo tiene que crear un único rol de IAM. Cada una de las instancias on-premises puede asumir este rol para recuperar las credenciales de seguridad temporales que proporcionan los permisos concedidos a este rol.

El rol que cree requerirá los siguientes permisos para tener acceso a los archivos necesarios para instalar el agente de CodeDeploy:

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

Le recomendamos que restrinja esta política únicamente a los buckets de Amazon S3 a los que su instancia en las instalaciones necesite tener acceso. Si restringe esta política, asegúrese de conceder acceso a los buckets de Amazon S3 que contienen el agente de CodeDeploy. De lo contrario, podría producirse un error siempre que el agente de CodeDeploy se instale o actualice en la instancia en las instalaciones. Para obtener más información acerca del control del acceso a los recursos de Amazon S3, consulte Administración de permisos de acceso para los recursos de Amazon S3.

Creación del rol de IAM
  1. Llame al comando create-role usando la opción --role-name para especificar un nombre para el rol de IAM (por ejemplo, CodeDeployInstanceRole) y la opción --assume-role-policy-document para proporcionar los permisos.

    Cuando cree el rol de IAM para esta instancia, puede asignarle el nombre CodeDeployInstanceRole e incluir los permisos necesarios en un archivo denominado CodeDeployRolePolicy.json:

    aws iam create-role --role-name CodeDeployInstanceRole --assume-role-policy-document file://CodeDeployRolePolicy.json
  2. En la salida de la llamada al comando create-role, anote el valor del campo ARN. Por ejemplo:

    arn:aws:iam::123456789012:role/CodeDeployInstanceRole

    Necesitará el ARN del rol cuando utilice la API AWS STSAssumeRole de para generar credenciales temporales para cada instancia.

    Para obtener más información acerca de cómo crear roles de IAM, consulte Creación de un rol para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.

    Para obtener más información sobre cómo asignar permisos a un rol existente, consulte put-role-policy en la Referencia de comandos de AWS CLI.

Paso 2: Generar credenciales temporales para una instancia individual utilizando AWS STS

Antes de generar las credenciales temporales que se utilizarán para registrar una instancia on-premises, debe crear o elegir la identidad de IAM (usuario o rol) para la que se generarán las credenciales temporales. El permiso sts:AssumeRole debe estar incluido en la configuración de política de esta identidad de IAM.

Para obtener información sobre cómo conceder permisos de sts:AssumeRole a una identidad de IAM, consulte Creación de un rol para delegar permisos a un servicio de AWS y AssumeRole.

Hay dos formas de generar credenciales temporales:

  • Use el comando assume-role con la AWS CLI. Por ejemplo:

    aws sts assume-role --role-arn arn:aws:iam::12345ACCOUNT:role/role-arn --role-session-name session-name

    Donde:

    nota

    Si utiliza un script CRON que sondea periódicamente el sistema de identidad y autenticación y copia las credenciales de la última sesión en la instancia (método 1 para actualizar credenciales temporales descrito en Requisitos previos del registro de ARN de sesión de IAM), puede utilizar en su lugar cualquier SDK de AWS compatible para llamar a AssumeRole.

  • Utilice una herramienta proporcionada por AWS.

    La herramienta aws-codedeploy-session-helper genera credenciales de AWS STS y las escribe en un archivo que usted coloca en la instancia. Esta herramienta es adecuada para el método 2 de actualización de credenciales temporales que se describe en Requisitos previos del registro de ARN de sesión de IAM. En este método, la herramienta aws-codedeploy-session-helper se instala en cada instancia y ejecuta el comando usando los permisos del usuario de IAM. Cada instancia utiliza las mismas credenciales de usuario de IAM junto con esta herramienta.

    Para obtener más información, consulte aws-codedeploy-session-helper en el repositorio de GitHub.

    nota

    Una vez que haya creado las credenciales de inicio de sesión de IAM, colóquelas en cualquier ubicación de la instancia on-premises. En el siguiente paso, configurará el agente de CodeDeploy para obtener acceso a las credenciales en esta ubicación.

Antes de continuar, asegúrese de que el sistema que se utilizará para actualizar periódicamente las credenciales temporales está instalado. Si las credenciales temporales no se actualizan, las implementaciones en la instancia on-premises producirán un error. Para obtener más información, consulte "Sistema para actualizar las credenciales temporales" en Requisitos previos del registro de ARN de sesión de IAM.

Paso 3: Añadir un archivo de configuración a la instancia en las instalaciones

Añada un archivo de configuración a la instancia on-premises, utilizando los permisos raíz o de administrador. Este archivo de configuración se utilizará para declarar las credenciales de IAM y la región de AWS que se usará para CodeDeploy. El archivo debe añadirse a una ubicación específica de la instancia on-premises. El archivo debe incluir el ARN de sesión temporal de IAM, su ID de clave secreta y clave de acceso secreta y la región de AWS de destino.

Para añadir un archivo de configuración
  1. Cree un archivo denominado codedeploy.onpremises.yml (si se trata de una instancia en las instalaciones de Ubuntu Server o RHEL) o conf.onpremises.yml (en el caso de una instancia en las instalaciones de Windows) en la siguiente ubicación de la instancia en las instalaciones:

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

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

  2. Utilice un editor de texto para añadir la siguiente información al archivo codedeploy.onpremises.yml (Linux) o conf.onpremises.yml (Windows) recién creado:

    --- iam_session_arn: iam-session-arn aws_credentials_file: credentials-file region: supported-region

    Donde:

Paso 4: Preparar una instancia en las instalaciones para las implementaciones de CodeDeploy

Instalar y configurar la AWS CLI

Instale y configure la AWS CLI en la instancia on-premises. (La AWS CLI se utilizará para descargar e instalar el agente de CodeDeploy en la instancia en las instalaciones).

  1. Para instalar la AWS CLI en la instancia en las instalaciones, siga las instrucciones de Configuración inicial de la AWS CLI en la Guía del usuario de la AWS Command Line Interface.

    nota

    Los comandos de CodeDeploy para trabajar con instancias en las instalaciones están disponibles desde la versión 1.7.19 de la AWS CLI. Si ya tiene instalada una versión de la AWS CLI, puede llamar a aws --version para comprobar la versión.

  2. Para configurar AWS CLI en la instancia en las instalaciones, siga las instrucciones de Configuración de la AWS CLI en la Guía del usuario de la AWS Command Line Interface.

    importante

    Cuando configure la AWS CLI (por ejemplo, llamando al comando aws configure), asegúrese de especificar el ID de clave secreta y la clave de acceso secreta de un usuario de IAM que tenga, como mínimo, los permisos que se describen en Requisitos previos del registro de ARN de sesión de IAM.

Establecer la variable de entorno AWS_REGION (solo Ubuntu Server y RHEL)

Si no va a ejecutar Ubuntu Server ni RHEL en su instancia en las instalaciones. omita este paso y vaya directamente a "Instalación del agente de CodeDeploy".

Instale el agente de CodeDeploy en una instancia en las instalaciones de Ubuntu Server o RHEL y permita que la instancia actualice el agente de CodeDeploy siempre que haya disponible una nueva versión. Para ello, tiene que establecer en la instancia la variable de entorno AWS_REGION en el identificador de una de las regiones admitidas por CodeDeploy. Le recomendamos que establezca el valor en la región en la que se encuentran sus aplicaciones, grupos de implementación y revisiones de aplicaciones (por ejemplo, us-west-2). Para obtener una lista de regiones, consulte Regiones y puntos de conexión en la Referencia general de AWS.

Para establecer la variable de entorno, llame al siguiente comando desde el terminal:

export AWS_REGION=supported-region

Donde supported-region es el identificador de región (por ejemplo, us-west-2).

Instalación del agente de CodeDeploy

Paso 5: Registrar una instancia en las instalaciones con CodeDeploy

En las instrucciones de este paso se da por supuesto que va a registrar la instancia on-premises desde la propia instancia on-premises. Puede registrar una instancia on-premises desde un dispositivo o instancia diferente que tenga la AWS CLI instalada y configurada.

Utilice la AWS CLI para registrar la instancia en las instalaciones con CodeDeploy de manera que pueda utilizarse en las implementaciones.

Para poder utilizar la AWS CLI, necesitará el ARN de las credenciales de sesión temporales que ha creado en Paso 3: Añadir un archivo de configuración a la instancia en las instalaciones. Por ejemplo, en el caso de una instancia que identifique como AssetTag12010298EX:

arn:sts:iam::123456789012:assumed-role/CodeDeployInstanceRole/AssetTag12010298EX

Llame al comando register-on-premises-instance, especificando lo siguiente:

  • Un nombre que identifique de manera única la instancia en las instalaciones (con la opción --instance-name).

    importante

    Para ayudar a identificar la instancia on-premises, especialmente a efectos de depuración, es absolutamente recomendable que especifique un nombre que se corresponda con algunas características exclusivas de la instancia on-premises (por ejemplo, el nombre de sesión de las credenciales de STS y el número de serie de un identificador de recurso interno, si procede). Si especifica una dirección MAC como nombre, debe tener en cuenta que las direcciones MAC contienen caracteres que CodeDeploy no permite, como los dos puntos (:). Para obtener una lista de los caracteres permitidos, consulte Cuotas de CodeDeploy.

  • El ARN de sesión de IAM que configura para autenticar varias instancias on-premises en Paso 1: Crear el rol de IAM que asumirán las instancias en las instalaciones.

Por ejemplo:

aws deploy register-on-premises-instance --instance-name name-of-instance --iam-session-arn arn:aws:sts::account-id:assumed-role/role-to-assume/session-name

Donde:

  • name-of-instance es el nombre que se utiliza para identificar la instancia on-premises, como por ejemplo AssetTag12010298EX.

  • account-id es el ID de cuenta de 12 dígitos de su organización, como 111222333444.

  • role-to-assume es el nombre del rol de IAM que ha creado para la instancia, como CodeDeployInstanceRole.

  • session-name es el nombre del rol de la sesión que especificó en Paso 2: Generar credenciales temporales para una instancia individual utilizando AWS STS.

Paso 6: Etiquetar la instancia en las instalaciones

Puede utilizar la AWS CLI o la consola de CodeDeploy para etiquetar la instancia en las instalaciones. (CodeDeploy utiliza las etiquetas de las instancias en las instalaciones para identificar los destinos de implementación durante una implementación).

Para etiquetar la instancia en las instalaciones (CLI)
  • Llame al comando add-tags-to-on-premises-instances, especificando lo siguiente:

    • El nombre que identifica de manera única la instancia on-premises (con la opción --instance-names).

    • El nombre de la clave de etiqueta y el valor de etiqueta de la instancia on-premises que desea utilizar (con la opción --tags). Debe especificar tanto un nombre como un valor. CodeDeploy no permite etiquetas de instancias en las instalaciones que solo tengan valores.

      Por ejemplo:

      aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
Para etiquetar la instancia on-premises (consola)
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de CodeDeploy en https://console.aws.amazon.com/codedeploy.

    nota

    Inicie sesión con el mismo usuario que configuró en Introducción a CodeDeploy.

  2. En el panel de navegación, expanda Implementar y elija Instancias en las instalaciones.

  3. En la lista de instancias on-premises, elija el nombre de la instancia on-premises que desea etiquetar.

  4. En la lista de etiquetas, seleccione o introduzca la clave y el valor que desee para la etiqueta. Cuando introduzca la clave y el valor de la etiqueta, aparecerá otra fila. Puede repetir esta acción para un máximo de 10 etiquetas. Para eliminar una etiqueta, elija Eliminar.

  5. Después de añadir las etiquetas, seleccione Update Tags.

Paso 7: Implementar revisiones de aplicaciones en la instancia on-premises

Ahora está listo para implementar revisiones de aplicaciones en la instancia on-premises registrada y etiquetada.

La implementación de revisiones de aplicaciones en instancias en las instalaciones es similar a la implementación de revisiones de aplicaciones en instancias de Amazon EC2. Para obtener instrucciones, consulte Creación de una implementación con CodeDeploy. Estas instrucciones incluyen un enlace a los requisitos previos, incluida la creación de una aplicación, la creación de un grupo de implementaciones y la preparación de la revisión de una aplicación. Si necesita una revisión de una aplicación sencilla para implementar, puede crear la que se describe en Paso 2: Crear una revisión de aplicación de ejemplo en el Tutorial: Implementación de una aplicación en una instancia en las instalaciones con CodeDeploy (Windows Server, Ubuntu Server o Red Hat Enterprise Linux).

importante

Si reutiliza un rol de servicio de CodeDeploy como parte de la creación de un grupo de implementación que tiene como destino instancias locales, debe incluir Tag:get* en la parte Action de la instrucción de política del rol de servicio. Para obtener más información, consulte Paso 2: Crear un rol de servicio para CodeDeploy.

Paso 8: Hacer un seguimiento de las implementaciones en la instancia en las instalaciones

Después de implementar una revisión de una aplicación en instancias en las instalaciones registradas y etiquetadas, puede hacer un seguimiento del progreso de la implementación.

El seguimiento de las implementaciones en instancias en las instalaciones es similar al seguimiento de las implementaciones en instancias de Amazon EC2. Para obtener instrucciones, consulte Visualización de los detalles de la implementación de CodeDeploy .