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

例: Amazon S3 でログのローテーションを行う許可を Elastic Beanstalk に付与する

Elastic Beanstalk は、アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーします。Elastic Beanstalk には、この Amazon S3 バケットへのアクセス許可が必要です。ログをローテーションする許可を Elastic Beanstalk に付与するには、次のいずれかを実行します。

  • Elastic Beanstalk コンソールまたは eb を使用して、デフォルトのインスタンスプロファイルを作成します。

  • IAM のカスタムロールを使用して、Elastic Beanstalk に許可を付与するアクションポリシーをアタッチします。

このトピックでは、両方の方法を使用してログをローテーションする許可を Elastic Beanstalk に付与する手順を説明します。ここでは、ロールを作成して渡すのに必要な IAM 権限を持っていることを前提にしています。

デフォルトのインスタンスプロファイルの作成

アプリケーションを Elastic Beanstalk にデプロイするときに、Elastic Beanstalk は自動的にデフォルトのインスタンスプロファイルを作成することができます。Elastic Beanstalk は aws-elasticbeanstalk-ec2-role という名前でデフォルトのインスタンスプロファイルを作成し、Amazon S3 バケットポリシーを更新して、ログのローテーションを許可します。Elastic Beanstalk は、デフォルトのインスタンスプロファイルを作成する際に、アクションポリシーがアタッチされていない信頼ポリシーを作成します。アプリケーションで他の AWS リソースにアクセスする必要がある場合は、デフォルトのインスタンスプロファイルにアクションポリシーをアタッチできます。

Note

Elastic Beanstalk を使用してアプリケーションをデプロイする場合は、デフォルトプロファイルを作成する許可が必要です。詳細については、「IAM ユーザーに IAM ロールを作成および渡す許可を付与する」を参照してください。

アプリケーションをデプロイするときに、Elastic Beanstalk コンソール、eb、または AWS Toolkits を使用してデフォルトのインスタンスプロファイルを作成できます。手順については、次のいずれかを参照してください。

すでにアプリケーションが Elastic Beanstalk にデプロイされている場合は、環境を更新してデフォルトのインスタンスプロファイルを使用することもできます。手順については、「Elastic Beanstalk を使用して Amazon EC2 サーバーインスタンスを設定する」を参照してください。

カスタムインスタンスプロファイルの使用

IAM ロールの作成時、または既存の IAM ロールの使用時に、EC2 が信頼済みのエンティティである場合は、それを使用してアプリケーションを Elastic Beanstalk にデプロイできます。 ログのローテーションを有効にするには、ログをローテーションする許可を Elastic Beanstalk に付与するポリシーを IAM ロールにアタッチする必要があります。アプリケーションを Elastic Beanstalk にデプロイするときは、IAM ロールに関連付けられたインスタンスプロファイルを使用します。IAM コンソールを使用して IAM ロールを作成すると、インスタンスプロファイルの名前はロールと同じ名前になります。

Elastic Beanstalk に対してログをローテーションするためのカスタムアクションポリシーを作成するには

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

  2. 左ペインで、[Policies] をクリックします。

  3. [Create Policy] をクリックして、[Create Policy Wizard] を起動します。

  4. [Create Policy] ページで、[Create Your Own Policy] の横の [Select] をクリックします。

  5. [Review Policy] ページで、後でポリシーを識別するために役立つポリシー名を入力します。たとえば、「ElasticBeanstalkRotatesLogs」と入力します。

  6. [Policy Document] をクリックし、次のように入力します。

  7. {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::elasticbeanstalk-*/resources/environments/logs/*"
        }
      ]
    }

    Note

    ポリシーの例では、すべてのリージョンおよびアカウント ID について、Amazon S3 バケットへのアクセス権限を付与します。この例は、Elastic Beanstalk 用の Amazon S3 バケット名に置き換えることができます。Amazon S3 バケットの名前は、elasticbeanstalk–regionyour account ID になります。region には、Elastic Beanstalk 環境を起動したときのリージョンを指定します。

  8. (オプション)[Validate Policy] をクリックします。

  9. 準備ができたら、[Create Policy] をクリックします。

新しい IAM ロールを使用して、ログをローテーションする許可を Elastic Beanstalk に付与するには

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

  2. 左ペインで、[Roles] をクリックします。

  3. [Create New Role] をクリックして [Create Role Wizard] を起動します。

  4. [Set Role Name] ページで [Role Name] ボックスにロール名を入力します。[Next Step] をクリックします。

  5. 次の [Configure Role] ページで [Amazon EC2] の横の [Select] をクリックして、EC2 インスタンスが AWS サービスを自動的に呼び出せるようにします。

    [Select Role Type] ウィンドウ
  6. [Attach Policy] ページで [Custom Policy] をクリックします。

  7. 前に作成したポリシー名の横のチェックボックスをオンにします。[Next Step] をクリックします。

  8. [Review] ページで、入力した情報を確認し、[Create Role] をクリックします。

    IAM によって、ロールと、その IAM ロールに関連付けられたインスタンスプロファイルが作成されます。インスタンスプロファイルの名前は役割と同じです。このインスタンスプロファイルを使用すると、Amazon EC2 インスタンスで実行されているアプリケーションが、AWS API リクエストを行えるよう一時的なセキュリティ認証情報にアクセスできます。

  9. 次のいずれかの方法を使用して、アプリケーションを Elastic Beanstalk にデプロイし、プロンプトが表示されたら、作成したインスタンスプロファイルを選択します。

    すでにアプリケーションが Elastic Beanstalk にデプロイされている場合は、環境を更新してデフォルトのインスタンスプロファイルを使用することもできます。手順については、「Elastic Beanstalk を使用して Amazon EC2 サーバーインスタンスを設定する」を参照してください。

既存の IAM ロールを使用して、ログをローテーションする許可を Elastic Beanstalk に付与するには

  1. IAM ロールが作成済みで、Amazon EC2 が信頼済みのエンティティであることを確認してください。https://console.aws.amazon.com/iam/ で IAM マネジメントコンソールを使用すると、信頼済みのエンティティを確認できます。ロールの一覧から IAM の [Role Name] をクリックします。[Trust Relationships] で信頼済みエンティティとして [ec2.amazonaws.com] が表示されない場合は、信頼ポリシーを更新する必要があります。信頼ポリシーを更新するには、次を実行します。

    1. [Trust Relationship] の [Edit Trust Relationship] をクリックします。

    2. 次のスニペットのように、信頼ポリシーを更新して ec2.amazonaws.com を含めます。

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Sid": "",
            "Effect": "Allow",
            "Principal": {
              "Service": [
                "ec2.amazonaws.com"
              ]
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
    3. [Update Trust Policy] をクリックします。

  2. ログをローテーションする許可を Elastic Beanstalk に付与する IAM ロールにアクションポリシーをアタッチします。適切なアクセス権限を使って既にポリシーを作成していない場合、「Elastic Beanstalk がログをローテーションするためのカスタムポリシーを作成するには」の手順に従います。

    1. IAM マネジメントコンソールのナビゲーションペインで、[Roles] をクリックします。[Roles] ページで、IAM の [Role Name] をクリックします。

    2. ロールの一覧で、アクションポリシーをアタッチする IAM の [Role Name] をクリックします。

    3. [Permissions] で、[Attach Policy] をクリックします。

    4. 前に作成したポリシーの名前の横にあるチェックボックスをオンにし、[Attach Policy] をクリックします。

    ポリシー管理の詳細については、「Using AWS Identity and Access Management」の「Managing IAM Policies」を参照してください。

  3. 次のいずれかの方法を使用して、アプリケーションを Elastic Beanstalk にデプロイし、プロンプトが表示されたら、インスタンスプロファイルを選択します。

    すでにアプリケーションが Elastic Beanstalk にデプロイされている場合は、環境を更新してデフォルトのインスタンスプロファイルを使用することもできます。手順については、「Elastic Beanstalk を使用して Amazon EC2 サーバーインスタンスを設定する」を参照してください。