Paso 2: Crear un rol de servicio para CodeDeploy - 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.

Paso 2: Crear un rol de servicio para CodeDeploy

En AWS, las funciones de servicio se utilizan para conceder permisos a un AWS servicio para que pueda acceder a AWS los recursos. Las políticas que adjunte al rol de servicio determinarán a qué recursos de tendrá acceso el servicio y qué puede hacer con esos recursos.

La función de servicio para la que cree CodeDeploy debe tener los permisos necesarios para su plataforma informática. Si implementa más de una plataforma de informática, cree un rol de servicio para cada una. Para añadir permisos, adjunta una o más de las siguientes políticas AWS proporcionadas:

Para las implementaciones de EC2/en las instalaciones, adjunte la política AWSCodeDeployRole. Proporciona los permisos necesarios para que su rol de servicio:

  • Leer las etiquetas en sus instancias o identificar sus instancias de Amazon EC2 mediante nombres de grupo de Amazon EC2 Auto Scaling.

  • Leer, crear, actualizar y eliminar grupos de Amazon EC2 Auto Scaling, enlaces de ciclo de vida y políticas de escalado.

  • Publicar información para temas de Amazon SNS.

  • Recupere información sobre CloudWatch las alarmas.

  • Leer y actualizar Elastic Load Balancing.

    nota

    Si crea un grupo de escalado automático con una plantilla de inicio, debe añadir los siguientes permisos:

    • ec2:RunInstances

    • ec2:CreateTags

    • iam:PassRole

    Para obtener más información, consulte Paso 2: Crear un rol de servicio, Creación de una plantilla de lanzamiento para un grupo de escalado automático y Compatibilidad con las plantillas de lanzamiento en la Guía del usuario de Amazon EC2 Auto Scaling.

En las implementaciones de Amazon ECS, si desea obtener acceso total a los servicios de soporte técnico, asocie la política AWSCodeDeployRoleForECS. Proporciona los permisos necesarios para que su rol de servicio:

  • Leer, actualizar y eliminar conjuntos de tareas de Amazon ECS.

  • Actualizar grupos de destino de Elastic Load Balancing, oyentes y reglas.

  • Invoque AWS Lambda funciones.

  • Acceder a archivos de revisión en buckets de Amazon S3.

  • Recupere información sobre CloudWatch las alarmas.

  • Publicar información para temas de Amazon SNS.

En las implementaciones de Amazon ECS, si desea obtener acceso limitado a los servicios de soporte técnico, asocie la política AWSCodeDeployRoleForECSLimited. Proporciona los permisos necesarios para que su rol de servicio:

  • Leer, actualizar y eliminar conjuntos de tareas de Amazon ECS.

  • Recupera información sobre CloudWatch las alarmas.

  • Publicar información para temas de Amazon SNS.

Para las implementaciones de AWS Lambda, si desea permitir la publicación en Amazon SNS, adjunte la política. AWSCodeDeployRoleForLambda Proporciona los permisos necesarios para que su rol de servicio:

  • Lea, actualice e invoque funciones y alias AWS Lambda .

  • Acceder a archivos de revisión en buckets de Amazon S3.

  • Recupere información sobre CloudWatch las alarmas.

  • Publicar información para temas de Amazon SNS.

Para las implementaciones de AWS Lambda, si desea limitar el acceso a Amazon SNS, adjunte la política. AWSCodeDeployRoleForLambdaLimited Proporciona los permisos necesarios para que su rol de servicio:

  • Lea, actualice e invoque funciones y alias AWS Lambda .

  • Acceder a archivos de revisión en buckets de Amazon S3.

  • Recupere información sobre CloudWatch las alarmas.

Como parte de la configuración del rol de servicio, también actualizará su relación de confianza para especificar a qué puntos de enlace desea concederle acceso.

Puede crear un rol de servicio con la consola de IAM, las API de IAM o las AWS CLI API de IAM.

Creación de un rol de servicio (consola)

  1. Inicie sesión en la consola de IAM AWS Management Console y ábrala en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Roles y luego seleccione Crear rol.

  3. Elija el AWS servicio y, en Caso de uso, elija CodeDeployen la lista desplegable.

  4. Elija su caso de uso:

    • Para las implementaciones de EC2/on-premise, elija. CodeDeploy

    • Para las implementaciones de AWS Lambda, elija Lambda. CodeDeploy

    • Para las implementaciones de Amazon ECS, elija CodeDeploy - ECS.

  5. Elija Siguiente.

  6. En la página Añadir permisos, se muestra la política de permisos correcta para cada caso de uso. Elija Siguiente.

  7. En la página Asignar nombre, revisar y crear, en Nombre del rol, ingrese un nombre para el rol de servicio (por ejemplo, CodeDeployServiceRole) y luego elija Crear rol.

    También puede ingresar una descripción para este rol de servicio en el cuadro Descripción del rol.

  8. Si desea que este rol de servicio tenga permiso de acceso a todos los puntos de enlace contemplados actualmente, ya ha terminado con este procedimiento.

    Para restringir el acceso de este rol de servicio a algunos puntos de conexión, continúe con los pasos restantes de este procedimiento.

  9. En la lista de roles, busque y seleccione el rol que acaba de crear (CodeDeployServiceRole).

  10. Seleccione la pestaña Relaciones de confianza.

  11. Elija Editar la política de confianza.

    Debe aparecer la siguiente política, que concede al rol de servicio el permiso de acceso a todos los puntos de enlace compatibles:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    Para conceder acceso al rol de servicio a solo algunos puntos de conexión admitidos, reemplace el contenido del recuadro de texto de la política con la política siguiente. Quite las líneas de los puntos de conexión a los que desea evitar el acceso y, a continuación, elija Actualizar política.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

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

Creación de un rol de servicio (CLI)

  1. En el equipo de implementación, crea un archivo de texto con un nombre, como por ejemplo, CodeDeployDemo-Trust.json. Este archivo se utiliza para poder CodeDeploy trabajar en su nombre.

    Realice una de las siguientes acciones siguientes:

    • Para permitir el acceso a todas AWS las regiones compatibles, guarde el siguiente contenido en el archivo:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
    • Para conceder acceso solo a algunas regiones, escriba el siguiente contenido en el archivo y elimine las líneas de las regiones a las que no desee conceder acceso:

      { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codedeploy.us-east-1.amazonaws.com", "codedeploy.us-east-2.amazonaws.com", "codedeploy.us-west-1.amazonaws.com", "codedeploy.us-west-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.ap-east-1.amazonaws.com", "codedeploy.ap-northeast-1.amazonaws.com", "codedeploy.ap-northeast-2.amazonaws.com", "codedeploy.ap-northeast-3.amazonaws.com", "codedeploy.ap-southeast-1.amazonaws.com", "codedeploy.ap-southeast-2.amazonaws.com", "codedeploy.ap-southeast-3.amazonaws.com", "codedeploy.ap-southeast-4.amazonaws.com", "codedeploy.ap-south-1.amazonaws.com", "codedeploy.ap-south-2.amazonaws.com", "codedeploy.ca-central-1.amazonaws.com", "codedeploy.eu-west-1.amazonaws.com", "codedeploy.eu-west-2.amazonaws.com", "codedeploy.eu-west-3.amazonaws.com", "codedeploy.eu-central-1.amazonaws.com", "codedeploy.eu-central-2.amazonaws.com", "codedeploy.eu-north-1.amazonaws.com", "codedeploy.eu-south-1.amazonaws.com", "codedeploy.eu-south-2.amazonaws.com", "codedeploy.il-central-1.amazonaws.com", "codedeploy.me-central-1.amazonaws.com", "codedeploy.me-south-1.amazonaws.com", "codedeploy.sa-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
      nota

      No incluya una coma después del último punto de enlace de la lista.

  2. Desde el mismo directorio, ejecute el comando create-role para crear un rol de servicio con el nombre CodeDeployServiceRole basado en la información del archivo de texto que acaba de crear:

    aws iam create-role --role-name CodeDeployServiceRole --assume-role-policy-document file://CodeDeployDemo-Trust.json
    importante

    Asegúrese de incluir file:// antes del nombre de archivo. Es obligatorio en este comando.

    En la salida del comando, anote el valor de la entrada Arn para el objeto Role. Lo necesitará más adelante al crear grupos de implementaciones. Si no recuerda el valor, siga las instrucciones indicadas en Obtención del ARN del rol de servicio (CLI) .

  3. La política administrada que utilice dependerá de la plataforma de informática.

    • Para una implementación en una plataforma de informática de EC2/en las instalaciones:

      Llame al comando attach-role-policy para conceder al rol de servicio CodeDeployServiceRole los permisos correspondientes a la política administrada de IAM denominada AWSCodeDeployRole. Por ejemplo:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole
    • Si su implementación se realiza en una plataforma de procesamiento AWS Lambda:

      Llame al comando attach-role-policy para conceder al rol de servicio CodeDeployServiceRole los permisos correspondientes a la política administrada de IAM denominada AWSCodeDeployRoleForLambda o AWSCodeDeployRoleForLambdaLimited. Por ejemplo:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda
    • Si su implementación se realiza en una plataforma de informática de Amazon ECS:

      Llame al comando attach-role-policy para conceder al rol de servicio CodeDeployServiceRole los permisos correspondientes a la política administrada de IAM denominada AWSCodeDeployRoleForECS o AWSCodeDeployRoleForECSLimited. Por ejemplo:

      aws iam attach-role-policy --role-name CodeDeployServiceRole --policy-arn arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS

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

Obtención del ARN del rol de servicio (consola)

Para obtener el ARN del rol de servicio con la consola de IAM:

  1. Inicie sesión en la consola de IAM AWS Management Console y ábrala en https://console.aws.amazon.com/iam/.

  2. Seleccione Roles en el panel de navegación.

  3. En el cuadro Filter (Filtro), escriba CodeDeployServiceRole y, a continuación, pulse Intro.

  4. Elige CodeDeployServiceRole.

  5. Anote el valor del campo Role ARN (ARN de rol).

Obtención del ARN del rol de servicio (CLI)

Para usar el AWS CLI para obtener el ARN del rol de servicio, llame al get-role comando contra el rol de servicio denominado: CodeDeployServiceRole

aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text

El valor devuelto es el ARN del rol de servicio.