

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

# Classic Load Balancer のアクセスログの有効化
<a name="enable-access-logs"></a>

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

**Topics**
+ [ステップ 1: S3 バケットを作成する](#create-s3-bucket)
+ [ステップ 2: S3 バケットにポリシーをアタッチする](#attach-bucket-policy)
+ [ステップ 3: アクセスログを設定する](#configure-access-logs)
+ [ステップ 4: バケット許可を確認](#verify-access-logs)
+ [トラブルシューティング](#enable-access-logs-troubleshooting)

## ステップ 1: S3 バケットを作成する
<a name="create-s3-bucket"></a>

アクセスログの作成を有効にするときは、アクセスログファイルの S3 バケットを指定する必要があります。バケットは、次の要件を満たしている必要があります。

**要件**
+ バケットは、ロードバランサーと同じリージョンに配置されている必要があります。バケットとロードバランサーは、異なるアカウントにより所有できます。
+ サポートされている唯一のサーバー側の暗号化オプションは、Amazon S3 マネージドキー (SSE-S3) です。詳細については、「[Amazon S3 マネージド暗号化キー (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)」を参照してください。

**Amazon S3 コンソールを使用して S3 バケットを作成するには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

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

   1. **[バケット名]** にバケットの名前を入力します。この名前は、Amazon S3 内で既存の、すべてのバケット名の中で一意である必要があります。リージョンによっては、バケット名にその他の制限が設けられていることがあります。詳細については、「*Amazon S3 ユーザーガイド*」の「[バケットのクォータ、制約、制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)」を参照してください。

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

   1. **[デフォルトの暗号化]** には、**[Amazon S3 マネージドキー (SSE-S3)]** を選択します。

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

## ステップ 2: S3 バケットにポリシーをアタッチする
<a name="attach-bucket-policy"></a>

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

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

### バケットポリシー
<a name="bucket-policy-logdelivery"></a>

このポリシーは、ログ配信サービスにアクセス許可を付与します。

****  

```
{
  "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](#enable-access-logs) でアクセスログを有効にするときにプレフィックスを含めるかどうかによって変わってきます。

**プレフィックスを含む 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)] 次の例では、 AWS GovCloud (US) Regionsの ARN 構文を使用します。

```
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)] 次の例では、 AWS GovCloud (US) Regionsの ARN 構文を使用します。

```
arn:aws-us-gov:s3:::amzn-s3-demo-logging-bucket/AWSLogs/123456789012/*
```

### レガシーバケットポリシー
<a name="legacy-bucket-policy"></a>

以前は、2022 年 8 月より前に利用可能であったリージョンでは、リージョンに固有の Elastic Load Balancing アカウントにアクセス許可を付与するポリシーが必要でした。このレガシーポリシーは引き続きサポートされていますが、上記の新しいポリシーに置き換えることをお勧めします。レガシーバケットポリシー (ここには示されていません) を引き続き使用してもかまいません。

参考までに、`Principal` で指定する 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
+ AWS GovCloud (米国東部) – 190560391635
+ AWS GovCloud (米国西部) – 048591011584

### セキュリティのベストプラクティス
<a name="bucket-policy-security-best-practices"></a>

セキュリティを強化するには、正確な S3 バケット ARN を使用します。
+ S3 バケット ARN だけでなく、完全なリソースパスを使用します。
+ S3 バケット ARN のアカウント ID 部分を含めます。
+ S3 バケット ARN のアカウント ID 部分にワイルドカード (\*) を使用しないでください。

バケットポリシーを作成したら、Amazon S3 コンソールや AWS CLI コマンドなどの Amazon S3 インターフェイスを使用して、バケットポリシーを S3 バケットにアタッチします。

**コンソールを使用してバケットポリシーをバケットにアタッチするには**

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

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

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

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

**を使用して S3 バケットにバケットポリシーをアタッチするには AWS CLI**  
[put-bucket-policy](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-policy.html) コマンドを使用します。この例では、バケットポリシーは指定された .json ファイルに保存されます。

```
aws s3api put-bucket-policy \
    --bucket {{amzn-s3-demo-bucket}} \
    --policy file://{{access-log-policy.json}}
```

## ステップ 3: アクセスログを設定する
<a name="configure-access-logs"></a>

以下の手順を使って、リクエスト情報を取り込み S3 バケットにログファイルを配信するようにアクセスログを設定します。

**要件**  
バケットは[ステップ 1](#create-s3-bucket) で説明した要件を満たしている必要があり、[ステップ 2](#attach-bucket-policy) で説明したようにバケットポリシーをアタッチする必要があります。プレフィックスを指定する場合、「AWSLogs」を含めることはできません。

**コンソールを使用したロードバランサーのアクセスログを設定するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

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

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

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

1. **[ロードバランサー属性の編集]** ページの **[モニタリング]** セクションで、次の操作を実行します。

   1. **[アクセスログ]** を有効にします。

   1. **[S3 ロケーション]** には、ログファイルの S3 URI を入力します。指定する URI は、プレフィックスを使用しているかどうかによって異なります。
      + プレフィックスが付いた URI: `s3://{{amzn-s3-demo-logging-bucket}}/{{logging-prefix}}`
      + プレフィックスなしの URI: `s3://{{amzn-s3-demo-logging-bucket}}`

   1. **[ロギング間隔]** は `60 minutes - default` のままにしておきます。

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

**を使用してロードバランサーのアクセスログを設定するには AWS CLI**  
まず、Elastic Load Balancing が 60 分ごとにログをキャプチャし、ログ用に作成した S3 バケットにそれを配信できるようにする .json ファイルを作成します。

```
{ 
  "AccessLog": {
    "Enabled": true,
    "S3BucketName": "{{amzn-s3-demo-logging-bucket}}",
    "EmitInterval": 60,
    "S3BucketPrefix": "{{my-app}}"
  }
}
```

次に、以下のように [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elb/modify-load-balancer-attributes.html) コマンドでこの .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": "amzn-s3-demo-logging-bucket",
            "S3BucketPrefix": "my-app"
        }
    },
    "LoadBalancerName": "my-loadbalancer"
}
```

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

## ステップ 4: バケット許可を確認
<a name="verify-access-logs"></a>

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

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

1. Amazon S3 コンソール ([https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)) を開きます。

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

1. テストファイル「`ELBAccessLogTestFile`」に移動します。場所は、プレフィックスを使用しているかどうかによって異なります。
   + プレフィックスがある場合の場所：{{amzn-s3-demo-loadbalancer-logs}}/{{logging-prefix}}/AWSLogs/{{123456789012}}/ELBAccessLogTestFile
   + プレフィックスのない場合の場所：{{amzn-s3-demo-loadbalancer-logs}}/AWSLogs/{{123456789012}}/ELBAccessLogTestFile

## トラブルシューティング
<a name="enable-access-logs-troubleshooting"></a>

**バケットへのアクセスが拒否されました: {{bucket-name}}。S3 バケットの許可を確認してください**

このエラーが表示される場合は、以下の原因が考えられます。
+ バケットが、バケットにアクセスログを書き込む許可を Elastic Load Balancing に付与しない。そのリージョンに対して正しいバケットポリシーを使用していることを確認してください。リソース ARN で、アクセスログを有効にしたときに指定したのと同じバケット名が使用されていることを確認します。アクセスログを有効にしたときにプレフィックスを指定しなかった場合は、リソース ARN にプレフィックスが含まれていないことを確認してください。
+ バケットが、サポートされていないサーバー側の暗号化オプションを使用している。バケットは、Amazon S3 マネージドキー (SSE-S3) を使用する必要があります。