The managed-updates service-linked role - AWS Elastic Beanstalk

The managed-updates service-linked role

AWS Elastic Beanstalk は、AWS Identity and Access Management (IAM)サービスにリンクされたロールを使用します。サービスにリンクされたロールは、Elastic Beanstalk に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、Elastic Beanstalk による事前定義済みのロールであり、ユーザーに代わってサービスから AWS の他のサービスを呼び出すために必要なすべてのアクセス権限を備えています。

サービスにリンクされたロールを使用すると、必要なアクセス許可を手動で追加する必要がなくなるため、Elastic Beanstalk の設定が簡単になります。Elastic Beanstalk はこのサービスにリンクされたロールのアクセス許可を定義し、特に定義されている場合を除き、Elastic Beanstalk のみがそのロールを引き受けます。定義されるアクセス許可には、信頼ポリシーやアクセス許可ポリシーなどがあり、そのアクセス許可ポリシーをその他の IAM エンティティにアタッチすることはできません。

サービスにリンクされたロールを削除するには、まずその関連リソースを削除します。これにより、リソースへの意図しないアクセスによるアクセス許可の削除が防止され、Elastic Beanstalk リソースは保護されます。

サービスにリンクされたロールをサポートする他のサービスについては、「IAM と連携する AWS サービス」を参照の上、「サービスにリンクされたロール」列が「はい」になっているサービスを検索してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。

Elastic Beanstalk のサービスにリンクされたロールのアクセス許可

Elastic Beanstalk では、サービスにリンクされたロールとして AWSServiceRoleForElasticBeanstalkManagedUpdates – Allows Elastic Beanstalk to perform scheduled platform updates of your running environments を使用します。

AWSServiceRoleForElasticBeanstalkManagedUpdates サービスにリンクされたロールは、ロールを引き受ける上で次のサービスを信頼します。

  • managedupdates.elasticbeanstalk.amazonaws.com

サービスにリンクされたロール AWSServiceRoleForElasticBeanstalkManagedUpdates のアクセス許可ポリシーには、お客様の代わりに Elastic Beanstalk がアクションを実行する上で必要なアクセス許可がすべて含まれています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPassRoleToElasticBeanstalkAndDownstreamServices", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": [ "elasticbeanstalk.amazonaws.com", "ec2.amazonaws.com", "autoscaling.amazonaws.com", "elasticloadbalancing.amazonaws.com", "ecs.amazonaws.com", "cloudformation.amazonaws.com" ] } } }, { "Sid": "SingleInstanceAPIs", "Effect": "Allow", "Action": [ "ec2:releaseAddress", "ec2:allocateAddress", "ec2:DisassociateAddress", "ec2:AssociateAddress" ], "Resource": "*" }, { "Sid": "ECS", "Effect": "Allow", "Action": [ "ecs:RegisterTaskDefinition", "ecs:DeRegisterTaskDefinition", "ecs:List*", "ecs:Describe*" ], "Resource": "*" }, { "Sid": "ElasticBeanstalkAPIs", "Effect": "Allow", "Action": [ "elasticbeanstalk:*" ], "Resource": "*" }, { "Sid": "ReadOnlyAPIs", "Effect": "Allow", "Action": [ "cloudformation:Describe*", "cloudformation:List*", "ec2:Describe*", "autoscaling:Describe*", "elasticloadbalancing:Describe*" ], "Resource": "*" }, { "Sid": "ASG", "Effect": "Allow", "Action": [ "autoscaling:AttachInstances", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteLaunchConfiguration", "autoscaling:DeleteScheduledAction", "autoscaling:DetachInstances", "autoscaling:PutNotificationConfiguration", "autoscaling:PutScalingPolicy", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:ResumeProcesses", "autoscaling:SuspendProcesses", "autoscaling:TerminateInstanceInAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": [ "arn:aws:autoscaling:*:*:launchConfiguration:*:launchConfigurationName/awseb-e-*", "arn:aws:autoscaling:*:*:autoScalingGroup:*:autoScalingGroupName/awseb-e-*" ] }, { "Sid": "CFN", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:GetTemplate", "cloudformation:UpdateStack" ], "Resource": "arn:aws:cloudformation:*:*:stack/awseb-e-*" }, { "Sid": "EC2", "Effect": "Allow", "Action": [ "ec2:TerminateInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-id": "arn:aws:cloudformation:*:*:stack/awseb-e-*" } } }, { "Sid": "S3Obj", "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": "S3Bucket", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetBucketPolicy", "s3:ListBucket", "s3:PutBucketPolicy" ], "Resource": "arn:aws:s3:::elasticbeanstalk-*" }, { "Sid": "CWL", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DeleteLogGroup", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk/*" }, { "Sid": "ELB", "Effect": "Allow", "Action": [ "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:DeRegisterTargets", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:RegisterInstancesWithLoadBalancer" ], "Resource": [ "arn:aws:elasticloadbalancing:*:*:targetgroup/awseb-*", "arn:aws:elasticloadbalancing:*:*:loadbalancer/awseb-e-*" ] } ] }

IAM エンティティ (ユーザー、グループ、ロールなど) がサービスにリンクされたロールを作成、編集、削除できるようにするには、アクセス権限を設定する必要があります。詳細については、IAM ユーザーガイド の「サービスにリンクされたロールのアクセス許可」を参照してください。

または、AWS 管理ポリシーを使用して、Elastic Beanstalk にフルアクセスを付与することもできます。

Elastic Beanstalk のサービスにリンクされたロールの作成

サービスにリンクされたロールを手動で作成する必要はありません。サービスにリンクされたロールは、create an Elastic Beanstalk environment using the Elastic Beanstalk API, enable managed updates, and specify AWSServiceRoleForElasticBeanstalkManagedUpdates as the value for the ServiceRoleForManagedUpdates option of the aws:elasticbeanstalk:managedactions namespace すると Elastic Beanstalk で自動的に作成されます。

環境を作成する際に、Elastic Beanstalk でサービスにリンクされたロール AWSServiceRoleForElasticBeanstalkManagedUpdates をアカウントに作成する場合は、iam:CreateServiceLinkedRole アクセス許可が必要です。このアクセス許可がない場合、環境の作成は失敗し、問題を説明するメッセージが表示されます。

別の方法として、サービスにリンクされたロールを作成する権限を持つ別のユーザーが IAM を使用して、サービスにリンクされたロールを事前に作成できます。この場合は、iam:CreateServiceLinkedRole アクセス許可がなくても、環境を作成できます。

お客様 (または別のユーザー) は、IAM コンソールを使用して、[Elastic Beanstalk Managed Updates] ユースケースでサービスにリンクされたロールを作成できます。IAM CLI または IAM API で、サービスにリンクされたロールをサービス名 managedupdates.elasticbeanstalk.amazonaws.com で作成します。詳細については、『IAM ユーザーガイド』の「サービスにリンクされたロールの作成」を参照してください。このサービスにリンクされたロールを削除する場合、この同じプロセスを使用して、もう一度ロールを作成できます。

このサービスにリンクされたロールを削除した後で再度作成する必要が生じた場合は、同じ方法でアカウントにロールを再作成できます。サービスにリンクされたロールは、create an Elastic Beanstalk environment using the Elastic Beanstalk API, enable managed updates, and specify AWSServiceRoleForElasticBeanstalkManagedUpdates as the value for the ServiceRoleForManagedUpdates option of the aws:elasticbeanstalk:managedactions namespace すると Elastic Beanstalk で再度自動的に作成されます。

Elastic Beanstalk のサービスにリンクされたロールの編集

Elastic Beanstalk では、AWSServiceRoleForElasticBeanstalkManagedUpdates サービスにリンクされたロールを編集することはできません。サービスにリンクされたロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、IAM を使用したロールの説明の編集はできます。詳細については、IAM ユーザーガイド の「サービスにリンクされたロールの編集」を参照してください。

Elastic Beanstalk のサービスにリンクされたロールの削除

サービスにリンクされたロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。ただし、手動で削除する前に、サービスにリンクされたロールのリソースをクリーンアップする必要があります。

サービスにリンクされたロールのクリーンアップ

サービスにリンクされた役割を IAM で削除する前に、マネージド更新が有効になっている Elastic Beanstalk 環境が終了しているか、別のサービスロールを使用していることを確認する必要があります。

注記

環境を終了しようとしたときに、サービスにリンクされたロールを Elastic Beanstalk が使用していると、終了は失敗する可能性があります。失敗した場合は、数分待ってから再度試してください。

AWSServiceRoleForElasticBeanstalkManagedUpdates を使用している Elastic Beanstalk 環境を終了するには (コンソール)

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. [アクション]、[環境の終了] の順に選択します。

  4. 画面上のダイアログボックスを使用して、環境の終了を確認します。

EB CLI を使用して Elastic Beanstalk 環境を終了する方法については、「eb terminate」を参照してください。

API を使用して Elastic Beanstalk 環境を終了する方法の詳細については、「環境の終了」を参照してください。

サービスにリンクされたロールを手動で削除する

IAM コンソール、IAM CLI、または IAM API を使用して、サービスにリンクされたロール AWSServiceRoleForElasticBeanstalkManagedUpdates を削除します。詳細については、『IAM ユーザーガイド』の「サービスにリンクされたロールの削除」を参照してください。

Elastic Beanstalk サービスにリンクされたロールをサポートするリージョン

Elastic Beanstalk は、サービスを利用できるすべてのリージョンで、サービスにリンクされたロールの使用をサポートします。詳細については、「AWS Elastic Beanstalk Endpoints and Quotas」を参照してください。