メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

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

AWS Elastic Beanstalk では、AWS Identity and Access Management (IAM) の「サービスにリンクされたロール」を使用できます。サービスにリンクされたロールは、Elastic Beanstalk に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、Elastic Beanstalk によって事前定義されており、お客様の代わりにサービスから他の AWS サービスを呼び出す必要のあるアクセス権限がすべて含まれています。Elastic Beanstalk では、環境作成時にサービスにリンクされたロールを使用し、環境用のサービスロールを明示的に指定しません。

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

ロールを削除するには、まず関連リソースを削除します。これにより、不注意でリソースにアクセスするアクセス許可の削除が防止され、Elastic Beanstalk リソースは保護されます。

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

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

Elastic Beanstalk では、サービスにリンクされたロール AWSServiceRoleForElasticBeanstalk. Elastic Beanstalk uses this service-linked role to call other AWS services on your behalf. を使用します。

AWSServiceRoleForElasticBeanstalk サービスにリンクされたロールは、ロールを引き受ける上で elasticbeanstalk.amazonaws.com サービスを信頼します。

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPassRoleToElasticBeanstalk", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": "elasticbeanstalk.amazonaws.com" } } }, { "Sid": "AllowCloudformationOperationsOnElasticBeanstalkStacks", "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/awseb-*", "arn:aws:cloudformation:*:*:stack/eb-*" ] }, { "Sid": "AllowDeleteCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DeleteLogGroup" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk*" ] }, { "Sid": "AllowS3OperationsOnElasticBeanstalkBuckets", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-*", "arn:aws:s3:::elasticbeanstalk-*/*" ] }, { "Sid": "AllowOperations", "Effect": "Allow", "Action": [ "autoscaling:AttachInstances", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:DeleteLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteScheduledAction", "autoscaling:DescribeAccountLimits", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeLoadBalancers", "autoscaling:DescribeNotificationConfigurations", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeScheduledActions", "autoscaling:DetachInstances", "autoscaling:PutScheduledUpdateGroupAction", "autoscaling:ResumeProcesses", "autoscaling:SetDesiredCapacity", "autoscaling:SuspendProcesses", "autoscaling:TerminateInstanceInAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "cloudwatch:PutMetricAlarm", "ec2:AssociateAddress", "ec2:AllocateAddress", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2:DeleteSecurityGroup", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeImages", "ec2:DescribeInstances", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DisassociateAddress", "ec2:ReleaseAddress", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:TerminateInstances", "ecs:CreateCluster", "ecs:DeleteCluster", "ecs:DescribeClusters", "ecs:RegisterTaskDefinition", "elasticbeanstalk:*", "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer", "elasticloadbalancing:ConfigureHealthCheck", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:DescribeTargetGroups", "elasticloadbalancing:RegisterTargets", "elasticloadbalancing:DeregisterTargets", "iam:ListRoles", "logs:CreateLogGroup", "logs:PutRetentionPolicy", "rds:DescribeDBInstances", "rds:DescribeOrderableDBInstanceOptions", "rds:DescribeDBEngineVersions", "sns:ListTopics", "sns:GetTopicAttributes", "sns:ListSubscriptionsByTopic", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild" ], "Resource": [ "*" ] } ] }

IAM エンティティ (ユーザー、グループ、ロールなど) がサービスにリンクされたロールを作成、編集、削除できるようにするには、アクセス権限を設定する必要があります。

IAM エンティティが AWSServiceRoleForElasticBeanstalk サービスにリンクされたロールを作成することを許可するには

サービスにリンクされたロールを作成する必要のある IAM エンティティのアクセス権限ポリシーに、次のステートメントを追加します。

{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/AWSServiceRoleForElasticBeanstalk*", "Condition": {"StringLike": {"iam:AWSServiceName": "elasticbeanstalk.amazonaws.com"}} }

IAM エンティティが AWSServiceRoleForElasticBeanstalk サービスにリンクされたロールの説明を編集することを許可するには

サービスにリンクされたロールの説明を編集する必要のある IAM エンティティのアクセス許可ポリシーに次のステートメントを追加します。

{ "Effect": "Allow", "Action": [ "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/AWSServiceRoleForElasticBeanstalk*", "Condition": {"StringLike": {"iam:AWSServiceName": "elasticbeanstalk.amazonaws.com"}} }

IAM エンティティが AWSServiceRoleForElasticBeanstalk サービスにリンクされたロールを削除することを許可するには

サービスにリンクされたロールを削除する必要のある IAM エンティティのアクセス権限ポリシーに、次のステートメントを追加します。

{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::*:role/aws-service-role/elasticbeanstalk.amazonaws.com/AWSServiceRoleForElasticBeanstalk*", "Condition": {"StringLike": {"iam:AWSServiceName": "elasticbeanstalk.amazonaws.com"}} }

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

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

AWSServiceRoleForElasticBeanstalk ロールを手動で作成する必要はありません。create an Elastic Beanstalk environment using the Elastic Beanstalk API and don't specify a service role を実行すると、Elastic Beanstalk はサービスにリンクされたロールをユーザーに作成します。

IAM コンソール、AWS CLI、または IAM API で、[Elastic Beanstalk] ユースケースを使用してサービスにリンクされたロールを作成することもできます。詳細については、『IAM ユーザーガイド』の「サービスにリンクされたロールの作成」を参照してください。

重要

September 27, 2017 以前に Elastic Beanstalk サービスを使用していた場合は、サービスにリンクされたロールのサポートを開始すると、Elastic Beanstalk によって、AWSServiceRoleForElasticBeanstalk ロールがアカウントに作成されます。詳細については、「IAM アカウントに新しいロールが表示される」を参照してください。

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

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

サービスにリンクされたロールの説明の編集 (IAM コンソール)

サービスにリンクされたロールの説明は、IAM コンソールを使用して編集できます。

サービスにリンクされたロールの説明を編集するには (コンソール)

  1. IAM コンソールの [Navigation] ペインで [Roles] を選択します。

  2. 変更するロールの名前を選択します。

  3. [Role description] の右端にある [Edit] を選択します。

  4. ボックスに新しい説明を入力し、[Save] を選択します。

サービスにリンクされたロールの説明の編集 (IAM CLI)

サービスにリンクされたロールの説明は、AWS Command Line Interface から IAM コマンドを使用して編集できます。

サービスにリンクされたロールの説明を変更するには (CLI)

  1. (オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。

    $ aws iam get-role --role-name role-name

    CLI コマンドでは、ARN ではなくロール名を使用してロールを参照します。たとえば、ロールの ARN が arn:aws:iam::123456789012:role/myrole である場合、そのロールを myrole と呼びます。

  2. サービスにリンクされたロールの説明を更新するには、次のいずれかのコマンドを使用します。

    $ aws iam update-role-description --role-name role-name --description description

サービスにリンクされたロールの説明の編集 (IAM API)

サービスにリンクされたロールの説明は、IAM API を使用して編集できます。

サービスにリンクされたロールの説明を変更するには (API)

  1. (オプション) ロールの現在の説明を表示するには、次のコマンドを使用します。

    IAM API: GetRole

  2. ロールの説明を更新するには、次のコマンドを使用します。

    IAM API: UpdateRoleDescription

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

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

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

IAM を使用してサービスにリンクされたロールを削除するには、まずそのロールにアクティブなセッションがないことを確認し、そのロールで使用されているリソースをすべて削除する必要があります。

サービスにリンクされたロールが IAM コンソールでアクティブなセッションを持っているかどうかを確認するには

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

  2. IAM コンソールの [Navigation] ペインで [Roles] を選択します。次に、AWSServiceRoleForElasticBeanstalk ロールの名前 (チェックボックスではありません) を選択します。

  3. 選択したロールの [Summary] ページで、[Access Advisor] タブを選択します。

  4. [Access Advisor] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。

    注記

    Elastic Beanstalk が AWSServiceRoleForElasticBeanstalk ロールを使用しているかどうかが不明な場合は、このロールの削除を試みることができます。サービスがロールを使用している場合、削除は失敗し、ロールが使用されているリージョンを表示できます。ロールが使用されている場合は、ロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。

AWSServiceRoleForElasticBeanstalk ロールを使用している Elastic Beanstalk 環境が分かったら、その環境を終了して、ロールを削除することができます。

Elastic Beanstalk 環境を終了するには (コンソール)

  1. Elastic Beanstalk コンソールを開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Actions] を選択してから、[Terminate Environment] を選択します。

  4. [Confirm Termination] ダイアログボックスに環境名を入力し、[Terminate] を選択します。

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

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

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

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