Função de serviço do Elastic Beanstalk - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Função de serviço do Elastic Beanstalk

Uma função de serviço é uma função do IAM que o console do Elastic Beanstalk assume ao chamar outros serviços em seu nome. Por exemplo, o Elastic Beanstalk usa uma função de serviço ao chamar as APIs do Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing e Amazon EC2 Auto Scaling para coletar informações. A função de serviço que o Elastic Beanstalk usa é a função que você especificou ao criar o ambiente do Elastic Beanstalk.

Existem duas políticas gerenciadas que são anexadas ao perfil de serviço. Essas políticas fornecem as permissões que permitem que o Elastic Beanstalk acesse os recursos necessários da AWS para criar e gerenciar seus ambientes. Uma das políticas gerenciadas fornece permissões para monitoramento avançado de integridade e compatibilidade com o Amazon SQS no nível do operador e a outra fornece as permissões adicionais necessárias para atualizações gerenciadas da plataforma.

Essa política concede todas as permissões de que o Elastic Beanstalk precisa para monitorar a integridade do ambiente. Ela também inclui ações do Amazon SQS para permitir que o Elastic Beanstalk monitore a atividade das filas nos ambientes de operador.

{ "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 permissões ao Elastic Beanstalk para atualizar ambientes em seu nome a fim de realizar atualizações gerenciadas de plataforma.

Agrupamentos de permissão no nível de serviço

Esta política é agrupada em declarações com base no conjunto de permissões fornecidas.

  • ElasticBeanstalkPermissions: esse grupo de permissões destina-se a acionar as ações de serviço do Elastic Beanstalk (APIs do Elastic Beanstalk).

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices - Esse grupo de permissões permite que qualquer função seja transferida para o Elastic Beanstalk e para outros serviços downstream, como o AWS CloudFormation.

  • ReadOnlyPermissions: esse grupo de permissões destina-se a coletar informações sobre o ambiente em execução.

  • *OperationPermissions: os grupos com este padrão de nomenclatura destinam-se a acionar as operações necessárias para executar atualizações na plataforma.

  • *BroadOperationPermissions: os grupos com este padrão de nomenclatura destinam-se a acionar as operações necessárias para executar atualizações na plataforma. Eles também incluem permissões amplas para oferecer suporte a ambientes herdados.

  • *TagResource— Grupos com esse padrão de nomenclatura são para chamadas que usam as APIs tag-on-create para anexar tags em recursos que estão sendo criados em um ambiente 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" ] } } } ] }

Você pode criar um ambiente Elastic Beanstalk com qualquer das abordagens a seguir. Cada seção descreve como a abordagem lida com o perfil de serviço.

Console do Elastic Beanstalk

Se você criar um ambiente usando o console do Elastic Beanstalk, o Elastic Beanstalk solicita a criação de uma função de serviço chamada aws-elasticbeanstalk-service-role. Quando criado por meio do Elastic Beanstalk, esse perfil inclui uma política de confiança que permite ao Elastic Beanstalk assumir o perfil de serviço. As duas políticas gerenciadas descritas anteriormente neste tópico também estão vinculadas ao perfil.

Interface de linha de comando do Elastic Beanstalk (CLI do EB)

Você pode criar um ambiente usando o comando eb create da interface da linha de comando do Elastic Beanstalk (CLI do EB). Se você não especificar um perfilde serviço por meio da opção --service-role. O Elastic Beanstalk cria o mesmo perfil de serviço padrão aws-elasticbeanstalk-service-role. Se a função de serviço padrão já existir, o Elastic Beanstalk a usará para o novo ambiente. Quando criado por meio do Elastic Beanstalk, esse perfil inclui uma política de confiança que permite ao Elastic Beanstalk assumir o perfil de serviço. As duas políticas gerenciadas descritas anteriormente neste tópico também estão vinculadas ao perfil.

API do Elastic Beanstalk

Você pode criar um ambiente usando a ação CreateEnvironment da API do Elastic Beanstalk. Se você não especificar um perfil de serviço, o Elastic Beanstalk criará um perfil vinculado ao serviço de monitoramento. Esse é um tipo exclusivo de função de serviço predefinida pelo Elastic Beanstalk para incluir todas as permissões que o serviço exige para chamar outros Serviços da AWS em seu nome. A função vinculada a serviço é associada à sua conta. O Elastic Beanstalk cria essa função uma só vez e a reutiliza ao criar ambientes adicionais. Você também pode usar o IAM para criar antecipadamente a função vinculada ao serviço de monitoramento para sua conta. Quando sua conta tem um perfil vinculado ao serviço de monitoramento, é possível usá-lo para criar um ambiente usando a API, o console ou a CLI do Elastic Beanstalk. Para obter instruções sobre como usar funções vinculadas a serviços com ambientes do Elastic Beanstalk, consulte Usar funções vinculadas ao serviço para o Elastic Beanstalk.

Para obter mais informações sobre as funções de serviço, consulte Gerenciar funções de serviço do Elastic Beanstalk.