Elastic Load Balancing
クラシックロードバランサー

Classic Load Balancer のアクセスログの有効化

ロードバランサーのアクセスログを有効にするには、ロードバランサーがログを格納する Amazon S3 バケットの名前を指定する必要があります。また、バケットに書き込むための Elastic Load Balancing アクセス権限を付与するバケットポリシーをこのバケットにアタッチする必要があります。

重要

バケットとロードバランサーは同じリージョンに存在する必要があります。バケットは、ロードバランサーを所有するアカウントとは別のアカウントが所有するものでもかまいません。

ステップ 1: S3 バケットを作成する

S3 バケットは、Amazon S3 コンソールを使用して作成できます。バケットがすでにあり、それをアクセスログの保管に使用する場合は、このステップをスキップして「ステップ 2: S3 バケットにポリシーをアタッチする」に進み、バケットにログを書き込むためのアクセス権限を Elastic Load Balancing に付与します。

ヒント

コンソールを使用してアクセスログを有効にする場合は、このステップをスキップし、必要なアクセス権限を持つバケットを Elastic Load Balancing に代わりに作成させることができます。AWS CLI を使用してアクセスログを有効にする場合は、バケットを作成し、必要なアクセス権限を付与する必要があります。

Amazon S3 バケットを作成するには

  1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。

  2. [Create Bucket] を選択します。

  3. [Create a Bucket] ページで、次の操作を実行します。

    1. [Bucket Name] に、バケットの名前 (例: my-loadbalancer-logs) を入力します。この名前は、Amazon S3 にある既存のすべてのバケット名と異なる必要があります。 リージョンによっては、バケット名にその他の制限があることがあります。詳細は、Amazon Simple Storage Service 開発者ガイドの「Bucket Restrictions and Limitations」を参照してください。

    2. [Region] で、ロードバランサーを作成したリージョンを選択します。

    3. [Create] を選択します。

ステップ 2: S3 バケットにポリシーをアタッチする

S3 バケットを作成または指定した後は、バケットにポリシーをアタッチする必要があります。バケットポリシーは、バケットのアクセス許可を定義するためにアクセスポリシー言語で記述された JSON ステートメントのコレクションです。各ステートメントには 1 つのアクセス許可に関する情報が含まれ、一連のエレメントが使用されます。

バケットにポリシーがすでにアタッチされている場合、Elastic Load Balancing アクセスログのステートメントをポリシーに追加できます。この場合、結果として作成されるアクセス権限のセットが、アクセスログのバケットへのアクセスを必要とするユーザーに対して適切であることを確認するために、このセットを評価することをお勧めします。

ヒント

コンソールを使用してアクセスログを有効にする場合は、このステップをスキップし、必要なアクセス権限を持つバケットを Elastic Load Balancing に代わりに作成させることができます。

バケットにポリシーステートメントをアタッチするには

  1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。

  2. バケットを選択し、[Permissions] を選択します。

  3. [バケットポリシー] を選択します。バケットにポリシーがすでにアタッチされている場合、 必要なステートメントを既存のポリシーに追加できます。

  4. [Policy generator] を選択します。[AWS Policy Generator] ページで、次の操作を実行します。

    1. [Select Type of Policy] で、[S3 Bucket Policy] を選択します。

    2. [Effect] で [Allow] を選択して S3 バケットへのアクセスを許可します。

    3. [Principal] で、Elastic Load Balancing で S3 バケットへの Elastic Load Balancing アクセスを許可するアカウント ID を入力します。ロードバランサーとバケットのリージョンに対応するアカウント ID を使用します。

      サービス対象 リージョン名 Elastic Load Balancing アカウント ID
      us-east-1 米国東部(バージニア北部) 127311923021
      us-east-2 米国東部 (オハイオ) 033677994240
      us-west-1 米国西部 (北カリフォルニア) 027434742980
      us-west-2 米国西部 (オレゴン) 797873946194
      ca-central-1 カナダ (中部) 985666609251
      eu-central-1 欧州 (フランクフルト) 054676820928
      eu-west-1 欧州 (アイルランド) 156460612806
      eu-west-2 欧州 (ロンドン) 652711504416
      eu-west-3 EU (パリ) 009996457667
      ap-northeast-1 アジアパシフィック (東京) 582318560864
      ap-northeast-2 アジアパシフィック (ソウル) 600734575887
      ap-northeast-3 アジアパシフィック (大阪: ローカル) 383597477331
      ap-southeast-1 アジアパシフィック (シンガポール) 114774131450
      ap-southeast-2 アジアパシフィック (シドニー) 783225319266
      ap-south-1 アジアパシフィック (ムンバイ) 718504428378
      sa-east-1 南米 (サンパウロ) 507241528517
      us-gov-west-1* AWS GovCloud (米国) 048591011584
      cn-north-1** 中国 (北京) 638102146993
      cn-northwest-1** 中国 (寧夏) 037604701340

      * このリージョンには個別のアカウントが必要です。詳細については、「AWS GovCloud (米国)」を参照してください。

      ** このリージョンには個別のアカウントが必要です。詳細については、「中国 (北京)」を参照してください。

    4. [Actions] で [PutObject] を選択し、Elastic Load Balancing が S3 バケットにオブジェクトを格納するのを許可します。

    5. [Amazon Resource Name (ARN)] に、S3 バケットの ARN を次の形式で入力します。

      arn:aws:s3:::bucket/prefix/AWSLogs/aws-account-id/*

      ロードバランサーを所有する AWS アカウントの ID を指定する必要がありますが、ハイフンは含めません。(例:

      arn:aws:s3:::my-loadbalancer-logs/my-app/AWSLogs/123456789012/*

      us-gov-west-1 リージョンを使用している場合は、arn:aws: ではなく arn:aws-us-gov: の ARN 形式を使用することに注意してください。

    6. [Add Statement]、[Generate Policy] を選択します。ポリシードキュメントは次の例のようになります。

      { "Id": "Policy1429136655940", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1429136633762", "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::my-loadbalancer-logs/my-app/AWSLogs/123456789012/*", "Principal": { "AWS": [ "797873946194" ] } } ] }
    7. 新しいバケットポリシーを作成する場合は、ポリシードキュメント全体をコピーし、[Close] を選択します。

      既存のバケットポリシーを編集する場合は、ポリシードキュメントから新しいステートメント (Statement 要素の [ と ] の間のテキスト) をコピーし、[Close] を選択します。

  5. Amazon S3 コンソールに戻り、必要に応じてポリシーをテキストエリアに貼り付けます。

  6. [Save] を選択します。

ステップ 3: アクセスログを有効にする

AWS マネジメントコンソール または AWS CLI を使用して、アクセスログを有効にできます。コンソールを使用してアクセスログを有効にするときは、ロードバランサーがバケットに書き込むために必要なアクセス権限を指定したバケットを、Elastic Load Balancing に代わりに作成させることができます。

次の例を使用して、S3 バケットのログを 60 分ごと (デフォルトの間隔) に収集して配信します。

コンソールを使用したロードバランサーのアクセスログの有効化

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [LOAD BALANCING] で [Load Balancers] を選択します。

  3. ロードバランサーを選択します。

  4. [説明] タブで、[アクセスログの設定] を選択します。

  5. [Configure Access Logs] ページで以下の操作を実行します。

    1. [Enable access logs] を選択します。

    2. [Interval] はデフォルト (60 minutes) のままにします。

    3. [S3 location] に、プレフィックスを含めて S3 バケットの名前を入力します (たとえば my-loadbalancer-logs/my-app)。既存のバケットの名前や新しいバケットの名前を指定できます。

    4. (オプション) バケットが存在しない場合は、[Create this location for me] を選択します。Amazon S3 内のすべての既存のバケット名全体で一意な名前を指定し、DNS 命名規則に従う必要があります。詳細については、Amazon Simple Storage Service 開発者ガイドの「バケット命名規則」を参照してください。

    5. [Save] を選択します。

AWS CLI を使用してロードバランサーのアクセスログを有効にするには

まず、Elastic Load Balancing が 60 分ごとにログを収集し、ログ用に作成した S3 バケットに配信できるようにする .json ファイルを作成します。

{ "AccessLog": { "Enabled": true, "S3BucketName": "my-loadbalancer-logs", "EmitInterval": 60, "S3BucketPrefix": "my-app" } }

アクセスログを有効にするには、次のように、modify-load-balancer-attributes コマンドでこの .json ファイルを指定します。

aws elb modify-load-balancer-attributes --load-balancer-name my-loadbalancer --load-balancer-attributes file://my-json-file.json

以下に、応答の例を示します。

{ "LoadBalancerAttributes": { "AccessLog": { "Enabled": true, "EmitInterval": 60, "S3BucketName": "my-loadbalancer-logs", "S3BucketPrefix": "my-app" } }, "LoadBalancerName": "my-loadbalancer" }

ステップ 4: ロードバランサーにより S3 バケットにテストファイルが作成されたことを確認する

ロードバランサーのアクセスログを有効にすると、Elastic Load Balancing が S3 バケットを検証し、テストファイルを作成します。S3 コンソールを使用して、テストファイルが作成されたことを確認できます。

Elastic Load Balancing により S3 バケットにテストファイルが作成されたことを確認するには

  1. https://console.aws.amazon.com/s3/ にある Amazon S3 コンソールを開きます。

  2. S3 バケットを選択します。

  3. テストログファイルがある場所に移動します。パスは次のようになります。

    my-bucket/prefix/AWSLogs/123456789012/ELBAccessLogTestFile

アクセスログの S3 バケットを管理するには

アクセスログを有効にしたら、アクセスログを有効にしたバケットを削除する前に、必ずアクセスログを無効にします。そうしないと、同じ名前を持ち、所有していない AWS アカウントで必要なバケットポリシーが作成された新しいバケットがある場合、Elastic Load Balancing はロードバランサーのアクセスログをその新しいバケットに書き込む可能性があります。