Elastic Beanstalk-Servicerolle - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Elastic Beanstalk-Servicerolle

Eine Servicerolle ist die IAM-Rolle, die Elastic Beanstalk annimmt, wenn andere Services in Ihrem Namen aufgerufen werden. Beispiel: Elastic Beanstalk nutzt eine Servicerolle beim Aufrufen von Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing und Amazon EC2 Auto Scaling-APIs zum Erfassen von Informationen. Die Servicerolle, die Elastic Beanstalk verwendet, ist diejenige, die Sie beim Erstellen der Elastic-Beanstalk-Umgebung angegeben haben.

Es gibt zwei verwaltete Richtlinien, die mit der Servicerolle verbunden sind. Diese Richtlinien enthalten die Berechtigungen, die Elastic Beanstalk den Zugriff auf die erforderlichen AWS-Ressourcen zur Erstellung und Verwaltung Ihrer Umgebungen ermöglichen. Eine verwaltete Richtlinie bietet Berechtigungen für die erweiterte Zustandsüberwachung und die Unterstützung von Amazon SQS auf der Worker-Ebene, und eine andere bietet zusätzliche Berechtigungen, die für verwaltete Plattform-Updates erforderlich sind.

Diese-Richtlinie verleiht alle Berechtigungen, die Elastic Beanstalk zur Überwachung des Umgebungszustands benötigt. Sie umfasst auch Amazon-SQS-Aktionen, damit Elastic Beanstalk die Warteschlangenaktivität für Worker-Umgebungen überwachen kann.

{ "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": [ "*" ] } ] }

Diese Richtlinie erteilt Elastic Beanstalk Berechtigungen, um Umgebungen in Ihrem Namen zu aktualisieren, um verwaltete Plattformaktualisierungen durchzuführen.

Service Level-Berechtigungsgruppierungen

Diese Richtlinie ist in Anweisungen gruppiert, die auf den bereitgestellten Berechtigungen basieren.

  • ElasticBeanstalkPermissions — Diese Berechtigungsgruppe dient zum Aufrufen der Elastic Beanstalk-Dienstaktionen (Elastic Beanstalk-APIs).

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices – Diese Berechtigungsgruppe ermöglicht es, jede Rolle an Elastic Beanstalk und an andere nachgelagerte Services wie AWS CloudFormation zu übergeben.

  • ReadOnlyPermissions — Diese Berechtigungsgruppe dient zum Sammeln von Informationen über die laufende Umgebung.

  • *OperationPermissions — Gruppen mit diesem Benennungsmuster dienen zum Aufrufen der notwendigen Vorgänge zur Durchführung von Plattformaktualisierungen.

  • *BroadOperationPermissions — Gruppen mit diesem Benennungsmuster dienen zum Aufrufen der notwendigen Vorgänge zur Durchführung von Plattformaktualisierungen. Sie enthalten auch umfassende Berechtigungen zur Unterstützung von Legacy-Umgebungen.

  • *TagResource – Gruppen mit diesem Benennungsmuster sind für Aufrufe bestimmt, die die Tag-on-Create-APIs verwenden, um Tags an Ressourcen anzuhängen, die in einer Elastic-Beanstalk-Umgebung erstellt werden.

{ "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" ] } } } ] }

Sie können eine Elastic-Beanstalk-Umgebung mit einem der folgenden Ansätze erstellen. In jedem Abschnitt wird beschrieben, wie der Ansatz mit der Servicerolle umgeht.

Elastic-Beanstalk-Konsole

Wenn Sie eine Umgebung mit der Elastic-Beanstalk-Konsole erstellen, werden Sie von Elastic Beanstalk aufgefordert, eine Servicerolle namens aws-elasticbeanstalk-service-role zu erstellen. Wenn diese Rolle über Elastic Beanstalk erstellt wird, enthält sie eine Vertrauensrichtlinie, die Elastic Beanstalk erlaubt, die Servicerolle zu übernehmen. Die beiden verwalteten Richtlinien, die weiter oben in diesem Thema beschrieben wurden, sind ebenfalls mit der Rolle verknüpft.

Elastic Beanstalk Command Line Interface (EB CLI)

Sie können eine Umgebung mit dem Befehl eb create des Elastic Beanstalk Command Line Interface (EB CLI) erstellen. Wenn Sie keine Servicerolle über die Option --service-role angeben. Elastic Beanstalk erstellt dieselbe Standard-Servicerolle aws-elasticbeanstalk-service-role. Wenn die standardmäßige Servicerolle bereits vorhanden ist, verwendet Elastic Beanstalk diese für die neue Umgebung. Wenn diese Rolle über Elastic Beanstalk erstellt wird, enthält sie eine Vertrauensrichtlinie, die Elastic Beanstalk erlaubt, die Servicerolle zu übernehmen. Die beiden verwalteten Richtlinien, die weiter oben in diesem Thema beschrieben wurden, sind ebenfalls mit der Rolle verknüpft.

Elastic-Beanstalk-API

Sie können über die Aktion CreateEnvironment der Elastic Beanstalk Beanstalk-API eine Umgebung erstellen. Wenn Sie keine Servicerolle angeben, erstellt Elastic Beanstalk eine servicegebundene Überwachungsrolle. Dieser eindeutige, von Elastic Beanstalk vordefinierte Servicerollentyp schließt alle Berechtigungen ein, die der Service zum Aufrufen anderer AWS-Services in Ihrem Namen erfordert. Die serviceverknüpfte Rolle ist Ihrem Konto zugeordnet. Sie wird von Elastic Beanstalk einmalig erstellt und dann zum Erstellen weiterer Umgebungen wiederverwendet. Sie können die serviceverknüpfte Überwachungsrolle Ihres Kontos auch im Voraus mit IAM erstellen. Wenn Ihr Konto eine servicegebundene Überwachungsrolle hat, können Sie damit eine Umgebung mit der Elastic Beanstalk-Konsole, der Elastic Beanstalk- oder der EB CLI erstellen. Weitere Informationen zur Verwendung von serviceverknüpften Rollen mit Elastic-Beanstalk-Umgebungen finden Sie unter Servicegebundene Rollen für Elastic Beanstalk verwenden.

Weitere Informationen zu Servicerollen finden Sie unter Rollen von Elastic Beanstalk Service verwalten.