Ruolo di servizio Elastic Beanstalk - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ruolo di servizio Elastic Beanstalk

Un ruolo di servizio è il ruolo IAM che la console Elastic Beanstalk assume quando chiama altri servizi per conto dell'utente. Ad esempio, Elastic Beanstalk utilizza un ruolo di servizio quando chiama le API Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing e Amazon EC2 Auto Scaling per raccogliere le informazioni. Il ruolo di servizio utilizzato da Elastic Beanstalk è quello specificato quando viene creato l'ambiente Elastic Beanstalk.

Sono presenti due policy gestite collegate al ruolo di servizio: Queste policy forniscono le autorizzazioni che consentono a Elastic Beanstalk di accedere alle risorse AWS necessarie per creare e gestire i tuoi ambienti. Una policy gestita fornisce le autorizzazioni per il monitoraggio avanzato dell'integrità e il supporto Amazon SQS del livello worker, mentre l'altra fornisce le autorizzazioni aggiuntive necessarie per gli aggiornamenti gestiti della piattaforma.

Questa policy concede tutte le autorizzazioni richieste da Elastic Beanstalk per monitorare l'integrità dell'ambiente. Inoltre include anche operazioni Amazon SQS per consentire a Elastic Beanstalk di monitorare le attività di coda per gli ambienti worker.

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

Questa policy concede le autorizzazioni a Elastic Beanstalk per aggiornare gli ambienti per tuo conto ed eseguire gli aggiornamenti gestiti della piattaforma.

Raggruppamenti di autorizzazioni a livello di servizio

Questa policy è raggruppata in istruzioni in base al set di autorizzazioni fornite.

  • ElasticBeanstalkPermissions: questo gruppo di autorizzazioni consente di chiamare le operazioni del servizio Elastic Beanstalk (API di Elastic Beanstalk).

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices: questo gruppo di autorizzazioni consente di passare qualsiasi ruolo a Elastic Beanstalk e ad altri servizi downstream come AWS CloudFormation.

  • ReadOnlyPermissions: questo gruppo di autorizzazioni serve a raccogliere informazioni sull'ambiente in esecuzione.

  • *OperationPermissions: i gruppi con questo modello di denominazione servono a chiamare le operazioni necessarie per eseguire gli aggiornamenti della piattaforma.

  • *BroadOperationPermissions: i gruppi con questo modello di denominazione servono a chiamare le operazioni necessarie per eseguire gli aggiornamenti della piattaforma. Includono inoltre autorizzazioni estese per il supporto degli ambienti legacy.

  • *TagResource: i gruppi con questo modello di denominazione sono destinati alle chiamate che utilizzano le API tag-on-create per collegare tag alle risorse create in un 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" ] } } } ] }

Puoi creare un ambiente Elastic Beanstalk con uno dei seguenti approcci. Ogni sezione descrive come l'approccio gestisce il ruolo di servizio.

Console Elastic Beanstalk

Se crei un ambiente utilizzando la console Elastic Beanstalk, Elastic Beanstalk ti chiederà di creare un ruolo di servizio denominato aws-elasticbeanstalk-service-role. Quando creato tramite Elastic Beanstalk, questo ruolo include una policy di attendibilità che consenta a Elastic Beanstalk di assumere il ruolo di servizio. Al ruolo sono allegate anche le due policy gestite descritte in precedenza in questo argomento.

Interfaccia a riga di comando di Elastic Beanstalk (CLI EB)

È possibile creare un ambiente utilizzando il comando eb create dell'Interfaccia della linea di comando Elastic Beanstalk (EB CLI). Se non si specifica un ruolo di servizio attraverso l'opzione --service-role. Elastic Beanstalk crea lo stesso ruolo di servizio predefinito aws-elasticbeanstalk-service-role. Se il ruolo di servizio predefinito esiste già, Elastic Beanstalk lo utilizza per il nuovo ambiente. Quando creato tramite Elastic Beanstalk, questo ruolo include una policy di attendibilità che consenta a Elastic Beanstalk di assumere il ruolo di servizio. Al ruolo sono allegate anche le due policy gestite descritte in precedenza in questo argomento.

API di Elastic Beanstalk

È possibile creare un ambiente utilizzando l'operazione CreateEnvironment dell'API Elastic Beanstalk. Se non si specifica un ruolo di servizio, Elastic Beanstalk crea un ruolo collegato al servizio di monitoraggio. Si tratta di un tipo di ruolo di servizio univoco predefinito da Elastic Beanstalk per includere tutte le autorizzazioni richieste dal servizio per richiamare altri Servizi AWS per tuo conto. Il ruolo collegato al servizio è associato al tuo account. Elastic Beanstalk lo crea una volta, quindi lo riutilizza quando crea altri ambienti. Puoi utilizzare IAM anche per creare in anticipo il ruolo collegato ai servizi di monitoraggio del tuo account. Quando l'account dispone di un ruolo collegato al servizio di monitoraggio, è possibile utilizzarlo per creare un ambiente tramite la console Elastic Beanstalk, l'API Elastic Beanstalk o la EB CLI. Per le istruzioni su come utilizzare i ruoli collegati ai servizi con ambienti Elastic Beanstalk, consultaUtilizzo dei ruoli collegati ai servizi per Elastic Beanstalk.

Per ulteriori informazioni sui ruoli di servizio, consulta Gestione dei ruoli del servizio Elastic Beanstalk.