

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

# Application Load Balancer の接続ログを有効にする
<a name="enable-connection-logging"></a>

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

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

## ステップ 1: S3 バケットを作成する
<a name="connection-log-create-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-connection"></a>

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

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

### バケットポリシー
<a name="bucket-policy-logdelivery-connection"></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-logging.md#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

### Outposts ゾーン
<a name="bucket-policy-outposts"></a>

次のポリシーを使用して、指定されたログ配信サービスに許可を付与します。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 バケットにアクセスログを書き込むことができます。

指定する ARN は、[ステップ 3](enable-access-logging.md#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/*
```

**プレフィックスを持たない S3 バケット ARN の例**  
S3 バケット名は amzn-s3-demo-logging-bucket です。S3 バケット ARN にプレフィックス部分はありません。

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

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

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

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

------
#### [ Console ]

**バケットポリシーを S3 バケットにアタッチするには**

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

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

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

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

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

------
#### [ AWS CLI ]

**バケットポリシーを S3 バケットにアタッチするには**  
[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="enable-connection-logs"></a>

以下の手順を使用して、S3 バケットのログファイルを、収集して配信するように、接続ログを設定します。

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

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

------
#### [ Console ]

**接続ログを有効にするには**

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

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

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

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

1. **[モニタリング]** で **[接続ログ]** をオンにします。

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

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

------
#### [ AWS CLI ]

**接続ログを有効にするには**  
関連する属性を指定して [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) コマンドを使用します。

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes \
        Key=connection_logs.s3.enabled,Value=true \
        Key=connection_logs.s3.bucket,Value=amzn-s3-demo-logging-bucket \
        Key=connection_logs.s3.prefix,Value=logging-prefix
```

------
#### [ CloudFormation ]

**接続ログを有効にするには**  
[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html) リソースを更新して、関連する属性を含めます。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "connection_logs.s3.enabled"
          Value: "true"
        - Key: "connection_logs.s3.bucket"
          Value: "amzn-s3-demo-logging-bucket"
        - Key: "connection_logs.s3.prefix"
          Value: "logging-prefix"
```

------

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

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

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

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

1. 接続ログ用に指定したバケットの名前を選択します。

1. テストファイル「`ELBConnectionLogTestFile`」に移動します。場所は、プレフィックスを使用しているかどうかによって異なります。
   + プレフィックス付きロケーション: *amzn-s3-demo-logging-bucket*/*prefix*/AWSLogs/*123456789012*/ELBConnectionLogTestFile
   + プレフィックスなしのロケーション: *amzn-s3-demo-logging-bucket*/AWSLogs/*123456789012*/ELBConnectionLogTestFile

## トラブルシューティング
<a name="bucket-permissions-troubleshooting-connection"></a>

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