Usa el register-on-premises-instance comando (ARN de sesión de IAM) para registrar una instancia local - AWS CodeDeploy

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Usa el register-on-premises-instance comando (ARN de sesión de IAM) para registrar una instancia local

Para tener el máximo control sobre la autenticación y el registro de las instancias locales, puede usar el register-on-premises-instancecomando y actualizar periódicamente las credenciales temporales generadas con (). AWS Security Token Service AWS STS Una función de IAM estática para la instancia asume la función de estas AWS STS credenciales actualizadas para realizar las operaciones de implementación. CodeDeploy

Este método es muy útil cuando necesita registrar un gran número de instancias. Permite automatizar el proceso de registro con. CodeDeploy Puede usar su propio sistema de identidad y autenticación para autenticar las instancias locales y distribuir las credenciales de sesión de IAM desde el servicio a las instancias para su uso. CodeDeploy

nota

Como alternativa, puedes usar un usuario de IAM compartido distribuido entre todas las instancias locales para llamar a la AWS STS AssumeRoleAPI y recuperar las credenciales de sesión de las instancias locales. Este método es menos seguro y no se recomienda para entornos de producción o críticos.

Usa la información de los siguientes temas para configurar una instancia local con las 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 utilices para registrar una instancia local debe tener permisos para realizar operaciones. CodeDeploy Asegúrese de que la política AWSCodeDeployFullAccessadministrada 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. Esto le permite integrar su estructura de autenticación e identidad AWS sin necesidad de realizar cambios en el CodeDeploy agente o el servicio para admitir los tipos de autenticación que utiliza en su organización.

  • Método 2: ejecuta periódicamente un trabajo CRON en la instancia para activar la AWS STS AssumeRoleacción y escribir las credenciales de la sesión en un archivo al que pueda acceder el CodeDeploy agente. 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 utilizas el método 1 o el 2, debes configurar un proceso para reiniciar el CodeDeploy agente una vez que se hayan actualizado las credenciales de sesión temporales, de modo que las nuevas credenciales surtan efecto.

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

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

Puede usar la consola de IAM AWS CLI o la consola de IAM para crear un rol de IAM que las instancias locales utilizarán para autenticarse e interactuar con él. 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 necesitará los siguientes permisos para acceder a los archivos necesarios para instalar el agente: CodeDeploy

{ "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 dar acceso a los buckets de Amazon S3 que contienen el CodeDeploy agente. De lo contrario, podría producirse un error cada vez que el CodeDeploy agente se instale o actualice en la instancia local. 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.

Cómo crear el 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 rol ARN cuando utilice la AWS STS AssumeRoleAPI para generar credenciales a corto plazo para cada instancia.

    Para obtener más información sobre la creación de funciones de IAM, consulte Crear una función para delegar permisos a un AWS servicio en la Guía del usuario de IAM.

    Para obtener información sobre la asignación de permisos a un rol existente, consulte put-role-policyla Referencia de comandos.AWS CLI

Paso 2: Genera credenciales temporales para una instancia individual mediante 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 la concesión de sts:AssumeRole permisos a una identidad de IAM, consulte Crear un rol para delegar permisos a un AWS servicio 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 utilizas un script CRON que sondea periódicamente el sistema de identidad y autenticación y copia las credenciales de sesión más recientes en la instancia (el método 1 para actualizar las credenciales temporales se describe enRequisitos previos del registro de ARN de sesión de IAM), puedes utilizar cualquier AWS SDK compatible para realizar la llamada. AssumeRole

  • Usa una herramienta proporcionada por AWS.

    La aws-codedeploy-session-helper herramienta genera AWS STS credenciales y las escribe en un archivo que coloques 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 aws-codedeploy-session-helper herramienta se coloca en cada instancia y ejecuta el comando con los permisos de un usuario de IAM. Cada instancia utiliza las mismas credenciales de usuario de IAM junto con esta herramienta.

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

    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 CodeDeploy agente para que acceda a las credenciales de 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 utiliza para declarar las credenciales de IAM y la AWS región de destino para CodeDeploy la que se van a utilizar. El archivo debe añadirse a una ubicación específica de la instancia on-premises. El archivo debe incluir el ARN de la sesión temporal de IAM, su ID de clave secreta y su clave de acceso secreta, y la AWS región 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 local para las implementaciones CodeDeploy

Instale y configure el AWS CLI

Instale y configure AWS CLI la instancia local. (Se AWS CLI usará para descargar e instalar el CodeDeploy agente en la instancia local).

  1. Para instalarlo AWS CLI en la instancia local, siga las instrucciones que se indican en la Guía del AWS Command Line Interface usuario para realizar la AWS CLI configuración con el.

    nota

    CodeDeploy los comandos para trabajar con instancias locales estuvieron disponibles en la versión 1.7.19 de. AWS CLI Si AWS CLI ya tienes una versión de la instalada, puedes comprobar su versión llamando a. aws --version

  2. Para configurar AWS CLI la instancia local, siga las instrucciones de la Guía del AWS Command Line Interface usuario sobre cómo configurar AWS CLI la instancia local.

    importante

    Al configurar la AWS CLI (por ejemplo, mediante una llamada al aws configure comando), 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 descritos 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 está ejecutando Ubuntu Server o RHEL en su instancia local, omita este paso y vaya directamente a «Instalar el CodeDeploy agente».

Instala el CodeDeploy agente en una instancia local de Ubuntu Server o RHEL y habilita la instancia para que actualice el CodeDeploy agente cada vez que haya una nueva versión disponible. Para ello, defina la variable de AWS_REGION entorno de la instancia en el identificador de una de las regiones compatibles. CodeDeploy Le recomendamos que establezca el valor en la región en la que se encuentran CodeDeploy las aplicaciones, los grupos de implementación y las revisiones de las 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).

Instale el CodeDeploy agente

Paso 5: Registre la instancia local 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 local desde un dispositivo o instancia independiente que la tenga AWS CLI instalada y configurada.

AWS CLI Utilícela para registrar la instancia local con el CodeDeploy fin de utilizarla en las implementaciones.

Antes de poder usar el AWS CLI, necesitará el ARN de las credenciales de sesión temporales en las que creó. 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

Ejecute el 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, tenga en cuenta que las direcciones MAC contienen caracteres CodeDeploy no permitidos, como dos puntos (:)). Para obtener una lista de los caracteres permitidos, consulte CodeDeploy cuotas.

  • 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-instancees el nombre que se utiliza para identificar la instancia local, por ejemplo. AssetTag12010298EX

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

  • role-to-assumees el nombre del rol de IAM que creaste para la instancia, por ejemplo. CodeDeployInstanceRole

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

Paso 6: Etiquetar la instancia en las instalaciones

Puedes usar la consola AWS CLI o la CodeDeploy consola para etiquetar la instancia local. (CodeDeployusa etiquetas de instancias locales para identificar los objetivos de implementación durante una implementación).

Para etiquetar la instancia en las instalaciones (CLI)
  • Llama al comando add-tags-to-on-premises-instances y especifica:

    • 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 un nombre y un valor. CodeDeploy no permite etiquetas de instancias locales 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. Inicia sesión en la CodeDeploy consola AWS Management Console y ábrela en https://console.aws.amazon.com/codedeploy.

    nota

    Inicie sesión con el mismo usuario que configuró en Empezar con 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 ver instrucciones, consulte Cree 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: Implemente una aplicación en una instancia local con CodeDeploy (Windows Server, Ubuntu Server o Red Hat Enterprise Linux).

importante

Si reutilizas un rol de CodeDeploy servicio como parte de la creación de un grupo de implementación dirigido a instancias locales, debes Tag:get* incluirlo en la Action parte de la declaració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 Ver detalles CodeDeploy de la implementación .