翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Application Load Balancer のアクセスログを有効にする
ロードバランサーのアクセスログを有効にする場合は、ロードバランサーがログを保存する S3 バケットの名前を指定する必要があります。このバケットは、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与するバケットポリシーが必要です。
ステップ 1: S3 バケットを作成する
アクセスログを有効にするときは、アクセスログの S3 バケットを指定する必要があります。既存のバケットを使用するか、アクセスログ専用のバケットを作成できます。バケットは、次の要件を満たしている必要があります。
要件
-
バケットは、ロードバランサーと同じリージョンに配置されている必要があります。バケットとロードバランサーは、異なるアカウントにより所有できます。
-
サポートされている唯一のサーバー側の暗号化オプションは、Amazon S3 マネージドキー (SSE-S3) です。詳細については、 「 Amazon S3 マネージド暗号化キー (SSE-S3)」を参照してください。
Amazon S3 コンソールを使用して S3 バケットを作成するには
-
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
[バケットを作成] を選択します。
-
[バケットを作成] ページで、次の操作を実行します。
-
[バケット名] にバケットの名前を入力します。この名前は、Amazon S3 内で既存の、すべてのバケット名の中で一意である必要があります。リージョンによっては、バケット名にその他の制限が設けられていることがあります。詳細については、Amazon S3 ユーザーガイドの「バケットの制約と制限」を参照してください。
-
[AWS リージョン] で、ロードバランサーを作成したリージョンを選択します。
-
[デフォルトの暗号化] には、[Amazon S3 マネージドキー (SSE-S3)] を選択します。
-
[バケットを作成] を選択します。
-
ステップ 2: S3 バケットにポリシーをアタッチする
S3 バケットには、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与するバケットポリシーが必要です。バケットポリシーは、バケットのアクセス許可を定義するためにアクセスポリシー言語で記述された JSON ステートメントのコレクションです。各ステートメントには 1 つのアクセス許可に関する情報が含まれ、一連のエレメントが使用されます。
既にポリシーがアタッチされている既存のバケットを使用している場合は、Elastic Load Balancing アクセスログのステートメントをポリシーに追加できます。この場合、結果として作成されるアクセス権限のセットが、アクセスログのバケットへのアクセスを必要とするユーザーに対して適切であることを確認するために、このセットを評価することをお勧めします。
このポリシーは、ログ配信サービスにアクセス許可を付与します。
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/123456789012
/*" } ] }
にはResource
、ポリシー例に示す形式を使用して、アクセスログの場所の ARN を入力します。S3 バケット ARN のリソースパスには、ロードバランサーを持つアカウントのアカウント ID を必ず含めてください。これにより、指定されたアカウントのロードバランサーのみが S3 バケットにアクセスログを書き込むことができます。
指定する ARN は、ステップ 3 でアクセスログを有効にするときにプレフィックスを含めるかどうかによって変わってきます。
プレフィックスを含む S3 バケット ARN の例
S3 バケット名は amzn-s3-demo-logging-bucket で、プレフィックスは ですlogging-prefix。
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
AWS GovCloud (US) – 次の例では、 の ARN 構文を使用します AWS GovCloud (US) Regions。
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
プレフィックスを持たない S3 バケット ARN の例
S3 バケット名は ですamzn-s3-demo-logging-bucket。S3 バケット ARN にプレフィックス部分はありません。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
AWS GovCloud (US) – 次の例では、 の ARN 構文を使用します AWS GovCloud (US) Regions。
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
以前は、2022 年 8 月より前に利用可能なリージョンでは、リージョンに固有の Elastic Load Balancing アカウントにアクセス許可を付与するポリシーが必要でした。このレガシーポリシーは引き続きサポートされていますが、上記の新しいポリシーに置き換えることをお勧めします。ここには示されていないレガシーポリシーを引き続き使用する場合は、使用できます。
参考までに、レガシーポリシーの Principal
で指定する Elastic Load Balancing アカウントの IDs を次に示します。このリストにないリージョンは、レガシーポリシーをサポートしていないことに注意してください。
-
米国東部 (バージニア北部) – 127311923021
-
米国東部 (オハイオ) — 033677994240
-
米国西部 (北カリフォルニア) – 027434742980
-
米国西部 (オレゴン) — 797873946194
-
アフリカ (ケープタウン) - 098369216593
-
アジアパシフィック (香港) - 754344448648
-
アジアパシフィック (ジャカルタ) – 589379963580
-
アジアパシフィック (ムンバイ) – 718504428378
-
アジアパシフィック (大阪) – 383597477331
-
アジアパシフィック (ソウル) – 600734575887
-
アジアパシフィック (シンガポール) – 114774131450
-
アジアパシフィック (シドニー) — 783225319266
-
アジアパシフィック (東京) — 582318560864
-
カナダ (中部) – 985666609251
-
欧州 (フランクフルト) – 054676820928
-
欧州 (アイルランド) – 156460612806
-
欧州 (ロンドン) – 652711504416
-
ヨーロッパ (ミラノ) - 635631232127
-
欧州 (パリ) – 009996457667
-
欧州 (ストックホルム) – 897822967062
-
中東 (バーレーン) — 076674570225
-
南米 (サンパウロ) – 507241528517
-
AWS GovCloud (米国東部) – 190560391635
-
AWS GovCloud (米国西部) – 048591011584
次のポリシーを使用して、指定されたログ配信サービスに許可を付与します。Outposts ゾーンのロードバランサーにはこのポリシーを使用します。
{ "Effect": "Allow", "Principal": { "Service": "logdelivery.elb.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/123456789012
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } } }
にはResource
、ポリシー例に示す形式を使用して、アクセスログの場所の ARN を入力します。S3 バケット ARN のリソースパスには、ロードバランサーを持つアカウントのアカウント ID を必ず含めてください。これにより、指定されたアカウントのロードバランサーのみが S3 バケットにアクセスログを書き込むことができます。
指定する S3 バケット ARN は、ステップ 3 でアクセスログを有効にするときにプレフィックスを含めるかどうかによって異なります。
プレフィックスを含む S3 バケット ARN の例
S3 バケット名は amzn-s3-demo-logging-bucket で、プレフィックスは ですlogging-prefix。
arn:aws:s3:::amzn-s3-demo-logging-bucket/logging-prefix/AWSLogs/123456789012/*
プレフィックスを持たない S3 バケット ARN の例
S3 バケット名は ですamzn-s3-demo-logging-bucket。S3 バケット ARN にプレフィックス部分はありません。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
-
S3 バケット ARN のアカウント ID 部分を含む完全なリソースパスを使用します。S3 バケット ARN のアカウント ID 部分でワイルドカード (*) を使用しないでください。
"Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/123456789012
/*" -
を使用して
aws:SourceArn
、指定されたリージョンとアカウントのロードバランサーのみがバケットを使用できるようにします。"Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:elasticloadbalancing:
region
:123456789012
:loadbalancer/*" } } -
aws:SourceOrgId
を と共に使用aws:SourceArn
して、指定された組織のロードバランサーのみがバケットを使用できるようにします。"Condition": { "StringEquals": { "aws:SourceOrgId": "
o-1234567890
" }, "ArnLike": { "aws:SourceArn": "arn:aws:elasticloadbalancing:*:*:loadbalancer/*" } } -
明示的に許可されているもの以外のサービスプリンシパルへのアクセスを禁止する
Deny
ステートメントがある場合は、許可されたサービスプリンシパルのリストlogdelivery.elasticloadbalancing.amazonaws.com
に を追加してください。たとえば、aws:PrincipalServiceNamesList
条件を使用した場合は、logdelivery.elasticloadbalancing.amazonaws.com
次のように を追加します。{ "Effect": "Deny", "Principal": "*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceNamesList": [ "logdelivery.elasticloadbalancing.amazonaws.com", "
service
.amazonaws.com" ] } } }NotPrincipal
要素を使用した場合は、logdelivery.elasticloadbalancing.amazonaws.com
次のように を追加します。NotPrincipal
要素を使用する代わりに、aws:PrincipalServiceName
またはaws:PrincipalServiceNamesList
条件キーを使用してサービスプリンシパルを明示的に許可することをお勧めします。詳細については、「NotPrincipal」を参照してください。{ "Effect": "Deny", "NotPrincipal": { "Service": [ "logdelivery.elasticloadbalancing.amazonaws.com", "
service
.amazonaws.com" ] } },
バケットポリシーを作成したら、Amazon S3 コンソールや AWS CLI コマンドなどの Amazon S3 インターフェイスを使用して、バケットポリシーを S3 バケットにアタッチします。
ステップ 3: アクセスログを設定する
以下の手順を使って、リクエスト情報を取り込み S3 バケットにログファイルを配信するようにアクセスログを設定します。
要件
バケットはステップ 1 で説明した要件を満たしている必要があり、ステップ 2 で説明したようにバケットポリシーをアタッチする必要があります。プレフィックスを指定する場合は、文字列「AWSLogs」を含めることはできません。
アクセスログの S3 バケットを管理するには
アクセスログ用に設定したバケットを削除する前に、必ずアクセスログを無効にします。これを行わないと、自分が所有していない AWS アカウント に、同じ名前で必要なバケットポリシーを持つ新しいバケットが作成された場合、Elastic Load Balancing がロードバランサーのアクセスログを、その新しいバケットに書き込んでしまう可能性があります。
ステップ 4: バケット許可を確認
アクセスログをロードバランサーで有効にすると、Elastic Load Balancing は S3 バケットを検証し、テストファイルを作成して、バケットポリシーが必要なアクセス権限を指定するようにします。Amazon S3 コンソールを使用して、テストファイルが作成されたことを確認できます。テストファイルは実際のアクセスログファイルではなく、レコード例は含まれていません。
Amazon S3 コンソールを使用して、バケットにテストファイルが作成されたことを確認するには
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
アクセスログ用に指定したバケットの名前を選択します。
-
テストファイル「
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 マネージドキー (SSE-S3) を使用する必要があります。