Rol de servicio de Elastic Beanstalk - AWS Elastic Beanstalk

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.

Rol de servicio de Elastic Beanstalk

Un rol de servicio es el rol de IAM que asume Elastic Beanstalk cuando llama a otros servicios en su nombre. Por ejemplo, Elastic Beanstalk utiliza el rol de servicio cuando llama a las API de Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing y Amazon EC2 Auto Scaling para recopilar información. El rol de servicio que utiliza Elastic Beanstalk es el que especificó cuando creó el entorno de Elastic Beanstalk.

Hay dos políticas administradas que están asociadas al rol de servicio. Estas políticas proporcionan los permisos que habilitan a Elastic Beanstalk a acceder a los recursos de AWS necesarios para crear y administrar sus entornos. Una política administrada brinda permisos para el monitoreo de estado mejorado y la compatibilidad con el nivel de trabajo de Amazon SQS, y otra política provee los permisos adicionales necesarios para las actualizaciones de plataforma administradas.

Esta política otorga todos los permisos que necesita Elastic Beanstalk para monitorear el estado del entorno. También incluye acciones de Amazon SQS para permitir que Elastic Beanstalk monitoree la actividad de cola para entornos de trabajo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetHealth", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:GetConsoleOutput", "ec2:AssociateAddress", "ec2:DescribeAddresses", "ec2:DescribeSecurityGroups", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeNotificationConfigurations", "sns:Publish" ], "Resource": [ "*" ] } ] }

Esta política concede permisos a Elastic Beanstalk para actualizar los entornos en su nombre para realizar actualizaciones de plataformas administradas.

Agrupaciones de permisos de nivel de servicio

Esta política se agrupa en instrucciones basadas en el conjunto de permisos proporcionados.

  • ElasticBeanstalkPermissions: este grupo de permisos es para llamar a las acciones del servicio Elastic Beanstalk (API de Elastic Beanstalk).

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices: este grupo de permisos permite que cualquier rol se transfiera a Elastic Beanstalk y a otros servicios descendentes como AWS CloudFormation.

  • ReadOnlyPermissions: este grupo de permisos sirve para recopilar información sobre el entorno en ejecución.

  • *OperationPermissions: los grupos con este patrón de nomenclatura son para llamar a las operaciones necesarias a fin de llevar a cabo actualizaciones de plataforma.

  • *BroadOperationPermissions: los grupos con este patrón de nomenclatura son para llamar a las operaciones necesarias a fin de llevar a cabo actualizaciones de plataforma. También incluyen amplios permisos para admitir entornos heredados.

  • *TagResource: los grupos con este patrón de nomenclatura son para llamadas que utilizan las API de creación de etiquetas para adjuntar etiquetas a los recursos que se están creando en un entorno de Elastic Beanstalk.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ElasticBeanstalkPermissions", "Effect": "Allow", "Action": [ "elasticbeanstalk:*" ], "Resource": "*" }, { "Sid": "AllowPassRoleToElasticBeanstalkAndDownstreamServices", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "elasticbeanstalk.amazonaws.com", "ec2.amazonaws.com", "ec2.amazonaws.com.cn", "autoscaling.amazonaws.com", "elasticloadbalancing.amazonaws.com", "ecs.amazonaws.com", "cloudformation.amazonaws.com" ] } } }, { "Sid": "ReadOnlyPermissions", "Effect": "Allow", "Action": [ "autoscaling:DescribeAccountLimits", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeLoadBalancers", "autoscaling:DescribeNotificationConfigurations", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeScheduledActions", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeImages", "ec2:DescribeInstanceAttribute", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeLaunchTemplates", "ec2:DescribeLaunchTemplateVersions", "ec2:DescribeSecurityGroups", "ec2:DescribeSnapshots", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSubnets", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcs", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:DescribeTargetHealth", "logs:DescribeLogGroups", "rds:DescribeDBEngineVersions", "rds:DescribeDBInstances", "rds:DescribeOrderableDBInstanceOptions", "sns:ListSubscriptionsByTopic" ], "Resource": [ "*" ] }, { "Sid": "EC2BroadOperationPermissions", "Effect": "Allow", "Action": [ "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateLaunchTemplate", "ec2:CreateLaunchTemplateVersion", "ec2:CreateSecurityGroup", "ec2:DeleteLaunchTemplate", "ec2:DeleteLaunchTemplateVersions", "ec2:DeleteSecurityGroup", "ec2:DisassociateAddress", "ec2:ReleaseAddress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress" ], "Resource": "*" }, { "Sid": "EC2RunInstancesOperationPermissions", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*", "Condition": { "ArnLike": { "ec2:LaunchTemplate": "arn:aws:ec2:*:*:launch-template/*" } } }, { "Sid": "EC2TerminateInstancesOperationPermissions", "Effect": "Allow", "Action": [ "ec2:TerminateInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-id": [ "arn:aws:cloudformation:*:*:stack/awseb-e-*", "arn:aws:cloudformation:*:*:stack/eb-*" ] } } }, { "Sid": "ECSBroadOperationPermissions", "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:DescribeClusters", "ecs:RegisterTaskDefinition" ], "Resource": "*" }, { "Sid": "ECSDeleteClusterOperationPermissions", "Effect": "Allow", "Action": "ecs:DeleteCluster", "Resource": "arn:aws:ecs:*:*:cluster/awseb-*" }, { "Sid": "ASGOperationPermissions", "Effect": "Allow", "Action": [ "autoscaling:AttachInstances", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:CreateOrUpdateTags", "autoscaling:DeleteLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteScheduledAction", "autoscaling:DetachInstances", "autoscaling:DeletePolicy", "autoscaling:PutScalingPolicy", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:PutNotificationConfiguration", "autoscaling:ResumeProcesses", "autoscaling:SetDesiredCapacity", "autoscaling:SuspendProcesses", "autoscaling:TerminateInstanceInAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": [ "arn:aws:autoscaling:*:*:launchConfiguration:*:launchConfigurationName/awseb-e-*", "arn:aws:autoscaling:*:*:launchConfiguration:*:launchConfigurationName/eb-*", "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/awseb-e-*", "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/eb-*" ] }, { "Sid": "CFNOperationPermissions", "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/awseb-*", "arn:aws:cloudformation:*:*:stack/eb-*" ] }, { "Sid": "ELBOperationPermissions", "Effect": "Allow", "Action": [ "elasticloadbalancing:AddTags", "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer", "elasticloadbalancing:ConfigureHealthCheck", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterTargets" ], "Resource": [ "arn:aws:elasticloadbalancing:*:*:targetgroup/awseb-*", "arn:aws:elasticloadbalancing:*:*:targetgroup/eb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/awseb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/eb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/*/awseb-*/*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/*/eb-*/*" ] }, { "Sid": "CWLogsOperationPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DeleteLogGroup", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk/*" }, { "Sid": "S3ObjectOperationPermissions", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::elasticbeanstalk-*/*" }, { "Sid": "S3BucketOperationPermissions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketPolicy", "s3:ListBucket", "s3:PutBucketPolicy" ], "Resource": "arn:aws:s3:::elasticbeanstalk-*" }, { "Sid": "SNSOperationPermissions", "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:GetTopicAttributes", "sns:SetTopicAttributes", "sns:Subscribe" ], "Resource": "arn:aws:sns:*:*:ElasticBeanstalkNotifications-*" }, { "Sid": "SQSOperationPermissions", "Effect": "Allow", "Action": [ "sqs:GetQueueAttributes", "sqs:GetQueueUrl" ], "Resource": [ "arn:aws:sqs:*:*:awseb-e-*", "arn:aws:sqs:*:*:eb-*" ] }, { "Sid": "CWPutMetricAlarmOperationPermissions", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricAlarm" ], "Resource": [ "arn:aws:cloudwatch:*:*:alarm:awseb-*", "arn:aws:cloudwatch:*:*:alarm:eb-*" ] }, { "Sid": "AllowECSTagResource", "Effect": "Allow", "Action": [ "ecs:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": [ "CreateCluster", "RegisterTaskDefinition" ] } } } ] }

Puede crear un entorno de Elastic Beanstalk con cualquiera de los siguientes enfoques. Cada sección describe cómo el enfoque administra el rol de servicio.

Consola de Elastic Beanstalk

Si crea un entorno mediante la consola de Elastic Beanstalk, Elastic Beanstalk le pide que cree un rol de servicio denominado aws-elasticbeanstalk-service-role. Cuando se crea con Elastic Beanstalk, este rol incluye una política de confianza que permite a Elastic Beanstalk asumir el rol de servicio. Las dos políticas administradas antes mencionadas en este tema también se asocian al rol.

Interfaz de la línea de comandos de Elastic Beanstalk (CLI de EB)

Puede crear un entorno mediante el comando eb create de la interfaz de línea de comandos de Elastic Beanstalk (CLI de EB). Si no especifica un rol de servicio mediante la opción --service-role. Elastic Beanstalk crea el mismo rol de servicio aws-elasticbeanstalk-service-role predeterminado. Si el rol de servicio predeterminado ya existe, Elastic Beanstalk lo utiliza para el entorno nuevo. Cuando se crea con Elastic Beanstalk, este rol incluye una política de confianza que permite a Elastic Beanstalk asumir el rol de servicio. Las dos políticas administradas antes mencionadas en este tema también se asocian al rol.

API de Elastic Beanstalk

Puede crear un entorno mediante la acción CreateEnvironment de la API de Elastic Beanstalk. Si no especifica un rol de servicio, Elastic Beanstalk crea un rol vinculado a servicios de supervisión. Se trata de un tipo único de rol de servicio predefinido por Elastic Beanstalk que incluye todos los permisos que el servicio requiere para llamar a otros Servicios de AWS en su nombre. El rol vinculado al servicio está asociado a su cuenta. Elastic Beanstalk lo crea una vez y, a continuación, vuelve a utilizarlo al crear entornos adicionales. También puede utilizar IAM para crear un rol vinculado al servicio de supervisión de la cuenta con antelación. Cuando su cuenta tiene un rol vinculado al servicio de supervisión, puede utilizarlo para crear un entorno mediante la consola de Elastic Beanstalk, la API de Elastic Beanstalk o la CLI de EB. Para obtener instrucciones sobre cómo utilizar roles vinculados a servicios con entornos de Elastic Beanstalk, consulte Uso de roles vinculados a servicios para Elastic Beanstalk.

Para obtener más información acerca de los roles de servicio, consulte Administración de roles de servicio de Elastic Beanstalk.