翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 アクセスログのステートメントをポリシーに追加できます。この場合、結果として作成されるアクセス権限のセットが、アクセスログのバケットへのアクセスを必要とするユーザーに対して適切であることを確認するために、このセットを評価することをお勧めします。
使用可能なバケットポリシー
使用するバケットポリシーは、 AWS リージョン とゾーンのタイプによって異なります。以下の各展開可能なセクションには、基本的なバケットポリシーとポリシーの説明が含まれています。セキュリティを強化するには、折りたたみ可能なセクションの下の提案を参照してください。
このポリシーは、指定されたログ配信サービスに許可を付与します。このポリシーは、次のリージョンのロードバランサーに使用します。
アジアパシフィック (ハイデラバード)
アジアパシフィック (マレーシア)
アジアパシフィック (メルボルン)
アジアパシフィック (台北)
アジアパシフィック (タイ)
カナダ西部 (カルガリー)
欧州 (スペイン)
欧州 (チューリッヒ)
イスラエル (テルアビブ)
中東 (アラブ首長国連邦)
メキシコ (中部)
には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/*
プレフィックスを持たない S3 バケット ARN の例
S3 バケット名は ですamzn-s3-demo-logging-bucket。S3 バケット ARN にプレフィックス部分はありません。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
このポリシーは、指定された Elastic Load Balancing アカウント ID に許可を付与します。このポリシーは、以下に示すリージョンのロードバランサーに使用します。
の場合Principal
、elb-account-id
をロードバランサーのリージョンの Elastic Load Balancing アカウントの ID に置き換えます。
-
米国東部 (バージニア北部) – 127311923021
-
米国東部 (オハイオ) — 033677994240
-
米国西部 (北カリフォルニア) – 027434742980
-
米国西部 (オレゴン) — 797873946194
-
アフリカ (ケープタウン) - 098369216593
-
アジアパシフィック (香港) - 754344448648
-
アジアパシフィック (ジャカルタ) – 589379963580
-
アジアパシフィック (ムンバイ) – 718504428378
-
アジアパシフィック (大阪) – 383597477331
-
アジアパシフィック (ソウル) – 600734575887
-
アジアパシフィック (シンガポール) – 114774131450
-
アジアパシフィック (シドニー) — 783225319266
-
アジアパシフィック (東京) — 582318560864
-
カナダ (中部) – 985666609251
-
欧州 (フランクフルト) – 054676820928
-
欧州 (アイルランド) – 156460612806
-
欧州 (ロンドン) – 652711504416
-
ヨーロッパ (ミラノ) - 635631232127
-
欧州 (パリ) – 009996457667
-
欧州 (ストックホルム) – 897822967062
-
中東 (バーレーン) — 076674570225
-
南米 (サンパウロ) – 507241528517
には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/*
プレフィックスを持たない S3 バケット ARN の例
S3 バケット名は ですamzn-s3-demo-logging-bucket。S3 バケット ARN にプレフィックス部分はありません。
arn:aws:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
このポリシーは、指定された Elastic Load Balancing アカウント ID に許可を付与します。このポリシーは、 AWS GovCloud (US) リージョンのロードバランサーに使用します。
の場合Principal
、elb-account-id
をロードバランサーのリージョンの Elastic Load Balancing アカウントの ID に置き換えます。
-
AWS GovCloud (米国西部) – 048591011584
-
AWS GovCloud (米国東部) – 190560391635
にはResource
、ポリシー例に示す形式を使用して、アクセスログの場所の ARN を入力します。S3 バケット ARN のリソースパスには、ロードバランサーを持つアカウントのアカウント ID を必ず含めてください。これにより、指定されたアカウントのロードバランサーのみが S3 バケットにアクセスログを書き込むことができます。
指定する S3 バケット ARN は、アクセスログリンクステップ 3 を有効にするときにプレフィックスを含めるかどうかによって異なります。
プレフィックスを含む S3 バケット ARN の例
S3 バケット名は amzn-s3-demo-logging-bucket で、プレフィックスは ですlogging-prefix。
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-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
次のポリシーを使用して、指定されたログ配信サービスに許可を付与します。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 バケットのセキュリティを強化するには、次の提案を使用します。
バケットポリシーを確認する
-
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 を使用してアクセスログのバケットポリシーをバケットにアタッチする
Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
バケットの名前を選択して、その詳細ページを開きます。
-
[許可] を選択してから、[バケットポリシー]、[編集] の順に選択します。
-
必要な許可を付与するようにバケットポリシーを更新します。
-
[変更の保存] をクリックします。
ステップ 3: アクセスログを設定する
以下の手順を使って、リクエスト情報を取り込み S3 バケットにログファイルを配信するようにアクセスログを設定します。
要件
バケットはステップ 1 で説明した要件を満たしている必要があり、ステップ 2 で説明したようにバケットポリシーをアタッチする必要があります。プレフィックスを指定する場合は、文字列「AWSLogs」を含めることはできません。
コンソールを使用したロードバランサーのアクセスログの有効化
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[ロードバランサー] を選択します。
-
ロードバランサーの名前を選択して、その詳細ページを開きます。
-
[属性] タブで、[編集] を選択します。
-
[モニタリング] で [アクセスログ] をオンにします。
-
[S3 ロケーション] には、ログファイルの S3 URI を入力します。指定する URI は、プレフィックスを使用しているかどうかによって異なります。
-
プレフィックスがある URI: s3://
amzn-s3-demo-logging-bucket
/logging-prefix
-
プレフィックスがない URI:: s3://
amzn-s3-demo-logging-bucket
-
-
[Save changes] (変更の保存) をクリックします。
を使用してアクセスログを有効にするには AWS CLI
modify-load-balancer-attributes コマンドを使用します。
アクセスログの 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) を使用する必要があります。