Elastic Beanstalk 서비스 역할 - AWS Elastic Beanstalk

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Elastic Beanstalk 서비스 역할

서비스 역할은 Elastic Beanstalk가 사용자를 대신하여 다른 서비스를 호출할 때 맡는 IAM 역할입니다. 예를 들어, Elastic Beanstalk는 정보를 수집하기 위해 Amazon Elastic Compute Cloud(Amazon EC2), Elastic Load Balancing 및 Amazon EC2 Auto Scaling API를 호출할 때, 서비스 역할을 사용합니다. Elastic Beanstalk에서 사용하는 서비스 역할은 Elastic Beanstalk 환경을 생성할 때 지정한 역할입니다.

서비스 역할에 연결된 두 가지 관리형 정책이 있습니다. 이러한 정책은 Elastic Beanstalk에서 환경을 생성하고 관리하는 데 필요한 AWS 리소스에 액세스할 수 있도록 하는 권한을 제공합니다. 하나의 관리형 정책은 향상된 상태 모니터링 및 작업자 계층 Amazon SQS 지원에 대한 권한을 제공하고 다른 하나는 관리형 플랫폼 업데이트에 필요한 추가 권한을 제공합니다.

이 정책은 Elastic Beanstalk가 환경 상태를 모니터링하는 데 필요한 모든 권한을 부여합니다. 여기에는 Elastic Beanstalk에서 작업자 환경의 대기열 활동을 모니터링할 수 있도록 하는 Amazon SQS 작업도 포함되어 있습니다.

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

이 정책은 Elastic Beanstalk에 관리형 플랫폼 업데이트를 수행하도록 사용자를 대신해 환경을 업데이트할 권한을 부여합니다.

서비스 수준 사용 권한 그룹화

이 정책은 제공된 권한에 따라 명령문으로 그룹화됩니다.

  • ElasticBeanstalkPermissions – 이 권한 그룹은 Elastic Beanstalk 서비스 작업(Elastic Beanstalk API)을 호출하는 데 사용됩니다.

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices – 이 권한 그룹을 사용하면 Elastic Beanstalk 및 AWS CloudFormation 같은 다른 다운스트림 서비스로 역할을 전달할 수 있습니다.

  • ReadOnlyPermissions – 이 권한 그룹은 실행 중인 환경 정보를 수집하는 데 사용됩니다.

  • *OperationPermissions – 이 이름 지정 패턴을 사용하는 그룹은 플랫폼 업데이트를 수행하기 위해 필요한 작업을 호출하는 데 사용됩니다.

  • *BroadOperationPermissions – 이 이름 지정 패턴을 사용하는 그룹은 플랫폼 업데이트를 수행하기 위해 필요한 작업을 호출하는 데 사용됩니다. 또한, 레거시 환경을 지원하기 위한 광범위한 권한도 포함합니다.

  • *TagResource – 이 이름 지정 패턴을 사용하는 그룹은 Tag-on-create API를 사용하여 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" ] } } } ] }

다음 접근 방식 중 하나를 사용하여 Elastic Beanstalk 환경을 생성할 수 있습니다. 각 섹션에서는 이 접근 방식이 서비스 역할을 처리하는 방법을 설명합니다.

Elastic Beanstalk 콘솔

Elastic Beanstalk 콘솔로 환경을 생성하는 경우 Elastic Beanstalk에서 이름이 aws-elasticbeanstalk-service-role인 서비스 역할을 만들 것을 요청하는 메시지가 Elastic Beanstalk에 표시됩니다. 이 역할이 Elastic Beanstalk를 통해 생성된 경우에는 Elastic Beanstalk가 서비스 역할을 맡도록 허용하는 신뢰 정책이 포함됩니다. 이 주제의 앞부분에서 설명한 두 개의 관리형 정책도 역할에 연결됩니다.

Elastic Beanstalk 명령줄 인터페이스(EB CLI)

Elastic Beanstalk 명령줄 인터페이스 (EB CLI)의 eb create 명령을 사용하여 환경을 만들 수 있습니다. --service-role 옵션을 통해 서비스 역할을 지정하지 않는 경우 Elastic Beanstalk는 동일한 기본 서비스 역할 aws-elasticbeanstalk-service-role을 생성합니다. 기본 서비스 역할이 이미 존재하는 경우 Elastic Beanstalk에서는 새 환경에 기본 서비스 역할을 사용합니다. 이 역할이 Elastic Beanstalk를 통해 생성된 경우에는 Elastic Beanstalk가 서비스 역할을 맡도록 허용하는 신뢰 정책이 포함됩니다. 이 주제의 앞부분에서 설명한 두 개의 관리형 정책도 역할에 연결됩니다.

Elastic Beanstalk API

Elastic Beanstalk API의 CreateEnvironment 작업을 사용하여 환경을 만들 수 있습니다. 서비스 역할을 지정하지 않으면 Elastic Beanstalk에서는 모니터링 서비스 연결 역할을 생성합니다. 서비스 연결 역할은 서비스에서 다른 AWS 서비스을(를) 자동으로 호출하기 위해 필요한 모든 권한을 포함하도록 Elastic Beanstalk에서 미리 정의한 고유한 서비스 역할 유형입니다. 서비스 연결 역할은 계정에 연결됩니다. Elastic Beanstalk에서는 이 역할을 한 번 생성한 다음 추가 환경을 생성할 때 다시 사용합니다. 또한, IAM을 사용하여 계정 모니터링 서비스 연결 역할을 미리 생성할 수도 있습니다. 계정에 모니터링 서비스 연결 역할이 있는 경우 Elastic Beanstalk 콘솔, Elastic Beanstalk API, 또는 EB CLI를 통해 환경을 생성하는 데 이 역할을 사용할 수 있습니다. Elastic Beanstalk 환경에서 서비스 연결 역할을 사용하는 방법에 대한 지침은 Elastic Beanstalk에 서비스 연결 역할 사용을 참조하세요.

서비스 역할에 대한 자세한 내용은 Elastic Beanstalk 서비스 역할 관리을 참조하세요.