Paso 4: Crear un perfil de instancia de IAM para las instancias de Amazon EC2
nota
Puede omitir este paso si utiliza la plataforma de informática Amazon ECS o AWS Lambda.
Las instancias de Amazon EC2 necesitan permiso para acceder a los buckets de Amazon S3 o a los repositorios de GitHub en los que se encuentran las aplicaciones. Para lanzar instancias de Amazon EC2 compatibles con CodeDeploy, debe crear un rol de IAM adicional: un perfil de instancia. Estas instrucciones le indicarán cómo crear un perfil de instancia de IAM para asociarlo a las instancias Amazon EC2. Este rol concede a CodeDeploy permiso de acceso a los buckets de Amazon S3 o los repositorios de GitHub donde se encuentran las aplicaciones.
Puede crear un perfil de instancia de IAM con la AWS CLI, la consola de IAM o las API de IAM.
nota
Puede adjuntar un perfil de instancias de IAM a una instancia de Amazon EC2 en el momento de lanzarla, o bien, adjuntarlo a una instancia ya lanzada anteriormente. Para obtener más información, consulte Perfiles de instancia.
Temas
Creación de un perfil de instancia de IAM para las instancias de Amazon EC2 (CLI)
En estos pasos suponemos que ya ha seguido las instrucciones de los tres primeros pasos de Introducción a CodeDeploy.
-
En el equipo de implementación, crea un archivo de texto con el nombre
CodeDeployDemo-EC2-Trust.json. Pegue el contenido siguiente, que permite a Amazon EC2 actuar en su nombre: -
En el mismo directorio, cree un archivo de texto con el nombre
CodeDeployDemo-EC2-Permissions.json. Pegue el siguiente contenido:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }nota
Le recomendamos que restrinja esta política únicamente a los buckets de Amazon S3 a los que las instancias de Amazon EC2 deban tener acceso. Asegúrese de dar acceso a los buckets de Amazon S3 que contienen el agente de CodeDeploy. De lo contrario, puede producirse un error cuando el agente de CodeDeploy se instale o actualice en las instancias. Para conceder al perfil de instancia de IAM acceso únicamente a algunos buckets del kit de recursos de CodeDeploy en Amazon S3, utilice la siguiente política, pero elimine las líneas de los buckets a los que desee impedir el acceso:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }nota
Si quiere utilizar la autorización de IAM o los puntos de conexión de Amazon Virtual Private Cloud (VPC) con CodeDeploy, tendrá que añadir más permisos. Para obtener más información, consulte Uso de CodeDeploy con Amazon Virtual Private Cloud.
-
Desde el mismo directorio, llame al comando create-role para crear un rol de IAM denominado
CodeDeployDemo-EC2-Instance-Profile, basado en la información del primer archivo:importante
Asegúrese de incluir
file://antes del nombre de archivo. Es obligatorio en este comando.aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json -
Desde el mismo directorio, llame al comando put-role-policy para conceder al rol
CodeDeployDemo-EC2-Instance-Profilelos permisos correspondientes a la información del segundo archivo:importante
Asegúrese de incluir
file://antes del nombre de archivo. Es obligatorio en este comando.aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json -
Llame a attach-role-policy a fin de conceder al rol permisos de Amazon EC2 Systems Manager para que SSM pueda instalar el agente de CodeDeploy. Esta política no es necesaria si tiene pensado instalar el agente desde el bucket de Amazon S3 público con la línea de comandos. Obtenga más información sobre la instalación del agente de CodeDeploy.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile -
Ejecute el comando create-instance-profile seguido del comando add-role-to-instance-profile para crear un perfil de instancia de IAM denominado
CodeDeployDemo-EC2-Instance-Profile. El perfil de instancia permite a Amazon EC2 pasar el rol de IAM denominadoCodeDeployDemo-EC2-Instance-Profilea una instancia de Amazon EC2 en el momento de lanzarla por primera vez:aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile aws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-ProfileSi necesita obtener el nombre del perfil de instancia de IAM, consulte list-instance-profiles-for-role en la sección sobre IAM de la Referencia de la AWS CLI.
Ya ha creado un perfil de instancia de IAM para asociarlo a las instancias de Amazon EC2. Para obtener más información, consulte Roles de IAM para Amazon EC2 en la Guía del usuario de Amazon EC2.
Creación de un perfil de instancia de IAM para las instancias de Amazon EC2 (consola)
Inicie sesión en Consola de administración de AWS y abra la consola IAM en https://console.aws.amazon.com/iam/.
-
En el panel de navegación de la consola de IAM, elija Políticas y después Crear política.
-
En la página Especificar permisos, seleccione JSON.
Elimine el código de muestra de
JSON.Pegue el siguiente código:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }nota
Le recomendamos que restrinja esta política únicamente a los buckets de Amazon S3 a los que las instancias de Amazon EC2 deban tener acceso. Asegúrese de dar acceso a los buckets de Amazon S3 que contienen el agente de CodeDeploy. De lo contrario, puede producirse un error cuando el agente de CodeDeploy se instale o actualice en las instancias. Para conceder al perfil de instancia de IAM acceso únicamente a algunos buckets del kit de recursos de CodeDeploy en Amazon S3, utilice la siguiente política, pero elimine las líneas de los buckets a los que desee impedir el acceso:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }nota
Si quiere utilizar la autorización de IAM o los puntos de conexión de Amazon Virtual Private Cloud (VPC) con CodeDeploy, tendrá que añadir más permisos. Para obtener más información, consulte Uso de CodeDeploy con Amazon Virtual Private Cloud.
-
Elija Siguiente.
-
En la página Revisar y crear, en Nombre de la política, escriba
CodeDeployDemo-EC2-Permissions. -
(Opcional) En Descripción, escriba una descripción para la política.
-
Elija Crear política.
En el panel de navegación, seleccione Roles y luego seleccione Crear rol.
-
En Caso de uso, elija el caso de uso EC2.
Elija Siguiente.
-
En la lista de políticas, seleccione la casilla de verificación situada junto a la política que acaba de crear (CodeDeployDemo-EC2-Permissions). Si es necesario, utilice el cuadro de búsqueda para encontrar la política.
-
Para utilizar Systems Manager para instalar o configurar el agente de CodeDeploy, seleccione la casilla situada junto a AmazonSSMManagedInstanceCore. Esta política administrada por AWS permite que una instancia utilice la funcionalidad básica del servicio Systems Manager. Si es necesario, utilice el cuadro de búsqueda para encontrar la política. Esta política no es necesaria si tiene pensado instalar el agente desde el bucket de Amazon S3 público con la línea de comandos. Obtenga más información sobre la instalación del agente de CodeDeploy.
-
Elija Siguiente.
-
En la página Asignar nombre, revisar y crear, en Nombre del rol, ingrese un nombre para el rol de servicio (por ejemplo,
CodeDeployDemo-EC2-Instance-Profile) y luego elija Crear rol.También puede ingresar una descripción para este rol de servicio en el cuadro Descripción del rol.
Ya ha creado un perfil de instancia de IAM para asociarlo a las instancias de Amazon EC2. Para obtener más información, consulte Roles de IAM para Amazon EC2 en la Guía del usuario de Amazon EC2.