Peran layanan Elastic Beanstalk - AWS Elastic Beanstalk

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Peran layanan Elastic Beanstalk

Peran layanan adalah IAM role yang diasumsikan Elastic Beanstalk saat memanggil layanan lain atas nama Anda. Misalnya, Elastic Beanstalk menggunakan peran layanan saat memanggil Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing, dan API Amazon EC2 Auto Scaling guna mengumpulkan informasi. Peran layanan yang digunakan Elastic Beanstalk adalah peran yang Anda tentukan saat Anda membuat lingkungan Elastic Beanstalk.

Ada dua kebijakan terkelola yang melekat pada peran layanan. Kebijakan ini memberikan izin yang memungkinkan Elastic Beanstalk mengakses AWS sumber daya yang diperlukan untuk membuat dan mengelola lingkungan Anda. Satu kebijakan terkelola memberikan izin untuk pemantauan kesehatan yang disempurnakan dan dukungan Amazon SQS tingkat pekerja, dan satu lagi memberikan izin tambahan yang diperlukan untuk pembaruan platform terkelola.

Kebijakan ini memberikan semua izin yang diperlukan Elastic Beanstalk untuk memantau kesehatan lingkungan. Hal ini juga mengatur soal tindakan Amazon SQS untuk mengizinkan Elastic Beanstalk memantau aktivitas antrean lingkungan pekerja.

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

Kebijakan ini memberikan izin untuk Elastic Beanstalk untuk memperbarui lingkungan atas nama Anda untuk melakukan pembaruan platform yang terkelola.

Pengelompokan izin tingkat layanan

Kebijakan ini dikelompokkan ke dalam pernyataan berdasarkan kumpulan izin yang diberikan.

  • ElasticBeanstalkPermissions – Kelompok izin ini adalah untuk memanggil tindakan layanan Elastic Beanstalk (API Elastic Beanstalk).

  • AllowPassRoleToElasticBeanstalkAndDownstreamServices – Kelompok izin ini mengizinkan peran apa pun untuk diteruskan ke Elastic Beanstalk dan ke layanan hilir lainnya seperti AWS CloudFormation.

  • ReadOnlyPermissions – Kelompok izin ini adalah untuk mengumpulkan informasi tentang lingkungan berjalan.

  • *OperationPermissions – Grup dengan pola penamaan ini adalah untuk memanggil operasi yang diperlukan untuk melakukan pembaruan platform.

  • *BroadOperationPermissions – Grup dengan pola penamaan ini adalah untuk memanggil operasi yang diperlukan untuk melakukan pembaruan platform. Mereka juga menyertakan izin yang luas untuk mendukung lingkungan lama.

  • *TagResource- Grup dengan pola penamaan ini adalah untuk panggilan yang menggunakan tag-on-create API untuk melampirkan tag pada sumber daya yang sedang dibuat di lingkungan 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" ] } } } ] }

Anda dapat membuat lingkungan Elastic Beanstalk dengan salah satu pendekatan berikut. Setiap bagian menjelaskan bagaimana pendekatan menangani peran layanan.

Konsol Elastic Beanstalk

Jika Anda membuat lingkungan menggunakan konsol Elastic Beanstalk, Elastic Beanstalk meminta Anda untuk membuat peran layanan yang diberi nama. aws-elasticbeanstalk-service-role Saat dibuat melalui Elastic Beanstalk, peran ini mencakup kebijakan kepercayaan yang memungkinkan Elastic Beanstalk untuk mengambil peran layanan. Dua kebijakan terkelola yang dijelaskan sebelumnya dalam topik ini juga melekat pada peran tersebut.

Elastic Beanstalk Command Line Interface (EB CLI)

Anda dapat membuat lingkungan menggunakan eb create perintah Elastic Beanstalk Command Line Interface (EB CLI). Jika Anda tidak menentukan peran layanan melalui --service-role opsi. Elastic Beanstalk menciptakan peran layanan default yang sama. aws-elasticbeanstalk-service-role Jika peran layanan default sudah ada, Elastic Beanstalk menggunakannya untuk lingkungan baru. Saat dibuat melalui Elastic Beanstalk, peran ini mencakup kebijakan kepercayaan yang memungkinkan Elastic Beanstalk untuk mengambil peran layanan. Dua kebijakan terkelola yang dijelaskan sebelumnya dalam topik ini juga melekat pada peran tersebut.

API Elastic Beanstalk

Anda dapat membuat lingkungan menggunakan CreateEnvironment aksi API Elastic Beanstalk. Jika Anda tidak menentukan peran layanan, Elastic Beanstalk membuat peran terkait layanan pemantauan. Peran tersebut merupakan jenis peran layanan unik yang ditentukan sebelumnya oleh Elastic Beanstalk untuk menyertakan semua izin yang diperlukan layanan untuk memanggil orang lain atas nama Anda. Layanan AWS Peran terkait layanan berkaitan dengan akun Anda. Elastic Beanstalk menciptakannya sekali, dan kemudian menggunakannya kembali saat menciptakan lingkungan tambahan. Anda juga dapat menggunakan IAM untuk membuat peran terkait layanan pemantauan untuk akun Anda terlebih dahulu. Bila akun Anda memiliki peran terkait layanan pemantauan, Anda dapat menggunakannya untuk membuat lingkungan menggunakan konsol Elastic Beanstalk, API Elastic Beanstalk, atau EB CLI. Untuk petunjuk tentang cara menggunakan peran terkait layanan dengan lingkungan Elastic Beanstalk, lihat. Menggunakan peran yang terhubung dengan layanan untuk Elastic Beanstalk

Untuk informasi selengkapnya tentang peran layanan, lihat Mengelola peran layanan Elastic Beanstalk.