Implementación de una aplicación en otra cuenta de AWS - AWS CodeDeploy

Implementación de una aplicación en otra cuenta de AWS

Las organizaciones suelen tener varias cuentas de AWS que utilizan para fines diferentes (por ejemplo, una para tareas de administración de sistemas y otra para tareas de desarrollo, prueba y producción o una asociada a entornos de desarrollo y prueba y otra asociada a un entorno de producción).

Si bien puede llevar a cabo tareas relacionadas en cuentas diferentes, los grupos de implementación de CodeDeploy y las instancias de Amazon EC2 en las que se implementan están estrictamente vinculadas a las cuentas con las que se crearon. Por ejemplo, no se puede añadir una instancia que lanzó en una cuenta a un grupo de implementaciones en otra.

Suponga que tiene dos cuentas de AWS: su cuenta de desarrollo y su cuenta de producción. Trabaja principalmente en la cuenta de desarrollo, pero desea poder iniciar implementaciones en su cuenta de producción sin un conjunto completo de credenciales allí o sin tener que salir de la cuenta de desarrollo e iniciar sesión en la cuenta de producción.

Después de seguir los pasos de configuración entre cuentas, puede iniciar implementaciones que pertenecen a otra cuenta de la organización, sin necesitar un conjunto completo de credenciales para esa otra cuenta. Esto es posible, en parte, utilizando una capacidad proporcionada en el AWS Security Token Service (AWS STS) que le concede acceso temporal a esa cuenta.

Paso 1: Crear un bucket de S3 en cualquiera de las cuentas

En la cuenta de desarrollo o en la cuenta de producción:

  • Si aún no lo ha hecho, cree un bucket de Amazon S3 en el cual se almacenarán las revisiones de la aplicación para la cuenta de producción. Para obtener información, consulte Crear un bucket en Amazon S3. Incluso, puede utilizar el mismo bucket y revisiones de la aplicación para ambas cuentas, implementando los mismos archivos a su entorno de producción que ya probó y verificó en la cuenta de desarrollo.

Paso 2: Conceder permisos de bucket de Amazon S3 al perfil de instancia de IAM de la cuenta de producción

Si el bucket de Amazon S3 que creó en el paso 1 está en la cuenta de producción, este paso no es necesario. El rol que asuma después ya tendrá acceso a este bucket porque también estará en la cuenta de producción.

Si creó el bucket de Amazon S3 en la cuenta de desarrollo, haga lo siguiente:

  • En la cuenta de producción, cree un perfil de instancia de IAM. Para obtener más información, consulte Paso 4: Crear un perfil de instancia de IAM para las instancias de Amazon EC2.

    nota

    Anote el ARN de este perfil de instancia de IAM. Deberá añadirlo a la política de buckets cruzados que cree a continuación.

  • En la cuenta de desarrollo, conceda acceso al bucket de Amazon S3 que creó en la cuenta de desarrollo al perfil de instancia de IAM que acaba de crear en la cuenta de producción. Para obtener más información, consulte Ejemplo 2: Propietario del bucket que concede permisos de bucket entre cuentas.

    Tenga en cuenta lo siguiente cuando complete el proceso de conceder permisos de bucket entre cuentas:

    • En el ejemplo del tutorial, la Cuenta A representa la cuenta de desarrollo y la Cuenta B representa la cuenta de producción.

    • Cuando realice las tareas de la cuenta A (cuenta de desarrollo), modifique la siguiente política de bucket para conceder permisos entre cuentas en lugar de utilizar la política de ejemplo del tutorial.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Sid": "Cross-account permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role-name" }, "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::bucket-name/*" ] } ] }

      account-id representa el número de cuenta de la cuenta de producción en la que acaba de crear el perfil de instancia de IAM.

      role-name representa el nombre del perfil de instancia de IAM que acaba de crear.

      bucket-name representa el nombre del bucket que creó en el paso 1. Asegúrese de incluir /* después del nombre de su bucket para conceder acceso a cada uno de los archivos dentro del bucket.

Paso 3: Crear recursos y un rol entre cuentas en la cuenta de producción

En su cuenta de producción:

  • Cree los recursos de CodeDeploy (aplicación, grupo de implementación, configuración de implementación, instancias de Amazon EC2, perfil de instancia de Amazon EC2, rol de servicio, etc.) siguiendo las instrucciones de esta guía.

  • Cree un rol adicional, un rol de IAM entre cuentas, que un usuario de su cuenta de desarrollo pueda asumir para llevar a cabo operaciones de CodeDeploy en esta cuenta de producción.

    Utilice el Tutorial: Delegación del acceso entre cuentas de AWS mediante roles de IAM como guía para ayudarle a crear el rol entre cuentas. En lugar de añadir los permisos de muestra del tutorial al documento de la política, debería adjuntar, como mínimo, las dos políticas siguientes que AWS proporciona para el rol:

    • AmazonS3FullAccess: necesaria solamente si el bucket de S3 está en la cuenta de desarrollo. Proporciona el rol asumido de la cuenta de producción con acceso total a los servicios y recursos de Amazon S3 en la cuenta de desarrollo donde se almacena la revisión.

    • AWSCodeDeployDeployerAccess: permite a un usuario registrar e implementar revisiones.

    Si desea crear y administrar grupos de implementación y no solamente iniciar implementaciones, añada la política AWSCodeDeployFullAccess en lugar de la política AWSCodeDeployDeployerAccess. Para obtener más información acerca del uso de políticas administradas de IAM para conceder permisos para tareas de CodeDeploy, consulte Políticas administradas por AWS (predefinidas) para CodeDeploy.

    Puede adjuntar políticas adicionales si desea ejecutar tareas en otros servicios de AWS mientras utiliza este rol entre cuentas.

importante

Cuando cree el rol de IAM entre cuentas, anote los detalles que necesitará para acceder a la cuenta de producción.

Para utilizar la Consola de administración de AWS para intercambiar los roles, debe proporcionar una de las siguientes opciones:

  • Una URL para acceder a la cuenta de producción con las credenciales del rol asumido. Encontrará la URL en la página Review, que aparece al final del proceso de creación de rol entre cuentas.

  • El nombre del rol entre cuentas y el número del ID de la cuenta o el alias.

Para utilizar la AWS CLI para intercambiar los roles, debe proporcionar una de las siguientes opciones:

  • El ARN del rol entre cuentas que asumirá.

Paso 4: Cargar la revisión de la aplicación al bucket de Amazon S3

En la cuenta en la que creó el bucket de Amazon S3:

Paso 5: Asumir el rol entre cuentas e implementar las aplicaciones

En la cuenta de desarrollo, puede utilizar la AWS CLI o la Consola de administración de AWS para asumir el rol entre cuentas e iniciar la implementación en la cuenta de producción.

Para obtener instrucciones acerca de cómo usar la Consola de administración de AWS para cambiar de rol e iniciar implementaciones, consulte Cambio a un rol (Consola de administración de AWS) y Creación de una implementación en una plataforma de informática de EC2/en las instalaciones (consola).

Para obtener instrucciones acerca de cómo utilizar la AWS CLI para asumir el rol entre cuentas e iniciar implementaciones, consulte Cambio a un rol de IAM (AWS Command Line Interface) y Creación de una implementación en una plataforma de informática EC2/en las instalaciones (CLI).

Para obtener más información acerca de cómo asumir un rol a través de AWS STS, consulte AssumeRole en la Guía del usuario de AWS Security Token Service y assume-role en Referencia de comandos de AWS CLI.

Tema relacionado: