Administración de perfiles de instancia de Elastic Beanstalk - AWS Elastic Beanstalk

Administración de perfiles de instancia de Elastic Beanstalk

Un perfil de instancia es un contenedor de una función de AWS Identity and Access Management (IAM) que se puede utilizar para transferir información de la función a una instancia Amazon EC2 cuando la instancia se inicia. Cuando lanza un entorno con la consola de Elastic Beanstalk o la CLI de EB, Elastic Beanstalk crea un perfil de instancia predeterminado, llamado aws-elasticbeanstalk-ec2-role, y le asigna políticas administradas con permisos predeterminados.

Elastic Beanstalk proporciona tres políticas administradas: una para la capa de servidor web, otra para la capa de trabajo y otra con los permisos adicionales necesarios para entornos Multicontainer Docker. La consola asigna todas estas políticas al rol adjuntado al perfil de instancia predeterminado. Las políticas son las siguientes.

Políticas de perfil de instancia administradas

  • AWSElasticBeanstalkWebTier: concede permisos para que la aplicación cargue los registros en Amazon S3 e información de depuración en AWS X-Ray.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "BucketAccess", "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "XRayAccess", "Action":[ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "CloudWatchLogsAccess", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:DescribeLogGroups" ], "Effect": "Allow", "Resource": [ "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*" ] }, { "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] } ] }
  • AWSElasticBeanstalkWorkerTier: concede permisos para las cargas de registros, depuración, publicación de métricas y tareas de instancias de trabajo, como la administración de colas, la elección de nodos principales y tareas periódicas.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "MetricsAccess", "Action": [ "cloudwatch:PutMetricData" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "XRayAccess", "Action":[ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "QueueAccess", "Action": [ "sqs:ChangeMessageVisibility", "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" }, { "Sid": "BucketAccess", "Action": [ "s3:Get*", "s3:List*", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "DynamoPeriodicTasks", "Action": [ "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:UpdateItem" ], "Effect": "Allow", "Resource": [ "arn:aws:dynamodb:*:*:table/*-stack-AWSEBWorkerCronLeaderRegistry*" ] }, { "Sid": "CloudWatchLogsAccess", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Effect": "Allow", "Resource": [ "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*" ] }, { "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] } ] }
  • AWSElasticBeanStalkMultiContainerDocker : concede permisos a Amazon Elastic Container Service para coordinar las tareas del clúster.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ECSAccess", "Effect": "Allow", "Action": [ "ecs:Poll", "ecs:StartTask", "ecs:StopTask", "ecs:DiscoverPollEndpoint", "ecs:StartTelemetrySession", "ecs:RegisterContainerInstance", "ecs:DeregisterContainerInstance", "ecs:DescribeContainerInstances", "ecs:Submit*" ], "Resource": "*" } ] }

Para permitir que las instancias EC2 del entorno asuman el rol aws-elasticbeanstalk-ec2-role, el perfil de instancia especifica Amazon EC2 como una entidad de confianza en la política de relación de confianza, de la siguiente manera.

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

Para personalizar los permisos, puede añadir políticas al rol asociado al perfil de instancia predeterminado o crear su propio perfil de instancia con un conjunto restringido de permisos.

Verificación de los permisos asignados al perfil de instancia predeterminado

Los permisos asignados al perfil de instancia predeterminado pueden variar en función de cuándo se creó el perfil, la última vez que se lanzó un entorno y el cliente que se utilizó. Puede verificar los permisos del perfil de instancia en la consola de IAM.

Para verificar los permisos del perfil de instancia predeterminado

  1. Abra la página Roles en la consola de IAM

  2. Seleccione aws-elasticbeanstalk-ec2-role.

  3. Revise la lista de políticas asociadas al rol en la pestaña Permissions (Permisos).

  4. Para ver los permisos que concede una política, elija la política.

Actualización de un perfil de instancia predeterminado obsoleto

Si al perfil de instancia predeterminado le faltan los permisos necesarios, puede actualizarlo creando un nuevo entorno en la consola de administración del entorno de Elastic Beanstalk.

También puede añadir las políticas administradas al rol adjuntado al perfil de instancia predeterminado manualmente.

Para agregar políticas administradas al rol adjuntado al perfil de instancia predeterminado

  1. Abra la página Roles en la consola de IAM

  2. Seleccione aws-elasticbeanstalk-ec2-role.

  3. En la pestaña Permisos, elija Attach policies (Asociar políticas).

  4. Escriba AWSElasticBeanstalk para filtrar las políticas.

  5. Seleccione las siguientes políticas y, después, elija Attach policy (Asociar política):

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

Añadir permisos al perfil de instancia predeterminado

Si la aplicación tiene acceso a las API o recursos de AWS a los que no se concede permiso en el perfil de instancia predeterminado, agregue políticas que concedan permisos en la consola de IAM.

Para agregar políticas al rol adjuntado al perfil de instancia predeterminado

  1. Abra la página Roles en la consola de IAM.

  2. Seleccione aws-elasticbeanstalk-ec2-role.

  3. En la pestaña Permisos, elija Attach policies (Asociar políticas).

  4. Seleccione la política administrada que se aplicará a los demás servicios que utilice la aplicación. Por ejemplo, AmazonS3FullAccess o AmazonDynamoDBFullAccess.

  5. Elija Attach policy.

Creación de un perfil de instancia

Un perfil de instancia es un contenedor de un rol de IAM estándar que permite a una instancia EC2 asumir el rol. Puede crear perfiles de instancia adicionales para personalizar los permisos para diferentes aplicaciones o para crear un perfil de instancia que no conceda permisos a los entornos de capa de proceso de trabajo o Multicontainer Docker, si no utiliza estas características.

Para crear un perfil de instancia

  1. Abra la página Roles en la consola de IAM

  2. Elija Create role (crear rol).

  3. En AWS service (Servicio de AWS), elija EC2.

  4. Elija Next: Permissions.

  5. Asocie las políticas administradas correspondientes proporcionadas por Elastic Beanstalk y cualquier otra política que proporcione permisos que necesite su aplicación.

  6. Elija Next: Tags (Siguiente: Etiquetas).

  7. (Opcional) Añada etiquetas al rol.

  8. Elija Next: Review.

  9. Escriba un nombre para el rol.

  10. Elija Create role.

Perfiles de instancia con plataformas Amazon Linux 2

Las plataformas Amazon Linux 2 necesitan un perfil de instancia para funcionar correctamente. Por ejemplo, todas las versiones de las plataformas Amazon Linux 2 habilitan de forma predeterminada el estado mejorado durante la creación del entorno. Las instancias necesitan los permisos adecuados para poder recopilar información sobre el estado mejorado y enviar notificaciones.