AWS Elastic Beanstalk
開発者ガイド

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": "AllowCloudformationReadOperationsOnElasticBeanstalkStacks", "Effect": "Allow", "Action": [ "cloudformation:DescribeStackResource", "cloudformation:DescribeStackResources", "cloudformation:DescribeStacks" ], "Resource": [ "arn:aws:cloudformation:*:*:stack/awseb-*", "arn:aws:cloudformation:*:*:stack/eb-*" ] }, { "Sid": "AllowOperations", "Effect": "Allow", "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeNotificationConfigurations", "autoscaling:DescribeScalingActivities", "autoscaling:PutNotificationConfiguration", "ec2:DescribeInstanceStatus", "ec2:AssociateAddress", "ec2:DescribeAddresses", "ec2:DescribeInstances", "ec2:DescribeSecurityGroups", "elasticloadbalancing:DescribeInstanceHealth", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeTargetHealth", "elasticloadbalancing:DescribeTargetGroups", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "sns:Publish" ], "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. ボックスに新しい説明を入力し、[保存] を選択します。

サービスにリンクされたロールの説明の編集 (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. [アクション] を選択してから、[環境の終了] を選択します。

  4. [削除の確認] ダイアログボックスに環境名を入力し、[削除] を選択します。

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

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

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

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

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

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