Application Load Balancer のアクセスログを有効にする - Elastic Load Balancing

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Application Load Balancer のアクセスログを有効にする

ロードバランサーのアクセスログを有効にする場合は、ロードバランサーがログを保存する S3 バケットの名前を指定する必要があります。このバケットは、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与するバケットポリシーが必要です。

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

アクセスログを有効にするときは、アクセスログの S3 バケットを指定する必要があります。既存のバケットを使用するか、アクセスログ専用のバケットを作成できます。バケットは、次の要件を満たしている必要があります。

要件
  • バケットは、ロードバランサーと同じリージョンに配置されている必要があります。バケットとロードバランサーは、異なるアカウントにより所有できます。

  • サポートされるサーバー側の暗号化オプションは、Amazon S3-managedキー (SSE-S3) のみです。詳細については、「Amazon S3-managed暗号化キー (SSE-S3)」を参照してください。

Amazon S3 コンソールを使用して S3 バケットを作成するには
  1. で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/

  2. [バケットを作成] を選択します。

  3. [バケットを作成] ページで、次の操作を実行します。

    1. [バケット名] にバケットの名前を入力します。この名前は、Amazon S3 内で既存の、すべてのバケット名の中で一意である必要があります。リージョンによっては、バケット名にその他の制限が設けられていることがあります。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの制約と制限」を参照してください。

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

    3. デフォルトの暗号化 ではAmazon S3-managedキー (SSE-S3) を選択します。

    4. [バケットを作成] を選択します。

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

S3 バケットには、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与するバケットポリシーが必要です。バケットポリシーは、バケットのアクセス許可を定義するためにアクセスポリシー言語で記述されたJSONステートメントのコレクションです。各ステートメントには 1 つのアクセス許可に関する情報が含まれ、一連のエレメントが使用されます。

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

使用可能なバケットポリシー

使用するバケットポリシーは、 AWS リージョン とゾーンのタイプによって異なります。以下の各拡張可能なセクションには、バケットポリシーとそのポリシーをいつ使用すべきかについての情報が含まれています。

このポリシーは、指定されたログ配信サービスに許可を付与します。このポリシーは、以下のリージョンのアベイラビリティーゾーンと Local Zones にあるロードバランサーに使用してください。

  • アジアパシフィック (ハイデラバード)

  • アジアパシフィック (マレーシア)

  • アジアパシフィック (メルボルン)

  • カナダ西部 (カルガリー)

  • 欧州 (スペイン)

  • 欧州 (チューリッヒ)

  • イスラエル (テルアビブ)

  • 中東 (UAE)

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "s3-bucket-arn" } ] }

置換 s3-bucket-arn アクセスログARNの場所の を使用します。ARN 指定する は、ステップ 3 でアクセスログを有効にするときにプレフィックスを含めるかどうかによって異なります。

プレフィックスARNを持つ S3 バケットの例

バケット名は amzn-s3-demo-logging-bucket、プレフィックスは logging-prefix、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/111122223333/*
プレフィックスARNのない S3 バケットの例

バケット名は amzn-s3-demo-logging-bucketで、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/111122223333/*
使用 NotPrincipal いつ Effect is Deny

Amazon S3 バケットポリシーが 値Effectで を使用しDeny、以下の例NotPrincipalに示すように が含まれている場合は、 logdelivery.elasticloadbalancing.amazonaws.comServiceリストに含まれていることを確認してください。

{ "Effect": "Deny", "NotPrincipal": { "Service": [ "logdelivery.elasticloadbalancing.amazonaws.com", "example.com" ] } },

このポリシーは、指定された Elastic Load Balancing アカウント ID に許可を付与します。このポリシーは、以下のリストに記載されている リージョンのアベイラビリティーゾーンまたは Local Zones にあるロードバランサーに使用してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::elb-account-id:root" }, "Action": "s3:PutObject", "Resource": "s3-bucket-arn" } ] }

置換 elb-account-id リージョンの Elastic Load Balancing AWS アカウント 用の の ID を使用して:

  • 米国東部 (バージニア北部) – 127311923021

  • 米国東部 (オハイオ) — 033677994240

  • 米国西部 (北カリフォルニア) – 027434742980

  • 米国西部 (オレゴン) — 797873946194

  • アフリカ (ケープタウン) - 098369216593

  • アジアパシフィック (香港) - 754344448648

  • アジアパシフィック (ジャカルタ) – 589379963580

  • アジアパシフィック (ムンバイ) – 718504428378

  • アジアパシフィック (大阪) – 383597477331

  • アジアパシフィック (ソウル) – 600734575887

  • アジアパシフィック (シンガポール) – 114774131450

  • アジアパシフィック (シドニー) — 783225319266

  • アジアパシフィック (東京) — 582318560864

  • カナダ (中部) – 985666609251

  • 欧州 (フランクフルト) – 054676820928

  • 欧州 (アイルランド) – 156460612806

  • 欧州 (ロンドン) – 652711504416

  • ヨーロッパ (ミラノ) - 635631232127

  • 欧州 (パリ) – 009996457667

  • 欧州 (ストックホルム) – 897822967062

  • 中東 (バーレーン) — 076674570225

  • 南米 (サンパウロ) – 507241528517

置換 s3-bucket-arn アクセスログARNの場所の を使用します。ARN 指定する は、ステップ 3 でアクセスログを有効にするときにプレフィックスを含めるかどうかによって異なります。

プレフィックスARNを持つ S3 バケットの例

バケット名は amzn-s3-demo-logging-bucket、プレフィックスは logging-prefix、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/111122223333/*
プレフィックスARNのない S3 バケットの例

バケット名は amzn-s3-demo-logging-bucketで、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/111122223333/*
使用 NotPrincipal いつ Effect is Deny

Amazon S3 バケットポリシーが 値Effectで を使用しDeny、以下の例NotPrincipalに示すように が含まれている場合は、 logdelivery.elasticloadbalancing.amazonaws.comServiceリストに含まれていることを確認してください。

{ "Effect": "Deny", "NotPrincipal": { "Service": [ "logdelivery.elasticloadbalancing.amazonaws.com", "example.com" ] } },

このポリシーは、指定された Elastic Load Balancing アカウント ID に許可を付与します。このポリシーは、アベイラビリティーゾーンのロードバランサーまたは以下のリストの AWS GovCloud (US) リージョンのローカルゾーンに使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws-us-gov:iam::elb-account-id:root" }, "Action": "s3:PutObject", "Resource": "s3-bucket-arn" } ] }

置換 elb-account-id AWS GovCloud (US) リージョンの Elastic Load Balancing AWS アカウント の の ID を持つ :

  • AWS GovCloud (米国西部) – 048591011584

  • AWS GovCloud (米国東部) – 190560391635

置換 s3-bucket-arn アクセスログARNの場所の を使用します。ARN 指定する は、ステップ 3 でアクセスログを有効にするときにプレフィックスを含めるかどうかによって異なります。

プレフィックスARNを持つ S3 バケットの例

バケット名は amzn-s3-demo-logging-bucket、プレフィックスは logging-prefix、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/111122223333/*
プレフィックスARNのない S3 バケットの例

バケット名は amzn-s3-demo-logging-bucketで、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/111122223333/*
使用 NotPrincipal いつ Effect is Deny

Amazon S3 バケットポリシーが 値Effectで を使用しDeny、以下の例NotPrincipalに示すように が含まれている場合は、 logdelivery.elasticloadbalancing.amazonaws.comServiceリストに含まれていることを確認してください。

{ "Effect": "Deny", "NotPrincipal": { "Service": [ "logdelivery.elasticloadbalancing.amazonaws.com", "example.com" ] } },

次のポリシーを使用して、指定されたログ配信サービスに許可を付与します。Outposts ゾーンのロードバランサーにはこのポリシーを使用します。

{ "Effect": "Allow", "Principal": { "Service": "logdelivery.elb.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "s3-bucket-arn, "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }

置換 s3-bucket-arn アクセスログARNの場所の を使用します。ARN 指定する は、ステップ 3 でアクセスログを有効にするときにプレフィックスを含めるかどうかによって異なります。

プレフィックスARNを持つ S3 バケットの例

バケット名は amzn-s3-demo-logging-bucket、プレフィックスは logging-prefix、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/111122223333/*
プレフィックスARNのない S3 バケットの例

バケット名は amzn-s3-demo-logging-bucketで、ロードバランサーを持つ AWS アカウントの ID は です111122223333

arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/111122223333/*
使用 NotPrincipal いつ Effect is Deny

Amazon S3 バケットポリシーが 値Effectで を使用しDeny、以下の例NotPrincipalに示すように が含まれている場合は、 logdelivery.elasticloadbalancing.amazonaws.comServiceリストに含まれていることを確認してください。

{ "Effect": "Deny", "NotPrincipal": { "Service": [ "logdelivery.elasticloadbalancing.amazonaws.com", "example.com" ] } },
Amazon S3 を使用してアクセスログのバケットポリシーをバケットにアタッチする
  1. で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/

  2. バケットの名前を選択して、その詳細ページを開きます。

  3. [許可] を選択してから、[バケットポリシー][編集] の順に選択します。

  4. 必要な許可を付与するようにバケットポリシーを更新します。

  5. [変更の保存] をクリックします。

ステップ 3: アクセスログを設定する

次の手順を使用して、リクエスト情報をキャプチャし、ログファイルを S3 バケットに配信するようにアクセスログを設定します。

要件

バケットはステップ 1 で説明した要件を満たしている必要があり、ステップ 2 で説明したようにバケットポリシーをアタッチする必要があります。プレフィックスを含める場合、文字列AWSLogs「」を含めることはできません。

コンソールを使用したロードバランサーのアクセスログの有効化
  1. で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. ロードバランサーの名前を選択して、その詳細ページを開きます。

  4. [属性] タブで、[編集] を選択します。

  5. [モニタリング][アクセスログ] をオンにします。

  6. S3 の場合はURI、ログファイルURIの S3 を入力します。URI 指定する は、プレフィックスを使用しているかどうかによって異なります。

    • URI プレフィックス: s3://amzn-s3-demo-logging-bucket/logging-prefix

    • URI プレフィックスなし: s3://amzn-s3-demo-logging-bucket

  7. [Save changes] (変更の保存) をクリックします。

を使用してアクセスログを有効にするには AWS CLI

modify-load-balancer-attributes コマンドを使用します。

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

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

ステップ 4: バケット許可を確認

アクセスログをロードバランサーで有効にすると、Elastic Load Balancing は S3 バケットを検証し、テストファイルを作成して、バケットポリシーが必要なアクセス権限を指定するようにします。Amazon S3 コンソールを使用して、テストファイルが作成されたことを確認できます。テストファイルは実際のアクセスログファイルではなく、レコード例は含まれていません。

Amazon S3 コンソールを使用してバケットにテストファイルが作成されたことを確認するには
  1. で Amazon S3 コンソールを開きますhttps://console.aws.amazon.com/s3/

  2. アクセスログ用に指定したバケットの名前を選択します。

  3. テストファイル「ELBAccessLogTestFile」に移動します。場所は、プレフィックスを使用しているかどうかによって異なります。

    • プレフィックスを持つ場所:amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/ELBAccessLogTestFile

    • プレフィックスのない場所:amzn-s3-demo-logging-bucket/AWSLogs/123456789012/ELBAccessLogTestFile

トラブルシューティング

アクセス拒否エラーが表示される場合は、以下の原因が考えられます。

  • バケットが、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与しない。そのリージョンに対して正しいバケットポリシーを使用していることを確認してください。アクセスログを有効にしたときに指定したのと同じバケット名がリソースARNで使用されていることを確認します。アクセスログを有効にしたときにプレフィックスを指定しなかった場合ARNは、リソースにプレフィックスが含まれていないことを確認します。

  • バケットが、サポートされていないサーバー側の暗号化オプションを使用している。バケットは Amazon S3-managedキー (SSE-S3) を使用する必要があります。